-
C# 네이버 블로그 MetaWeblog API로 글 작성하기 (with XML-RPC)닷넷/C# 2020. 3. 22. 17:21반응형
네아로가 갑자기 되지 않아서 프로그램으로
네이버 블로그에 포스팅을 할 수 없게 되었다.
당황하지 않고 다른 방법을 찾아보았다.
XML-RPC라는 방법을 통해 포스팅하는 방법이 있었고,
그것을 쉽게 사용할 수 있게 해주는 API는
MetaWeblog API라는 이름을 가진 것을 알 수 있었다.
사용방법은 다음과 같다.
1. 블로그 API 사용 신청 및 암호발급받기
1) 내 네이버 블로그에서 관리를 클릭한다.
2) 전체보기에서 글쓰기 API 설정을 클릭한다.
3) API사용을 신청하고(금방 된다) API연결정보에서 API연결 암호를 메모해 둔다.
2. 프로젝트에서 사전작업
1) 비주얼스튜디오 프로젝트에서 XML-RPC를 설치해야 한다.
[도구] - [NuGet 패키지 관리자] - [솔루션용 NuGet 패키지 관리]를 클릭한다.
2) 찾아보기에서 xmlrpcnet을 검색하고, 설치한다.
3) 프로젝트에서 [추가]-[클래스] MetaWeblogApi.cs 이름으로 아래 소스를 복붙해서 파일을 만든다.
using System; using System.IO; using System.Net; using Microsoft.Win32; using CookComputing.XmlRpc; namespace YourNameSpace { // MetaWeblog API와 관련된 자세한 스펙이나 사용방법은 아래 URL을 참고하세요 // http://www.xmlrpc.com/metaWeblogApi // http://msdn.microsoft.com/ko-kr/library/bb259702.aspx // http://msdn.microsoft.com/ko-kr/library/aa905670.aspx // http://www.xml-rpc.net/ // 포스트 등록을 위한 Post Struecture (필요한것만 명시) // 이외에 PostID나 Categories등을 사용할 수 있음 public struct Post { public DateTime dateCreated; public string description; public string title; } // 첨부파일의 경로를 표현 하기위한 Sturcture public struct MediaObjectUrl { public string url; } // 첨부파일을 업로드하기 위한 Structure public struct MediaObject { public string name; public string type; public byte[] bits; } // XMLRPC를 사용할 Blog API URL [XmlRpcUrl("https://api.blog.naver.com/xmlrpc")] public class MetaWeblogApi : XmlRpcClientProtocol { // XMLRPC를 이용하여 포스팅 [XmlRpcMethod("metaWeblog.newPost")] public string newPost(string BlogID, string ID, string Password, Post Content, bool Publish) { return (string)this.Invoke("newPost", new object[] { BlogID, ID, Password, Content, Publish }); } // XMLRPC를 이용해 첨부파일 업로드 [XmlRpcMethod("metaWeblog.newMediaObject")] public MediaObjectUrl newMediaObject(string BlogID, string ID, string Password, MediaObject MediaObject) { return (MediaObjectUrl)this.Invoke("newMediaObject", new object[] { BlogID, ID, Password, MediaObject }); } // 첨부파일을 올리기 위한 MediaObject객체 생성 public MediaObject CreateMediaObject(string FilePath) { if (File.Exists(FilePath) == false) throw new Exception("파일이 없어요"); MediaObject MediaObject = new MediaObject(); MediaObject.name = Path.GetFileName(FilePath); MediaObject.bits = File.ReadAllBytes(FilePath); string Extention = Path.GetExtension(FilePath); MediaObject.type = "application/" + Extention; // 기본값 // 레지스트리에 등록된 확장자를 검색하여 Content Type을 추출 RegistryKey Key = Registry.ClassesRoot.OpenSubKey(Extention); if (Key != null) { string Result = (string)Key.GetValue("Content Type"); if (Result != null) MediaObject.type = Result; } return MediaObject; } } }
3. 네이버 블로그에 글 작성하기
다음과 같이 소스를 작성하여 네이버 블로그에 글을 올린다.
위에 메모해 둔 API연결 암호는 이때 사용한다.
private void BlogPosting() { string ID = "네이버 ID"; string Password = "블로그 API연결 암호"; MetaWeblogApi MetaWeblogApi = new MetaWeblogApi(); MetaWeblogApi.Credentials = new NetworkCredential(ID, Password); MediaObjectUrl mourlImage1 = MetaWeblogApi.newMediaObject( ID, ID, Password, MetaWeblogApi.CreateMediaObject("이미지경로")); string sTitle = "포스트 제목 테스트"; string sContents = "포스트 내용<br><img src='" + mourlImage1.url + "' />"; Post Post = new Post(); Post.title = sTitle; // 포스트 제목 Post.description = sContents; // 포스트 내용 Post.dateCreated = DateTime.Now; // 포스트 날짜 MetaWeblogApi.newPost(ID, ID, Password, Post, true); }
참고 사이트: https://koronaii.tistory.com/144
그 외 포스트 작성, 수정, 삭제에 관한 자세한 내용과 티스토리 또한 이를 이용하여 글을 작성하는 방법에 대한 것은
MetaWeplog(1): https://nowonbun.tistory.com/255?category=507116
MetaWeplog(2): https://nowonbun.tistory.com/256?category=507116
이 곳을 참고한다.
반응형'닷넷 > C#' 카테고리의 다른 글
C# 시간 계산 (DateTime Add함수 월, 일, 시, 분 더하기 빼기) (0) 2020.09.11 C# 텍스트파일 읽기 응용편: 텍스트파일에서 해당 문자가 있는지 확인하기 (0) 2020.03.29 C# 난수, 랜덤 Random 사용법 (+ 문자열 배열에서 랜덤으로 출력하기) (0) 2020.03.09 C# 번역 파파고 API 사용하기 (영어를 한글로, 한글을 영어로 번역) (2) 2020.03.03 C#에서 구글번역 Google Translation API Basic 사용하기 (0) 2020.02.28