Search results for '블로그API'

BlogAPI의 이해와 활용

2009. 7. 3. 06:11

6월 23일.

삼성 소프트웨어 멤버십에 들어오고나서 나의 첫 기술세미나를 가졌다. 세미나 주제는 신입 단기과제때 잠시 다뤄보았던 BlogAPI. 이를 이용하여 MS Windows Live Writer같은 원격 블로깅 프로그램을 만들어보자!
 

BlogAPI에 대해 알아보기 전에 XML-RPC에 대해서 알아볼 필요가 있다. XML-RPC란, RPC(Remote Procedure Call) 프로토콜의 일종으로서, 인코딩 형식에서는 XML을 채택하고, 전송 방식에서는 HTTP 프로토콜을 사용하고 있다. XML-RPC는 매우 단순한 규약으로서, 작은 데이터 형식이나 명령을 정의하는 정도로만 사용하고 있으며, 사양서도 A4 2매 정도로 꽤나 단순한 편이다. 이는 대다수의 RPC 프로토콜 시스템이 수많은 규격을 규정하고, 실제 사용할 때에도 엄청난 양의 코딩을 요구하는 것과 비교하면 눈에 띄는 특징이라고 할 수 있다. 간단히 말해 서로 다른 운영체제, 프로그래밍 언어 간에도 웹을 통해 데이터를 주고 받을 수 있도록 해주는 표준 프로토콜을 의미한다.

 

< XML-RPC 아키텍쳐 >


XML-RPC 중 특히 블로깅과 관련된 기능을 지원하는 것을
BlogAPI 라고 하며, 블로그에 직접 접속하지 않고도 원격으로 포스팅이 가능하고, 포스팅 한 글의 편집, 삭제 등등 블로깅 전반에 걸친 여러 함수들을 제공한다.


BlogAPI
에는 MetaWeblog API, Blogger API, MovableType API 등등 여러 종류의 BlogAPI가 있다. 티스토리 블로그는 위의 세 BlogAPI를 모두 지원하며 각 블로그 서비스마다 지원하는 BlogAPI가 조금씩 틀리다. 여기서는 가장 널리 지원되고 있는 MetaWeblog API를 이용하여, C# 언어로 티스토리 블로그에 원격 블로깅을 할 수 있는 간단한 예제를 구현해본다.


http://www.xml-rpc.net/
에 접속하면 첫페이지 상단에서 XML-RPC.NET Ver.2.4.0 을 다운받을 수 있다. 압축을 풀면 여러 폴더와 파일들이 나오는데, 다 필요없고 bin1_0 폴더 안의 CookComputing.XmlRpc.dll 파일만이 필요하다.




