現在のblosxom-xmlrpc.cgiでは、世の中に出回っているブログツールに対応出来ていません。
先日は、sidebar.jpからの投稿が成功したという話で、setPostCategoriesがないというのが原因の一つでしたが、今回はgetPostCategoriesです。
このメソッドは、ブログツールが記事を投稿した後、記事のカテゴリを再設定する際に呼び出されます。何種類かのツールでは起動直後のアカウント設定にて、最新記事を取得します。この際、記事IDに対するカテゴリを取得する為にgetPostCategoriesが呼び出されます。
今回の対応で、「BlogWrite」と「ubicast Blogger」から記事が投稿出来ることが確認出来ました。
ただ、「ubicast Blogger」のほうは記事を投稿後、再度getPostCategoriesを実行しようとしているみたいで
newPost
↓
setPostCategories
↓
getPostCategories
といった呼び出し方をしてくれます。blosxomの様にフォルダ名がカテゴリになっているようなブログ、つまりsetPostCategoriesを実行すると記事IDが変わってしまうようなブログでは、今回書いた記事IDがsetPostCategoriesによって変更されてしまうことになります。
これについては、他に対応方法がないか検討してみます。
またgnome-blog-posterで画像付き記事が投稿されない件については、newMediaObjectの最終引数に渡すcontentのbitsが、base64でエンコードされた文字列そのままが入っていたのが原因でした。
xmlrpclib.Binaryクラスオブジェクトのdataメンバにバイナリを渡し、contentとしてそのオブジェクトを渡すと、うまく画像付き記事が投稿出来ました。
とりあえずWindows&Linux&Web&携帯から記事を投稿することが出来るようになりました。
めでたし、めでたし
blosxom-xmlrpc.cgiのソース差分:
gnome-blog-posterのソース差分: