WEB개발

자동오토포스팅 네이버버전 소스

스쿠터로세계일주 2012. 10. 30. 18:03

네이버는 글쓰기 api를 제공하지만, 그건 외부툴만을 이용하는 것일뿐 그걸 수정해서 웹상에서 스케줄로 돌린다든지, 하는 방법은 지원되지 않는다.

 

그래도 관련해서 찾아보던중...글쓰기 api의 구동원리를 보니 metaWeblog 의 api를 사용하는 것으로 확인이 되었다. 관련 레퍼런스를 찾아보니! 역시! 있군하...ㅎㅎ

 

대부분 php버전으로 돌아다니는데 울 회사는 asp를 사용하니 asp 버전으로 사용해서 적용해봤다.

 

누가 만들어놓은것을 수정한것임.. 원본 : http://jungcw.tistory.com/250

 

아래 소스를 확인.

 

xmlrpc.asp

 

<!--#include file="xmlrpc.asp" -->
<%
'아래 함수가 포스팅관련 글 입력하는 함수임_____윗부분은 include로 넣어줄 xmlrpc 모듈임

on error resume next

'포스팅을 처리할 방식을 지정

Dim postmode : postmode = trim(request("postmode"))
If postmode = "" Then postmode = "newPost"

' 포스트쓰기
' metaWeblog.newPost (blogid, username, password, struct, publish) returns string
' 포스트수정
' metaWeblog.editPost (postid, username, password, struct, publish) returns true
' 포스트가져오기
' metaWeblog.getPost (postid, username, password) returns struct

' metaWeblog.newMediaObject (blogid, username, password, struct) returns struct
' 카테고리목록
' metaWeblog.getCategories (blogid, username, password) returns struct
' 최근포스트
' metaWeblog.getRecentPosts (blogid, username, password, numberOfPosts) returns array of structs

Dim err_number : err_number = 0

'블로그에 접속할 아이디
Dim username : username = "네이버아이디"

'블로그 인증키(네이버>관리>글쓰기api설정>api연결정보 : api 연결암호값)
Dim apikey : apikey = "네이버키"

'데이터통신을 진행할 url(네이버>관리>글쓰기api설정>api연결정보 : api연결URL)
Dim api_url : api_url = "https://api.blog.naver.com/xmlrpc"

select Case postmode
 Case "newPost"
  Response.write("<pre>" & Replace(Fn_BlogPost_newPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
 Case "editPost"
  Response.write("<pre>" & Replace(Fn_BlogPost_editPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
 Case "getPost"
  Response.write("<pre>" & Replace(Fn_BlogPost_getPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
 Case "newMediaObject"
  Response.write("<pre>" & Replace(Fn_BlogPost_newMediaObject(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
 Case "getCategories"
  Response.write("<pre>" & Replace(Fn_BlogPost_getCategories(username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
 Case "getRecentPosts"
  Response.write("<pre>" & Replace(Fn_BlogPost_getRecentPosts(username,apikey,api_url,5), "<", "<", 1, -1, 1) & "</pre>")
End Select

 

'포스트등록함수
Function Fn_BlogPost_newPost(categories,title,description,username,apikey,api_url)

' categories  : 포스트등록할 카테고리선택 (ex : 영화, 스포츠...)
' title  : 포스트제목
' description : 포스트내용

 '메타블로그의 포스팅 관련 메소드임을 선언
 Dim methodName : methodName = "metaWeblog.newPost" 

 '통신을 통해 던져줄 값을 배열로 저장해서 던져줌.

 Dim paramList(4)
 paramList(0) = ""   '사용 않함
 paramList(1) = username  '로그인 아이디
 paramList(2) = apikey  'apikey

 set dict = Server.createObject("Scripting.Dictionary")
 dict.add "categories", categories '카테고리
 dict.add "description", description '내용
 dict.add "title", title    '제목

 set paramList(3) = dict
 
 set dict = nothing

 paramList(4) = true   '글 공개|비공개

 Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
 
 err_number = err.number

 if err.number <>0 then
'  response.write("Error number: " & err.number & "<P>")
'  response.write("Error description: " & err.description & "<P>")    Response.end
 else
  response.write("등록된 글 번호 : " & myresp)
 end If
 
 Fn_BlogPost = serverResponseText

End Function


'카테고리목록 가져오기 함수
Function Fn_BlogPost_getCategories(username,apikey,api_url)

 '메타블로그의 포스팅 관련 메소드임을 선언
 Dim methodName : methodName = "metaWeblog.getCategories" 

 '통신을 통해 던져줄 값을 배열로 저장해서 던져줌.

 Dim paramList(4)
 paramList(0) = ""    '사용 않함
 paramList(1) = CStr(username) '로그인 아이디
 paramList(2) = CStr(apikey)  'apikey

 Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
 
 err_number = err.number

 if err.number <>0 then
'  response.write("Error number: " & err.number & "<P>")
'  response.write("Error description: " & err.description & "<P>")  

  Response.end
 end If
 
 Fn_BlogPost_getCategories = serverResponseText

End Function

'최근포스트 가져오기 함수
Function Fn_BlogPost_getRecentPosts(username,apikey,api_url,cnt)

 '메타블로그의 포스팅 관련 메소드임을 선언
 Dim methodName : methodName = "metaWeblog.getRecentPosts" 

 '통신을 통해 던져줄 값을 배열로 저장해서 던져줌.

 Dim paramList(4)
 paramList(0) = ""    '사용 않함
 paramList(1) = CStr(username) '로그인 아이디
 paramList(2) = CStr(apikey)  'apikey
 paramList(3) = cnt                  '최근출력할갯수 

 Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
 
 err_number = err.number

 if err.number <>0 then
'  response.write("Error number: " & CStr(err.number) & "<P>")
'  response.write("Error description: " & err.description & "<P>")  

  Response.end
 end If
 
 Fn_BlogPost_getRecentPosts = serverResponseText

End Function

%>

 

위 소스에서는 등록, 최근포스트, 카테고리 이렇게 3가지만 구현해놓았는데,

필요한 모드는 위와같은 방식으로 구현하면 된다.

 

단..오토포스팅은..편리하긴 하지만, 포스팅의 질을 떨어뜨릴 수 있으니..너무 남용을 하지는 말자!!!

xmlrpc.asp
0.02MB