2010. 7. 30. 11:39
ETC
네이버 블로그에 글쓰기 API 가 열렸는데 MetaWeblog API 라는 Xmlrpc 규격으로 사용이 됩니다.
MetaWeblog API 를 사용하시면 네이버 블로그 뿐만 아니라 유명한 블로그 시스템에도 글을 올릴 수 있으니 참고하세요.
1. groovy 로 xmlrpc 사용하기
기본 라이브러리에는 포함 되어 있지 않고 jar 파일을 따로 다운 받아야 합니다.
여기 가시면 간단한 xmlrpc 예제를 보실 수 있구여
실제 라이브러리는
http://repository.codehaus.org/org/codehaus/groovy/groovy-xmlrpc/0.7/groovy-xmlrpc-0.7.jar
여기서 받으시면 됩니다.
각자 클래스 패스가 잡히는 곳에 넣어두시면 되요
2. MetaWeblog기능
블로그에 글쓰기를 할 수 있는 표준 xmlrpc 규격이구여 이용할 수 있는 api 는 다음과 같습니다.
글쓰기 : metaWeblog.newPost(blogid, username, password, struct, publish) return string
수정 : metaWeblog.editPost(postid, username, password, struct, publish) return true
읽기 : metaWeblog.getPost(postid, username, password) return struct
파일 업로드 : metaWeblog.newMediaObject(blogid, username, password, struct) return struct
카테고리 : metaWeblog.getCategories (blogid, username, password) return array of structs
최근글 : metaWeblog.getRecentPosts(blogid, username, password, numberOfPosts) return array of structs
정도의 기본 api 가 제공이 되고 있습니다.
자세한 레퍼런스 참조 : http://msdn.microsoft.com/en-us/library/bb259697.aspx
3. 네이버에서 글쓰기 API 허용하기
이쪽 링크 가시면 잘 설명되어 있습니다.
4. Groovy 에서 MetaWeblog 사용하기
우선 아래와 같은 간단한 클래스를 하나 만들어 둡니다.
import groovy.net.xmlrpc.XMLRPCServerProxy as Proxy
class MetaBlogProxy extends Proxy {
MetaBlogProxy(url) {
super (url)
}
Object invokeMethod(String methodname, args) {
super.invokeMethod ('metaWeblog.' + methodname, args)
}
}
api 를 사용할 때 모든 기능들이 metaWeblog. 이라는 네임스페이스가 붙기 때문에 간단하게 사용할 수 있도록 invokeMethod() 를 재정의 했습니다. (Groovy in Action 에 있는 내용 참고)
5. 네이버 블로그에서 카테고리 목록 가지고 오기
def blog = new MetaBlogProxy('https://api.blog.naver.com/xmlrpc')
우선 xmlrpc를 사용할 주소를 지정합니다.
생성된 객체를 가지고 metaWeblog.getCategories() 메소드를 실행합니다.
(metaWeblog. 는 기본적으로 추가되게 되어있으므로 실제 메소드 실행하실 때 안적어주셔도 됩니다. )
자 이제 한번 목록을 얻어와볼까요?
def categories = blog.getCategories(blogid, userid, password)
간단하시죠. 프로토콜은 xmlrpc 이긴 한데 xml 을 다 작성하실 필요없이 groovy 에서 모두 해결해줍니다.
그냥 메소드 사용하듯이 하시면 됩니다.
매개변수를 간단히 설명드리면
blogid : 자신의 네이버 블로그 아이디
userid : 자신의 네이버 아이디
password : [ 3. 네이버에서 글쓰기 API 허용하기 ] 에서 미리 발급된 비밀번호
자 이렇게 넣으면 아래와 같은 형태로 리스트가 나옵니다.
[ [ title : '카테고리 제목', htmlUrl : '카테고리 링크', description : '설명'], ... ]
6. 최신 글 가지고 오기
def articles = blog.getRecentPosts(blogid, userid, password, 10)
형식의 category 가지고 오는 방식이랑 비슷하고 메소드 이름이랑 마지막에 가지고 올 개수 지정하는 부분만 틀립니다.
리스트의 각 글을 가지고 있는 객체들은 아래와 같은 속성을 가집니다.
title
description
tags
pubDate
pubDate 의 경우 자바의 Date 객체 그대로를 전달해주기 때문에 groovy 에서 확장된 메소드가 사용가능합니다.
pubDate.format('yyyy-mm-dd') 로 바로 원하는 문자열로 바꿔주시면 됩니다.
guid
postid
author
aticles.each { obj ->
println obj.title
}
이런식으로 리스트 출력하시면 됩니다.
쉽죠. ^^;; 이걸로 하다보면 블로그를 네이버에 입력하는 시스템 기반으로 겁데기만 제가 만들어도 될 것 같네요.
7. 네이버에 글을 써 볼까요?
def postid = blog.getRecentPosts(blogid, userid, password, [
title : request.uploads.title.value,
description : request.uploads.content.value,
categories : ['프로그래밍'],
tags : 'blogapi'
], true)
형태로 보내시면 됩니다.
postid 가 리턴이 되어서 블로그 내용을 조회 할 수 있습니다.
8. 블로그 포스트를 조회해볼까요?
def post = blog.getPost(postid, userid, password)
조회를 하면 이런 내용이 나옵니다.
[
tags:,
guid:http://blog.naver.com/cyberuls/110080422720,
postid:110080422720,
pubDate:Wed Feb 10 14:54:00 UTC 2010,
author:cyberuls@naver.com,
title:네이버에 지도를 넣으면 ? ,
username:cyberuls,
permaLink:http://blog.naver.com/cyberuls/110080422720,
description: ,link:http://blog.naver.com/cyberuls,
dateCreated:Wed Feb 10 14:54:00 UTC 2010,
categories:[]
]
다시 뿌려주시면 됩니다. ^^