twitter client(2)

結局、python-twitterでは、認証機能をそのままでは利用できないようで、認証を使えるtweepyという別のモジュールを利用したのでそのメモ。
ざっくりとOAuthの登録、tweepyのインストール、tweepyでOAuthを利用してtwitter APIをたたいてtweet発信/tweet取得、の流れ。

基本的に下記サイトを参考に作業を行った。

  1. ubuntu & pythonでtwitter
  2. python-tweepy
  3. Twitter From the Command Line in Python Using OAuth
  4. python で twitter メモ

tweepyのインストール

ubuntu & pythonでtwitterや、python-tweepyを参考に、pythonからtwitterにアクセスするモジュールtweepyをインストールした。
以下はその手順。なお、開発環境はUbuntu 10.04 + python 2.6.5
aptのrepositoryにはpython-tweepyはないので、repositoryにpython-tweepyを追加し、apt-getでとってこられるようにする。
python-tweepyの「Read about installing」に書いている

$ sudo add-apt-repository ppa:chris-lea/python-tweepy
$ sudo apt-get update
$ sudo apt-cache search tweepy <--以下のように表示することを確認
python-tweepy - Twitter library for python
$ sudo apt-get install python-tweepy

OAuth登録

Twitter From the Command Line in Python Using OAuthや、python で twitter メモを参考に、OAuthでtwitterを使えるように登録する。

$ python
>>> import tweepy
>>> CONSUMER_KEY = 'xxxxxxxxx'
>>> CONSUMER_SECRET = 'xxxxxxxxxxx'
>>> auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
>>> auth_url = auth.get_authorization_url()
>>> print 'Please authorize: ' + auth_url
Please authorize: http://api.twitter.com/oauth/authorize?oauth_token=xxxxxxxxxxxxxxxxx
>>> 

このURLにアクセスして連携を処理。
PIN(=NNNNNNNN)を得た。

>>> verifier = raw_input('PIN: ').strip()
PIN: NNNNNNNN  <--この数字は手で入力。
>>> auth.get_access_token(verifier)
>>> print "ACCESS_KEY = '%s'" % auth.access_token.key
ACCESS_KEY = 'XXXXXXXX'
>>> print "ACCESS_SECRET = '%s'" % auth.access_token.secret
ACCESS_SECRET = 'XXXXXXXXXX'
>>> 

ここまでで準備完了。(上記サイトと同じ手順ででき大変参考になりました。)

tweet発信

>>> import sys
>>> CONSUMER_KEY = 'XXXXXXX'
>>> CONSUMER_SECRET = 'XXXXXXXXXXXXXX'
>>> ACCESS_KEY = 'XXXXXXXX'
>>> ACCESS_SECRET = 'XXXXXXXXXX'
>>> auth.tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
>>> auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
>>> auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
>>> api = tweepy.API(auth)
>>> api.update_status(mypost)
<tweepy.models.Status object at 0x2326f50>
>>> mypost = sys.stdin.readline().strip()
にほんごテストfrom PYTHON
>>> api.update_status(mypost)
<tweepy.models.Status object at 0x2394090>

tweet取得

上記に続いて以下でtimeline取得できる

>>> api.update_status(mypost)
<tweepy.models.Status object at 0x2394090>
>>> print api.home_timeline()[0].text
尾崎豊が長生きしてたらいま何言ってるだろう、というのは、ジミヘンが今生きてたらどうだっただろう、というのと全く違う次元で想像するに値するような気がします
>>> 

お気に入り取得

>>> favs = api.favorites(count=200)
>>> for i,fav in enumerate(favs):
...     print "(%d):"%i,fav.created_at,"|",fav.text
... 

(0): 2012-03-08 02:26:26 | なぜ日本に自動販売機が多いのかhttp://t.co/ckxxlImh これはトルコでも経験した。明らかに売り切れていない商品のボタンを押しても出てこない、釣り銭ボタンを押しても釣り銭が出てこない、中の飲み物が腐ってる(爆)。日本の自販機のメンテナンス水準は驚異的。
(1): 2012-03-07 23:27:38 | 『人間とショウジョウバエはほとんど同じ遺伝子を使って時を刻む生物時計を持っています』- 時間の分子生物学
(2): 2012-03-07 12:07:47 | 紅茶好きが勧める絶対に行っておきたい東京の紅茶専門店7つ http://t.co/Xxj4xU4v
(後略) 

follower/followee取得

# follower表示                                                                                                                
for n in tweepy.Cursor(api.followers).items():                                                                                
    print n.screen_name                                                                                                       
# 自分がfollowしてるひと表示                                                                                                  
for n in tweepy.Cursor(api.friends).items():                                                                                  
    print n.screen_name