August 09, 2003

Net::MovableType で XML-RPC API クライアントを楽々実装

[ Movable Type , Perl ]

CPANNet::MovableType なるモジュールを見つけました。

Sherzod Ruzmetov 氏作の Net::MovableType は MovableType の XML-RPC API のプロキシクラスで、これを使えば XML-RPC クライアントが手軽に書けるという代物。

#!/usr/local/bin/perl
 
use strict;
use warnings;
use Net::MovableType;
 
my $mt = new Net::MovableType('http://localhost/~naoya/mt/rsd.xml');
 
$mt->username('hoge');
$mt->password('foo');
 
my $blogs = $mt->getUsersBlogs();
for $b ( @$blogs ) {
    print "id: $b->{blogid}", "\t", $b->{blogName}, "\n";
}

といった具合で MovableType のサポートしている Blogger API や metaWeblog API他 が扱えます。うーん良いですね。

MovableType.pm をちょっと覗いて見ましたが、XMLRPC::Lite を使って RPC メソッドをラッピングしているようです。XML-RPC API プログラミングの参考例にも良さそうです。

Net::MovableType のコンストラクタには mt-xmlrpc.cgi の URL あるいは RSD の URL を指定することができます。RSD の URL を指定した場合は、RSD の中から mt-xmlrpc.cgi の場所を引っ張ってくるようになっているようです。

この RSD のサポートと newMediaObject() というメソッドは siteAS の Atsushi Sano 氏によるもの、と CREDIT にありました。グッジョブ!

と、ここまでは良いのですが一つ問題点がありまして、やはり日本語絡みです。

MovableType の XML-RPC API を実装しているモジュールの MT::XMLRPCServer はどうやらその応答の XML ドキュメントを encodings="UTF-8" として返却します。返却されたドキュメントは

Net::MovableType → XMLRPC::Lite → SOAP::Lite → XML::Parser (あるいは XML::Parser::Lite)

と渡されてパースされるわけですが、XML::Parser は XML 宣言の encodings を見て文書の内容を判断します。

MT::RPCServer からの返却地は encodings="UTF-8" としながらも、実際のテキスト要素にはインストール時の文字コードを使うみたいなので EUC にしている僕の環境では、日本語が含まれた返却値に対して XML::Parser がパースエラーを吐いてしまいました。

MT::XMLRPCServer を修正して、返却値を正しく UTF-8 でエンコードしてやれば良さそうです。が、なんかあちこちあってどこをどう直せばいいやら。むが。

ちなみに Net::Blogger ってのもあるみたいです。

Posted by naoya at August 9, 2003 01:46 AM | トラックバック (4)  b_entry.gif
トラックバック [4件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/330
Net::MovableType
Excerpt: トップページにこっそり置かれている、rsd.xml。これがいままで何の役に立つのか全然知らなかったんで、ググってみたところ、目的以上の情報に出会った。Net::MovableType で XML-RPC API クライアントを楽々実装CPAN で Net::MovableType なるモジュールを見つけました。...
Weblog: Wonderful Miyashita's House
Tracked: December 5, 2003 08:44 PM
XML-RPC版MT4iの実験について中間報告
Excerpt: 僕はMovableTypeを使い始めてすぐにひらたさんのMoblogに登録させていただきました。んで、「携帯で更新できるならやっぱり確認もしたい」ということで、やっと探し当てた太鉄さんの「MT4i」。 どちらも本当にスバラシイものだと思います。 実は太鉄さんの方でも同じこと...
Weblog: 人生迷い箸
Tracked: December 22, 2003 01:42 PM
Net::MovableType
Excerpt: CPAN で Net::MovableType というものを見つけた。MovableType のクライアントらしい。使えるかと思ったが、難しいようだ。...
Weblog: nlog(n)
Tracked: February 26, 2004 12:47 AM
MTについて
Excerpt: Net::MovableType で XML-RPC API クライアントを楽々実装 ぉぉ、やっぱ出来るのか。 これを上手く拡張したら色んな事が出来...
Weblog: oop.blog();
Tracked: October 8, 2004 03:04 AM
コメント [0件]