org2blogの導入、失敗
seesaa blogはmetaWeblogのAPIを使えるということで org2blogを使って投稿しようと思い、 el-getを使ってorg2blogをインストールし、 さらに依存するということで auto-installを使ってxml-rpc.elをインストールし、 とりあえず下記のコードを評価しておいて
(require 'xml-rpc) (add-to-list 'load-path "~/.emacs.d/el-get/org2blog/") (require 'org2blog-autoloads) (setq org2blog/wp-blog-alist '(("mugijiru" :url "https://ssl.seesaa.jp/blog/rpc" :username "******" :password "******" )))
そして
M-x org2blog/wp-login
しようとしたところ
Contacting host: blog.seesaa.jp:80 Reading [text/xml]... 919 bytes of 909 bytes (101%) xml-rpc-xml-to-response: XML-RPC fault `Failed to access class (metaWeblog): Can't locate metaWeblog.pm in @INC (@INC contains: /home/seesaa/bl/lib /home/seesaa/savacan/lib /usr/local/perl-5.8/lib/5.8.8/x86_64-linux-thread-multi /usr/local/perl-5.8/lib/5.8.8 /usr/local/perl-5.8/lib/site_perl/5.8.8/x86_64-linux-thread-multi /usr/local/perl-5.8/lib/site_perl/5.8.8 /usr/local/perl-5.8/lib/site_perl /home/seesaa/cpan/lib/5.8.8/x86_64-linux-thread-multi /home/seesaa/cpan/lib/5.8.8 /home/seesaa/cpan/lib /home/seesaa/cpan/lib/site_perl/5.8.8/x86_64-linux-thread-multi /home/seesaa/cpan/lib/site_perl/5.8.8 /home/seesaa/cpan/lib/site_perl . /usr/local/perld) at (eval 26339) line 3.
って怒られた。 何が悪いのかさっぱりわからんので とりあえずもっと低レベルなところから手をつけてみる。
wordpress-xmlrpc-0.11 というgemを使ってみる
wordpress-xmlrpc という gem を入れてみて
下記のようなコードを動かしてみる
require 'rubygems' require 'wordpress-xmlrpc' blog_params = { :blog_uri => "https://blog.seesaa.jp/", :xmlrpc_path => "rpc", :user => "******@gmail.com", :password => "******" } blog = Wordpress::Blog.new(blog_params) p blog.get_page_list
すると
$ ruby test.rb
/opt/local/lib/ruby/1.8/xmlrpc/parser.rb:152:in `fault': wrong fault-structure: {"faultCode"=>"Client", "faultString"=>"Failed to access class (wp): Can't locate wp.pm in @INC (@INC contains:) at (eval 34489) line 3.
"} (RuntimeError)
やっぱり怒られる。
XMLRPCを直接叩いてみる
# -*- coding: utf-8 -*- require 'xmlrpc/client' proxy = XMLRPC::Client.new("blog.seesaa.jp", "/rpc") p proxy.call("mt.supportedMethods") p proxy.call("blogger.getRecentPosts", "", "mugijiru", "******@gmail.com", "******")
ここまでやってようやく気付く。
seesaaは、WordPressのAPIに対応してない!
何故か対応しているものと思い込んで試してしまった……。 そりゃ動かないわけだ。
ってことで、Emacsからmt/blogger/metaWeblogのAPIを叩く他の方法を探す。
weblogger-el
インストールはしてみたけどうまく動かなかった……。
M-x weblogger-setup-weblog
して名前を決めた辺りで
when: Symbol's value as variable is void: mt_keywords
とか怒られる。
ググってみても、割とあれなelispらしいので、 自分自身elispに明るくないのでとりあえず放置……。
rubyから直接xmlrpcを叩く
もうしょーがないから、 Rubyからxmlrpc喋らせて自前でAPIを叩くことに。
とりあえずコードはこんな感じ。
# -*- coding: utf-8 -*- require 'xmlrpc/client' proxy = XMLRPC::Client.new("blog.seesaa.jp", "/rpc") content = {} content["title"] = "記事のタイトル" content["description"] = <<CONTENT ここに本文を書く CONTENT proxy.call("metaWeblog.newPost", "mugijiru", "******@gmail.com", "******", content, true)
SSLは、叩いてない。めんどくさかった。 というか、直接プログラムに本文とか書く時点でめんどくさがってる。 けどまあとりあえずはこれでOK
本文の出力
タイトルはともかく、 本文のHTMLを手書きはめんどい。
ってことで、どうにか手抜きで出力する方法を考えてみた。
ま、org-modeで書いているので、 とりあえず org-export-as-html-to-buffer して 本文になるところをコピペして、 上記のスクリプトに貼り付けることでとりあえず解決。
seesaaにログインして直接書くよりはるかに楽になったので 割と満足

