Tumblrのリブログツリーを表示するアプリを作ってみた

 Tumblr面白いですよね。なかなか飽きない。毎日毎日リブログしまくってると、そのうちどのようなアカウント経由で自分のダッシュボードに美少女画像が流れてくるのか気になりますよね。気になりませんか? 気になりませんね。そうです。正直誰経由であれ自分のダッシュボードに美少女画像が流れてくればいいんです。でも、たまにはリブログの流れに興味が湧くときもある。そんなときのためのアプリを作ってみました。Tumblrのポストページを入力すると、そのリブログ情報をネストした形でリスト表示します。これによってどのような流れでリブログが拡散しているか、少しはわかりやすくなると思います。
 このアプリでリブログ情報を表示させるには、そのポストページに"Show more notes"ボタンが存在することが必要です。すなわち(おそらくデフォルトで)50notes以上のポストしかリブログ情報を取得できません。またlikeは完全無視です。
 作ってみて難しかったのはリブログ情報を配列から木構造に変換する部分です。中には同じアカウントで複数回リブログしている場合もあり、お前どんだけその画像が好きなんだよと、したがって同じアカウントのノードが複数作られます。そこで、あるアカウントのリブログ元アカウントのノードが複数ある場合、いちばん新しい(つまり深い)ノードに対応するようにしました。これで正確にリブログ情報を再現できているか不安ですが。
http://deco-mayu.appspot.com/
ソースコードはGitHubに置きました。
https://github.com/yuribossa/TumblrReblogTree
以下のような形で表示されます。


追記(20120124)
 はてぶコメントで某諸事情ダメだったとあって、ログ見たら時折google.appengine.runtime.DeadlineExceededErrorが出てたのでそれかも。自分で試した中では4000notesはapp engineのサーバが正常に返してくれたが、ツリー構築のエラーが多くて(コンソール開くとわかる)ツリーは正確に再現できてないと思います(勘だけど)。これは大きなnotes数になるとTumblrの返してくれるnotesデータに抜けが多くなるためだと思われます。某諸事情もローカルで試してみたら、サーバ側は時間かかったけれどデータ返してくれて、ツリー構築の段階でエラー吐きまくってました。Tumblrさんもあまりに巨大なnotesになるとすべてを追うのは大変なんですよ。