위 그림처럼 using CookComputing.XmlRpc 을 위해서CookComputing.XmlRpc.dll 파일을 프로젝트에 참조시킨다. 이 dll 파일안에 MetaWeblog API들이 포함되어있다. 우리는 그냥 가져다 쓰기만 하면 된다. 
 
 
위에 첨부된 MetaWeblog.cs 파일을 다운받아 프로젝트에 추가하도록 하자. MetaWeblog API를 C#에서 바로 쓸 수 있게 만들어진 클래스다. 와... 이 정도면 그냥 거져 먹는거다. 간단하게 MetaWeblog.cs 의 내용에 대하여 살펴보자. 블로그와 관련된 구조체들이 선언되어 있고, 본격적으로 XmlRpc에 구현된 함수들을 C#에서 맛있게 먹도록 해줄 클래스가 있다. 
구조체 선언부와 클래스 선언부 사이에 보면 [XmlRpcUrl("http://parksk.tistory.com/api")] 라는 부분이 있다. 티스토리 블로그의 경우에는 자신의 블로그 주소 뒤에 "/api"를 붙이면 되고, 이글루스 블로그 같은 경우에는[XmlRpcUrl(http://rpc.egloos.com/rpc1)] 로 수정하면 된다. 자신이 이용하는 블로그 서비스의 BlogAPI 설정을 참고하도록 한다. 이제 클래스 내의 여러 함수 중, 새 글을 포스팅하는 함수인 newPost함수에 대해 자세히 알아보자. 

[XmlRpcMethod("metaWeblog.newPost")] 
public string newPost( 
string blogid, 
string username, 
string password, 
Post content, 
bool publish) 
    return (string)this.Invoke("newPost", new object[] { blogid, username, password, content, publish }); 
}



newPost 함수는 blogid, username, password, content, publish 를 매개변수로 가지며, 각 매개변수를 이용하여 자신의 블로그에 원격 포스팅을 한다. 각 매개변수에 대해서 알아보자.


blogid
각 블로그 서비스마다 틀린데, 티스토리같은 경우 관리자 환경설정에서 BlogAPI메뉴를 보면 84258 등의 숫자로 되어있는 자신의 blogid를 알 수 있다.

username  블로그 아이디
password  블로그 비밀번호. 티스토리는 그냥 실제 자신의 비밀번호를 입력하면 된다.  이글루스는 비밀번호를 직접 입력하지 않고 따로 API Key를 제공받아 password로 사용한다. 아마도 실제 비밀번호가 노출되는 것을 막기 위한 듯

contents 포스팅 될 글의 제목과 내용. 실제 포스팅되는 중심부분
publish 포스팅의 공개 유무


자 이제 C#으로 원격 블로깅 프로그램을 구현할 준비가 다 되었다. 
이제 아주 간단하게 만들어 본... 포스팅 정도는 할 수 있는 코드를 살펴보자.

 

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using CookComputing.XmlRpc; 
using System.Net;

 

namespace blogapi 
    public partial class Main : Form 
    { 
        MetaWeblog mw = new MetaWeblog();


        string username; 
        string password; 
        string blogid;

 

        string postid;

 

        public Main() 
        { 
            InitializeComponent(); 
            mw.Credentials = new NetworkCredential(username, password); 
        }

 

        private void btn_posting_Click(object sender, EventArgs e) 
        { 
            username = tb_blogid.Text; 
            password = tb_blogpw.Text; 
            blogid = tb_blogapiid.Text;

 

            try 
            { 
                Post post = new Post(); 
                post.categories = new string[] { "Test Posts" }; 
                post.title = tb_title.Text; 
                post.description = tb_contents.Text; 
                post.dateCreated = DateTime.Now;

                postid = mw.newPost(blogid, username, password, post, true); 
            } 
            catch (XmlRpcFaultException xrfe) 
            { 
                MessageBox.Show("ERROR : " + xrfe.ToString()); 
                return; 
            } 
            MessageBox.Show("Posting is Completed"); 
        }

      

        private void btn_file_Click(object sender, EventArgs e) 
        { 
            username = tb_blogid.Text; 
            password = tb_blogpw.Text; 
            blogid = tb_blogapiid.Text;

            MediaObjectUrl url =

            mw.newMediaObject(blogid, username, password, mw.GetMediaObject("c:\\me.jpg"));

           

            Post post = new Post(); 
            post.categories = new string[] { "Test" }; 
            post.title = "TEST"; 
            post.description = "<img src=" + url.url.ToString() + ">"; 
            post.dateCreated = DateTime.Now;

           

            string id = mw.newPost(blogid, username, password, post, false); 
            MessageBox.Show("File Upload & Posting Completed"); 
        }

 

        private void btn_del_Click(object sender, EventArgs e) 
        { 
            username = tb_blogid.Text; 
            password = tb_blogpw.Text; 
            blogid = tb_blogapiid.Text;

            try 
            { 
                Post post = new Post(); 
                post.categories = new string[] { "Test Posts" }; 
                post.title = tb_title.Text; 
                post.description = tb_contents.Text; 
                post.dateCreated = DateTime.Now;

                mw.deletePost(String.Empty, postid, username, password, true); 
            } 
            catch (XmlRpcFaultException xrfe) 
            { 
                MessageBox.Show("ERROR : " + xrfe.ToString()); 
                return; 
            } 
            MessageBox.Show("Deleting is Completed"); 
        } 
    } 
}

 

