블로그 이미지
Sunny's

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

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 가 제공이 되고 있습니다. 



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:[]
]

posted by Sunny's