Technorati Link Cosmos

TechnoratiのAPIを利用して、最近ココにリンクを張ったblogを一覧でサイドバーに流し込んでみる。BlogRollingとかBlogPeopleのような能動的で固定のものはあってもあまりうれしくない、というかみんなやってるからやりたくないので、こんなんで。

TechnoratiのAPIについてのドキュメントは、Sifry's AlertsTechnorati API 0.9というエントリに書いてあるのが唯一っぽいと言うやる気の無さで、かなり理解するのに苦労しました。要は「適当なパラメータをつけてgetするとXMLが返ってくる(postもありますけどね)」ということみたいなので、LWP::Simple使って簡便にやってます。Cosmosの場合getすべきURLは、

http://api.technorati.com/cosmos.xml?url=http://hail2u.net/blog/&type=weblog&key=<API Key>

となります(<API Key>はユーザー登録してあらかじめ貰っておく必要があります)。で、返ってくるXMLをゴニョゴニョしてやればいいだけ。パーサー使おうかと思いましたけど、文字コードがアレなのと、さほど構造がややこしいわけでもない(RSSライクなシンプルな構造です)ので、正規表現で抜き出しました。あとは、JavaScript Includeできるようにdocument.write()の羅列で書き出しているだけ。

てか、Jeremy Zawodny's blogにあるblog cosmosのパクりです。コードは自分で書きましたが。すげーアナログなコードなので見せない。

追記

怪しすぎる正規表現なので、XML::Simpleを使って書き直したり。ついでにHTML::Entitiesも使って、blog名を実体参照化もしておいたり。

追記

xreaにはXML::Simpleがインストールされてませんでした。。。