Blog等にプログラムなどから投稿する際に、非常に便利なPEARのモジュールにServices_Blogginという物があります。
シェルログインできる環境であれば、
「pear install Services_Blogging-beta」
でインストールできます。
さてさて、コレを使ってブログに投稿してみよう!
と意気込んでみたのですが・・・・
っと書く前にXML-RPCに対応したブログサービスに一覧がまとめられているページあるのでご紹介
ブログ対応状況一覧
XML-RPCって何?っという人はこちら
簡単にいうと、インターフェース。
もっというと、Webサービス(ブログ等)と通信する際にXMLを送りあって通信する手法一つです、ハイ。
(個人的憶測 Webサービスとの通信手段としては、SOPA > WSDL > XML-RPC > ATOM > REST で←に行くほど面倒・・・かな?)
クライアント(送る側)の使い方で何に使われてるの〜?っというと
っ ブログペット
が代表的ですね〜。
最近はPCでオフライン状態でブログを書いてバックアップを手元に残しつつ、ブログにアップするなんてソフトウェアがあったりします。
(BlogWrite とか Windows Live Writerとか)
ブログサービスも稀に吹っ飛んでしまうので手元に元データを残しおきたいというのも無理からぬところ。
さて、そんなわけで?XML-RPCで通信するクライアント作りなんてのをやっているのですが、このServices_Bloggin 一癖も二癖もあります。
とりあえず、公式ドキュメントを読みます。
ふむふむ、なんか簡単そう?
・・・・
・・
う? 3タイプしか対応してないのね〜
(Blogger、LiveJournal、MetaWeblog)
まぁ、MetaWeblogが世界共通仕様?に近いのでこれを使えばなんとかなるんじゃ〜?
と、思考錯誤すること数十分。
お〜 投稿できた〜!!
・・・・
・・
カテゴリが反映されてないような・・・?
これは受ける側(ブログサービス側)の仕様にかなり依存しますが、
多くの場合カテゴリーが効きません orz
まぁ〜デフォルトに突っ込めれば(ry と断念しておくことに。
(もしかしたら、複数カテゴリ登録不可の場合はそれに応じたプログラム改変すれば平気かね〜?)
まぁ こんな感じでとりあえず投稿できていたのですが・・・
とりあえずXML-RPCで投稿できたブログは、
Jugem FC2
の2つでした。
Gooは投稿はできましたが、ジャンルが設定できないので未公開状態になってしまう・・。
(これもプログラム側対応でなんとかなったりするのかね・・?)
Seesaaで使うには・・・というかインターフェイスにBlogIDを設定しなければいけない場合には、以下のプログラム改変で対応できました。
/usr/share/pear/Services/Blogging/Driver/MetaWeblog.php
(たぶんここにインストールされてます ない場合はlocateかけてあげて
〜)
の
public function savePost(Services_Blogging_Post $post)の上あたりに
public function setBlogId($nBlogId)
{
$this->userdata[‘rpc_blogid’] = new XML_RPC_Value($nBlogId, ‘string’);
}//public function setBlogId($nBlogId)
を追記!
っていうかデフォルトだとBlogIDにUser名設定するってどうよ!w
なので、オブジェクトにメソッド追加して無理やり書き換え!
設定するときは、公式の一番したのプログラムで言えば、
$post = $bl->createNewPost();
する前に
$bl->setBlogId(設定したいブログID);
を入れればOK
これで万事解決さ〜♪
他のも解消できないか挑戦は・・・して・・・みないかも(ぉ