ブックマークレットから Twitter APIを使ってタイムラインを取得する。

前のエントリ一行Twitterクライアントの続き
Twitter本家サイトは最新発言20件表示がデフォルトなので、過去の発言を探そうと思ったら[more]ボタンを押していかなければならない、以下のブックマークレットなら1回の実行でfriends_timelineを200件までさかのぼれるさらに、count=200の部分をcount=800にすれば、800件までさかのぼれることも確認した。(残念ながら、2009/10はじめ頃からはドキュメントどおり200が上限になったようだ。)(初回アクセス時にtwitter.comの認証が必要)

javascript:document.write("<script>function%20f(t){return('<tr><td>'+t.user.screen_name+'</td><td>'+t.text+'</td></tr>');};function%20y(o,d){d.write('<table%20border=1>');for(p%20in%20o){d.write(f(o[p]));}d.write('</table>');d.close();};function%20x(o){y(o,document);}</script><script%20src='http://twitter.com/statuses/friends_timeline.json?callback=x&amp;count=200'></script>");

リプライ(replies、返信、自分への@発言)も同じ。以下のスクリプト1回の実行で200件取れる。

javascript:document.write("<script>function%20f(t){return('<tr><td>'+t.user.screen_name+'</td><td>'+t.text+'</td></tr>');};function%20y(o,d){d.write('<table%20border=1>');for(p%20in%20o){d.write(f(o[p]));}d.write('</table>');d.close();};function%20x(o){y(o,document);}</script><script%20src='http://twitter.com/statuses/replies.json?callback=x&amp;count=200'></script>");

また、user_timelineについても、以下のブックマークレットを、Twitter の本家のユーザページ(http://twitter.com/(screen_name))を開いているときに起動すると、そのユーザの最新発言を200件表示するブックマークレット。特定のユーザの発言をさかのぼりたいときに本家の[more]ボタンを繰り返し押すよりも便利だと思う。

javascript:document.write("<script>function%20f(t,i){return('<tr><td>'+i+'</td><td>'+t.text+'</td></tr>');};function%20y(o,d){d.write('<table%20border=1>');i=1;for(p%20in%20o){d.write(f(o[p],i++));}d.write('</table>');d.close();};function%20x(o){y(o,document);}</script><script%20src='http://twitter.com/statuses/user_timeline/"+location.toString().match(/http:\/\/twitter.com\/(\w+)/)[1]+".json?callback=x&count=200'></script>");

上記スクリプトではスクリプト自体と結果を短くするために、発言と名前ぐらいしか表示していないが、全部表示して、Twitter API 応答のJSONにそもそも何が含まれているか全部表示するブックマークレットも作ってみた。今後のオブジェクトモデル(?)に相互参照がないことを祈る。

javascript:d=document;d.write("<script>function%20g(o,i){s=\"\";for(p%20in%20o){s+=i+p+'\\t'+((typeof%20o[p]=='object')?('\\n'+g(o[p],i+'\\t')):o[p])+'\\n';}return(s);};function%20f(o){return(g(o,''));};function%20x(o){document.write('<pre>'+f(o)+'</pre>');document.close();};</script><script%20src=\"http://twitter.com/statuses/friends_timeline.json?callback=x&amp;count=100\"></script>");

型も表示する版

javascript:d=document;d.write("<script>function%20g(o,i){s=\"\";for(p%20in%20o){t=typeof%20o[p];s+=i+p+'\\t'+((t=='object')?('\\n'+g(o[p],i+'\\t')):o[p]+'\\t'+t)+'\\n';}return(s);};function%20f(o){return(g(o,''));};function%20x(o){document.write('<pre>'+f(o)+'</pre>');document.close();};</script><script%20src=\"http://twitter.com/statuses/friends_timeline.json?callback=x&amp;count=100\"></script>");

この出力結果でTwitter APIを勉強することもできる。各要素の詳細について知りたければ http://apiwiki.twitter.com/Return-Values を見ればよい。
自分がフォローしている人(friends)や自分をフォローしている人(followers)の情報も取得できる。これらの引数はcountではなくて、pageである。1pageあたり100アカウント表示する。
friends

javascript:d=document;d.write("<script>function%20g(o,i){s=\"\";for(p%20in%20o){t=typeof%20o[p];s+=i+p+'\\t'+((t=='object')?('\\n'+g(o[p],i+'\\t')):o[p]+'\\t'+t)+'\\n';}return(s);};function%20f(o){return(g(o,''));};function%20x(o){document.write('<pre>'+f(o)+'</pre>');document.close();};</script><script%20src=\"http://twitter.com/statuses/friends.json?callback=x&amp;page=1\"></script>");

followers

javascript:d=document;d.write("<script>function%20g(o,i){s=\"\";for(p%20in%20o){t=typeof%20o[p];s+=i+p+'\\t'+((t=='object')?('\\n'+g(o[p],i+'\\t')):o[p]+'\\t'+t)+'\\n';}return(s);};function%20f(o){return(g(o,''));};function%20x(o){document.write('<pre>'+f(o)+'</pre>');document.close();};</script><script%20src=\"http://twitter.com/statuses/followers.json?callback=x&amp;page=1\"></script>");

取得した情報を表示するところを工夫すれば自分好みのTwitter閲覧のクライアントを作成することが可能である。