Windows Form 응용 프로그램 프로젝트 중 코드부분만 붙였다.

위 코드중 newMediaObject함수에 의해 리턴되는 url은 포스팅할 때 자신이 올린 파일의 주소이다. 이 주소를 이용해서 이미지 태그를 사용하여 이미지를 올린다던가 파일을 다운받을 수 있게 만드는 것이 가능하다. 여기까지 BlogAPI와 간단한 활용에 대해 알아보았다. C#을 조금이라도 아는 초보개발자라면 누구나 이해할 수 있을 정도로 쉽다. BlogAPI 별거 없다.

<참고자료>
http://msdn.microsoft.com/ko-kr/library/aa905670.aspx

박상근 프로그래밍/.NET (C#)

MS Windows Live Writer 를 이용한 원격 포스팅

2009. 6. 18. 00:47


삼성 소프트웨어 멤버십 신입 단기과제 때의 일이다.

스마트폰으로 찍은 사진을 블로그로 원격 포스팅하는 부분을 내가 담당하게 되어 BlogAPI에 대해서 알아볼 일이 있었다. 팀원중 자기 블로그를 관리해본 경험이 있는 사람도 딱히 나밖에 없었고,  우리가 개발하는 모바일 어플리케이션 상에서 원격 블로깅이 가능하다는 사실이 흥미롭게 다가왔다.

 

그 때야, 내가 가진 스마트폰에서 원격 블로깅을 해야했기에 BlogAPI를 이용하여 직접 코딩했었지만, 사실 이미 완벽에 가깝게 만들어져서 공개되어있는 원격 블로깅 프로그램들이 많이 있다.

 

'뭐하러 귀찮게 그런 프로그램들을 쓸까, 그냥 블로그에 접속해서 직접 쓰면되지' 라고 생각했었는데 엊그제 간만에 포스팅 한건 하려는데 Tistory 서버 점검이었다. 따로 워드 프로그램으로 작성해놓을까 했는데, 나중에 서버 점검 끝나면 또 옮겨서 이것저것 수정도 해야할 것 같고 해서 그만뒀었다. 그 때 내가 원격 블로깅 프로그램을 설치했었더라면 서버 점검중일때 포스팅할 글을 미리 작성해놓고, 서버 점검 후에 바로 포스팅을 했으면 편했을텐데...

 

그래서 방금 막 MS Windows Live Writer 라는 원격 블로깅 프로그램을 설치해서 첫 원격 블로깅을 하는 중이다. 

티스토리에서 직접 쓸때보다 표나 미디어 파일들 삽입하기가 훨씬 간단하고 편리하다. 태그 지정도 바로 가능하고 트랙백까지 바로 보낼 수가 있다. 따로 파일로 저장하는건 아니고 로컬이나 웹 로그에 임시저장이 된다. 그냥 일반 문서 프로그램처럼 글을 쓰다가 방금 웹 레이아웃으로 설정을 맞추니까, 지금 포스팅하는 문서 화면이 내 블로그에서 미리보기 하였을 때 보여지는 화면으로 셋팅이 되서, 내가 포스팅을 하면 어떻게 글이 보이겠구나 라는걸 바로 알 수가 있다. 귀찮게 미리보기를 해보지 않더라도. 오호... 이거 꽤나 매력있는 듯

http://download.live.com/writer
위 링크를 클릭해가면 각 언어별 MS Live Writer를 다운받을 수 있다. 

삽입 메뉴를 보니 표, 사진, 동영상, 지도.... 뭐?! 지도?!!!

지도 삽입을 클릭하니 구글어스 같은 Vitual Earth 라는걸로 내 지역을 찾아서 삽입이 가능하다.

삽입을 하니 바로 아래 처럼 지도보기 라는게 생겼다. 한번 클릭해보자. 어떻게 나오는지...

 

 

음, 그런데 글꼴 색상을 바꾸려다보니, 도구 모음에 글꼴 크기, 색상, 폰트 등은 없다. 폰트 관련하여선 진하게, 기울기, 밑줄 등만 있고, 글꼴 색상을 예로들면, 이를 바꾸기 위해서는 직접 메뉴의 서식을 클릭하여 글꼴 색을 클릭하여 글꼴 색 선택 창을 띄워서 색상을 골라야만 글꼴 색 변경이 가능하다. 게다가 글자를 복사/붙여넣기 하니 그 글에 적용되었던 글꼴 색은 없어지고 본래의 글꼴 색으로 돌아오고만다.

 

이제 글을 슬슬 마무리 짓고 게시하려하니까 또 단점이 보인다.

티스토리에서 게시하기 직전에 저작권 관련이라던가 발행하기 등등의 옵션들은 여기선 건드릴 수가 없다.

뭐 MS Windows Live Writer가 Tistory에 특화된 건 아니니깐 어쩔 수 없이 원격 포스팅 이후에 내 블로그에 접속해서 관리자모드로 로그인 후 설정해야한다는 귀차니즘이 필요하다. 이런 설정 없이 그냥 게시하였을때 이런 사항들이 기본으로 어떻게 셋팅되어있을까.

 

지금까지 간단하게 MS Windows Live Writer에 대한 나의 리뷰를 적어보았다.

이 외에도 MS Word 2007로도 원격 포스팅이 가능하고, Zoundry 라던가... MAC OS용의 ECTO,

그리고 ScribeFire Blog Editor라는 FireFox Plugin 등 BlogAPI를 이용한 수많은 프로그램들이 있다.

나는 아무 이유없이 그냥 MS Windows Live Writer 를 이용했지만, 여러분들은 각자 입맛에 맞는 프로그램을 찾길 바란다.

 

 

 

MS Windows Live Writer 를 이용할 분들을 위한 다운로드/설치 안내

이 글을 보시는 블로거들이라면 당연히 자신의 블로그(웹 로그)가 있을 것이다.

웹 로그 있음을 선택하고 다음!

혹시나 블로그가 없어서 MS의 라이브 스페이스라는 블로그를 만들겠다면 내 스페이스 만들기를 선택하고 다음!

 

자신이 사용하는 블로그에 맞춰서 선택. Tistory, Egloos, Naver 블로그들은 당연히 기타 웹 로그 서비스입니다.

 

자신의 블로그 주소를 적고, 이 블로그에 대한 자신의 관리자 아이디(사용자 이름), 암호를 입력합니다.

 

웹 로그 설정들을 받아옵니다.

 

웹 로그 설정 검색중 갑자기 이런 창이 뜹니다. 원격 포스팅을 하면서 미리보기도 하고 해야하니 를 선택

(싫으시면 아니오를 하셔도 상관없습니다. 각자 기호에 맞게...)

 

방금 자신이 등록한 블로그를 MS Windows Live Writer에서 구분하기 위한 이름을 입력합니다.

그리고 자신의 블로그가 정상적으로 설정되었는지 확인합니다.

 

자 이제 편집화면입니다. 맘껏 원격 블로깅을 즐겨보아요~♬

----------------------------------------------------------------------------------

PS.
MS Windows Live Writer로 포스팅 하고 난 후, 직접 Tistory에 로그인해보니
발행시 공개설정은 그냥 일반 공개로 되어있었고 CCL(저작권)설정은 없었다.
이를 위해서 직접 발행을 선택하고 CCL설정은 상업적이용 불가로 설정했다.
이정도 외에는 따로 설정할 것 없이 깔끔하게 잘 포스팅 된 듯. 만족~

PS2.

티스토리에서 원격 블로깅을 하기 위해서는 환경설정에서 BlogAPI 을 사용하기로 설정해야한다.

아래 화면에서 [사용하기]를 클릭하여 사용중으로 변경하면 BlogAPI 를 사용할 수 있게된다.


박상근 프로그래밍/.NET (C#)