pythonでtwitterAPIを使用する

はてなの次は、twitterのネットワークデータを作ってやろうと企んでいます。そこで、twitterAPIについてメモしておきます。一応、twitterAPIに関する情報は
Developer — Twitter Developers
に書いてありますが、英語なんで知ったかもいいとこなんですが、そんなに大したこと書いてないように思いましたw
pythonやその他言語の開発者にとっては、それを手軽に実装するためのモジュール(ライブラリ)がほしいわけですけど、http://apiwiki.twitter.com/Libraries に書いてありました。今回はpythontwitterモジュールの利用しました。

twitter情報を取得する - twitterモジュール

Google Code Archive - Long-term storage for Google Code Project Hosting.
twitterモジュールはここからダウンロードできます。インストール方法も載っています(まぁいつも通りですが)。
とりあえず、インストールしたらインタラクティブシェルでtwitterをインポートします。

>>> import twitter
twitter.Api() - Apiクラスのオブジェクト生成

何はともあれ、ここから始めなければいけない気がします。twitter.Api()でApiクラスのオブジェクトを生成します。

>>> api = twitter.Api('yosshi71jp', '*********')

'yosshi71jp'はあなたのユーザー名。'*******'はパスワードです。パラメータなしでもOKですが、後々情報を取得する際に、「unauthorized(権限なし)」とか言われるのがオチなので、ここでユーザー名、パスワードは入れておくべきかと思います。

api.GetUser() - Userクラスのオブジェクト生成

各ユーザーの情報はUserクラスのオブジェクトに格納されています。Userクラスのオブジェクトはいろんな方法で生成されるわけですが、ここでは一つの方法として、api.GetUser()を取り上げます。例えば、最近twitterを始めた福田萌ちゃんの情報がほしいなーとか思ったら、

>>> moe = api.GetUser('fukudamoe')

ってやると、萌ちゃんの情報が詰まったオブジェクトが生成されます(おれ、気持ち悪いw)
ここから、萌ちゃんの情報を取得するにも方法はいろいろなんですが、例えば、辞書型で全てのデータを取るなら

>>> moe.AsDict()

もっと個別に、たとえば名前やユーザー名を調べたいときには

>>> print moe.GetName() # 名前
福田萌
>>> print moe.GetScreenName() # ユーザー名
fukudamoe

みたいになります。

api.GetFriends() - Followingについて調べる

誰をフォローしていて、誰がフォローしてくれているのかという情報は、ネットワークを作成する上で最も必要な情報だと考えています。フォローしている(Following)の情報を取得するには、api.Friends()を使います。ただ、フォローされている(Follower)の情報は取得できないかも(?調査中)です。それでは、また福田萌さんについて調べますw

>>> api.GetFriends('fukudamoe') # Following情報
[<twitter.User object at 0x5a99550>,
〜〜〜 中略 〜〜〜
<twitter.User object at 0x5a9d2d0>]

見ての通り、戻り値はUserオブジェクトのリストです。1つ1つのオブジェクトを見ていくことで、誰が福田萌さんをフォローしているのかということが分かります。

まとめ

もしかしたら、ここに書いた内容は多くの人のtwitterモジュールを使用する目的からは外れている気がします(普通、自動的にPOSTすることを考えそうなんで)。なので、使える情報になっているかはわかりませんが、詳しい情報は
Python: module twitter
がとっても分かりやすいので、こちらを参照してください。

雑記・疑問

フォローのリストは得られるのに、フォロワーのリストが取れないのはなぜ? 一応、api.GetFollowers()ってのがあるけど、これってユーザー本人以外は使えない気がする。
あと、なぜだかわからないんですけど、twitterモジュールを使用するには、root権限でないといけないみたい。インストールの仕方が悪かったのか何なのかわからないけど、後々プログラムを書く際に問題にならなければいいが・・・。