SATOXのシテオク日記

~ふもっふ、ふもふも~

Pochitterの作り方

先日、Pochitterというツールを公開いたしまして、良くも悪くも反響を頂いております。
雑誌掲載についても1つ進展がありまして、晋遊社さんから10/13発売予定の「Windows100% 11月号」に続き、インフォレスト(株)さんから10/29発売予定のフリーソフトスーパーベスト(仮)」からも掲載のご連絡を頂きました。
ありがたいもんです。
(冷静に書いてますが、ひょひょひょひょうにょ〜!というテンションなのだ)
というわけで、今回はPochitterのレシピをご紹介します。
やっている事は非常に簡単で恥ずかしいくらいなんですけどね(笑)。
また、正確な情報はTwitterさん自身がTwitter APIというものを公開していますので、そちらを参考にするのが良いかと思います。

■Twitter API Wiki / FrontPage

 
BASIC認証する
古典的な認証の仕組みなんですが、Twitter APIにはBASIC認証が必要な場合が多くあり、Pochitterも他でもないといった感じです。
具体的には「ユーザ名:パスワード」という文字列をBase64エンコードして、送りつければいいわけです。
一度、認証すると、そのセッションで「認証されたアカウント情報」が有効になります。
 
■フォローユーザリストを取得する
Twitter APIは非常に簡単。
例えば、プログラム知識が一切なくとも、以下のURLにブラウザでアクセスしてBASIC認証すれば、フォローユーザリストの一覧情報を取得できます。
↓クリックすると、Twitter IDとパスワードを聞かれます。
http://twitter.com/statuses/friends.xml
ログインに成功すると、XML形式でユーザの情報を取得できます。
簡単でしょ?
ただし、取得されるリストは100人単位なので、以下のようにページを切り替えて取得し続けていかなければいけません。
Pochitterで情報取得に時間が掛かるのはこのためなんです。
↓2ページ目を取得。
http://twitter.com/statuses/friends.xml?page=2
XMLをだらっと見てみると分かるとおり、ユーザ毎のアイコンURLや最新のつぶやきなどの情報がいろいろ詰まっています。これを解析して表示してやればいいわけです。
(12/4追記)pageは廃止され、cursorというオプションに変わったようです。cursor=-1から開始して、取得したXMLのフッタに次のcursor値(next_cursor)が入っているので、その値で次を検索します。0になれば終了です。
 
■被フォローユーザリストを取得する
こちらもフォローユーザ一覧と同様。
↓「friends」を「followers」に変えればいいだけです。
http://twitter.com/statuses/followers.xml
http://twitter.com/statuses/followers.xml?page=2
 
■相互フォローを調べるには
「フォローユーザ」と「被フォローユーザ」を比較すれば分かります。
簡単(笑)。
いろいろやり方はありますが、Pochitterではユーザ名をハッシュテーブルに追加していって後に検索する事で、高速に相互フォローかどうかを見つけています。
 
■りむったー調べるには
アンフォローユーザを調べるには、以前フォローしていたユーザリストを保持し、それと比較してやればいいわけです。
Pochitterではアプリ終了時にPochitter.cfgというファイルにテキストでユーザ一覧を書き出しています。
単純(笑)。
 
Twitterから取得した情報の問題点
上記にTwitterからのユーザ情報を取得する方法を書いてみましたが、ちょっと大きな問題があります。
それは「Twitterから取得したユーザ一覧情報が間違えている」という事なんです。
ちょっと言い訳っぽいですが、Pochitterで表示される情報が実際とは異なる事があります。しばらく時間が経つと正確な情報になったりもしますが、急にまたおかしくなる事もあります。
恐らく、そのうちTwitterさんが修正してくれるんじゃないかと思います。というか、バグってんじゃん!と疑われるのは悲しいので直して欲しいです。
 
はい。
というわけで、恐らくプログラミング経験のある方なら、Pochitterを作る事ができるのではないでしょうかね?
 
ちなみに、今後Pochitterに入れたい機能としてはこんなのを考えています。

  • 自分以外のユーザの一覧情報表示
  • アカウント作成日から換算した1日の投稿数(つぶやき数/Day)を表示
  • クライアント機能(笑)

まぁぼちぼちやっていきますにょ。

■TwitterのFriends/Followers/Followingユーザ一覧表示ツールを作ってみた

■C#でTwitterアプリを作ってみた