読者です 読者をやめる 読者になる 読者になる

pythonのTwitterライブラリ使用メモ

開発

難しそうだなーとか思ったらライブラリあったので使ってみたら簡単だった。

ぱいそんまじめに触り始めて3日目くらいなので初心者です

環境

Python2.7.3
windowsXP-32bit-SP3

ライブラリ

Tweepy 本題
easy_install tweepyインストール用
webbrowser デフォルトで入ってる

Developerの登録

登録しないと始まらないのでとりあえず登録する

登録したらSettingタブの画面で以下を書きましょう

Application Details

基本的な情報3つを入力する(最初は適当で良い)

Application Icon

アイコン。必要なら設定

Application Type

これの一番上にあるAccess
Read only TLの取得などのみ
Read and Write 上に加えてプロフィールの変更、ツイートの許可
Read, Write and Access direct messages 上に加えてDMの取得許可
今回はツイートまでやるのでRead and Writeを選択

CallbackURLに関してはツイート送信段階で"401..."などのエラーが出たとき適当なURLを記入すれば良い(よくわかってない)

最後のチェックボックスは一度このアプリケーションを認証していたら再度認証を必要するかどうか。Yesならチェックを入れる

Organization

無視

DetailsタブでSetting情報が変更されたのを確認したら ConsumerKeyConsumerSecret をあとで使うので控えておく

OAuth認証

developerに登録してもConsumerKey,ConsumerSecretを使ってAccessTokenとAccessSecretを取得しないと何もできない。
なので取得するためにOAuth認証をします。
本当はすごく面倒な処理とか必要なんだけど今回はTweepyが全部やってくれるっていう・・・。

OAuth認証についての詳細はきっと後日記事を書きます。

# coding: UTF-8
 
import tweepy
import webbrowser
 
consumer_token  = "ここに自分のConsumerKey"
consumer_secret = "ここに自分のConsumerSecret"

#OAuth認証で使うハンドルを宣言
auth=tweepy.OAuthHandler( consumer_token, consumer_secret)
#ユーザにアプリケーションを認証させるためのURL取得
pin_url=auth.get_authorization_url()

#webbrowser.openによって既定のブラウザでpin_urlを開く
webbrowser.open(pin_url)
#Twitterによって発行されたpinキーを入力させる
verifier=raw_input('PIN: ').strip()

#pinキーを使ってAccessTokenをTwitterに発行してもらう
auth.get_access_token(verifier)

#取得したAccessToken,AccessSecretをわかりやすいように格納しておく
access_token=auth.access_token.key
access_secret=auth.access_token.secret
#print access_token
#print access_secret

#ためしにユーザー名を取得
username=auth.get_username()
#ユーザー名を出力
print 'username:'+username

実際にTweet

上のコードに続けて書くことができるので続けて書く

tweepyのAPIによってツイートをするのでtweepy.APIに認証した情報を投げてハンドルを取得

api=tweepy.API(auth)

post_strにツイートする内容を入力

post_str=raw_input('tweet?:').strip()

update_statusでツイートを送信(shift_jisにdecodeで指定しなきゃ動かなかった(?))

api.update_status(post_str.decode("shift_jis"))

たぶんこれで送信完了するはず。
しかなったら見なおしてみてください。

あと同じツイートの連投ができないので送信部はしっかり例外処理入れることをおすすめします。

try:
	api.update_status(post_str.decode("shift_jis"))
except tweepy.error.TweepError, e:
	print str(e.response.status)
	print str(e.response.reason)

こういう記事書いたことないので内容薄い...