weblogのpingがXML-RPCを使っていたとは知らなかった。XML-RPC、こんなところで日の目を見ていたとは…
XML-RPCは大学時代の先輩に教えてもらって以来ちょっと凝っていた時期があって、会社で仕事に使ったり、某編集者に雑誌の記事でXML-RPCについて書かせてよ、プロキシ越えられるRPCなんてすごいじゃん、みたいなことを言ったことを思い出した。いわゆる「普通のPC雑誌」だったので反応はなく、当然のように没だったけど(笑)。当時はSOAPが出てきたけど理解するのが難しく、私を含む「なんちゃってプログラマ」がどんどんXML-RPCに流れていってたのだ。
というわけで当時を偲びつつPythonでpingを送る単純なスクリプトを書いてみた。UTF-8で送るが、encoding="utf-8"
のところを変えればエンコーディングも変わる。試みにping.bloggers.jpに送ってみたら正しく登録された。…冗談のテストに使うなって話もあるので実際のURLとタイトルを使ってしまった。たぶんアクセスが激増するほどの影響力はないと思うので使ってもいいと思った。思ったら?
(追記) 2004-01-18 16:38
まじか。Myblog japan の Ping 受信エラー原因を予想してみるの巻(dyndns.org)より、
Ping の XML-RPC リクエストのパラメータには(RSS ではなく) HTML の URL しか入ってこないので、RSS を取得する前にその URL を訪問して RSS の URL を探し出す必要がある
ということだ。送るのはRSSのURLじゃなかったのだ(!)。ありか、そんなの。というわけでUsageの行と変数名を書き直した。ついでにlinkタグをMovableTypeと同じような感じに書き換えてみた。…手間のかかることやってんなぁ。
import xmlrpclib
import sys
if len(sys.argv)!=4:
print “Usage: ServiceURL Title YourPageURL”
sys.exit(1)
serv=sys.argv[1]
title=unicode(sys.argv[2], “euc_jp”)
pageurl=sys.argv[3]
print “serv”, serv
print “title”, title.encode(“euc_jp”)
print “url”, pageurl
svp=xmlrpclib.ServerProxy(serv, encoding=”utf-8″)
rst=svp.weblogUpdates.ping(title, pageurl)
if rst[‘flerror’]==1:
print “fail:”, rst[‘message’]
else:
print “success:”, rst[‘message’]