2007/05/28


さて、皆に遅れを取るようにJaikuを始めました。
http://mattn.jaiku.com/
はいはいaddお願い!では、遅れた者として恥ずかしいので、とりあえずAPIについて。
Jaikuでは、RSS、Atom、Json、XMLRPCのインタフェースをサポートしています。
その内、Feed系であるRSS、Atomについては読み取り専用。JsonとXMLRPCがステータス更新可能なAPIとなっています。 APIキーはAPIドキュメントの右下に表示されます。 APIドキュメントの例では、XMLRPCで「test」メソッドを呼び出していますが、実際には「test」というメソッドはありません。
あるのは、「presence」というクラスと、そのクラスにある「send」とういメソッドのみです。
つまりは、現状のAPIでは、ステータス一覧をRSS、Atomから取得し、更新をJsonやXMLRPCで行うしか術がありません。

せっかくXMLRPCインタフェースを出したのですから、参照系APIも出して欲しいものです。
RSSやAtomを取得し解析するライブラリも必要になれば、更新用のライブラリも必要になります。
pythonでは便利なサードパーティ製ライブラリがありますが、C言語等になると、curlやらlibxml2やら、結構大変なんですよ。(グチ)

まぁ、とりあえずpythonの例を乗っけておきます。
ソースのuserとpersonal_keyを修正して頂いて、コマンドラインから実行すると、第一引数がメッセージとなって送信されます。
# Windowsから検証してますので、utf-8な*nixでは修正がいるかもしれません。

# -*- coding: utf-8 -*-
import sys
from xmlrpclib import ServerProxy

user = "?????"
personal_key = "??????????????????"

def update_status(user, personal_key, message):
  jaiku = ServerProxy("http://api.jaiku.com/xmlrpc")
  jaiku.presence.send({"user": user, "personal_key": personal_key, "message": unicode(message, "mbcs").encode("utf-8")})

if __name__ == "__main__":
  if len(sys.argv) == 2:
    update_status(user, personal_key, sys.argv[1])
  else:
    print "usage: [status message]"

追記:
観測気球さんが、Jaiku API 仕様書 (勝手に日本語訳シリーズ)を公開してくれています。
Posted at by | Edit