twitter client(2)
結局、python-twitterでは、認証機能をそのままでは利用できないようで、認証を使えるtweepyという別のモジュールを利用したのでそのメモ。
ざっくりとOAuthの登録、tweepyのインストール、tweepyでOAuthを利用してtwitter APIをたたいてtweet発信/tweet取得、の流れ。
基本的に下記サイトを参考に作業を行った。
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