難しそうだなーとか思ったらライブラリあったので使ってみたら簡単だった。
ぱいそんまじめに触り始めて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情報が変更されたのを確認したら ConsumerKey と ConsumerSecret をあとで使うので控えておく
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)
こういう記事書いたことないので内容薄い...