環境の構築さえできてしまえば問題無いんだけど、OAuthだったり、 tweetpyだったり、python-twitterだったり、その他いろいろだったり ライブラリが多すぎてどれを参考にしていいかわからなくなった人向けに。
今回はpython-twitter ver0.8.5を使います。 (執筆時点では1.0が出てるけどこちらのほうが解説充実しているため)
ダウンロード
python-twitter
https://code.google.com/p/python-twitter/
右のDownloadメニューからver 0.8.5をダウンロード。 python-twitterは、他に3種類の依存関係のあるモジュールをインストールしなければならない。 それぞれダウンロードして解凍しておく。
simplejson
http://cheeseshop.python.org/pypi/simplejson
httplib2
http://code.google.com/p/httplib2/
python-oauth2
http://github.com/simplegeo/python-oauth2
各モジュールのインストール
ダウンロードするものを間違えない限り、大体は、解凍したフォルダ内にある setup.py を実行することでインストールできる。 管理者権限が必要なので注意。
bash1sudo pthon setup.py install 2
引数をinstallではなく、buildにすることで、構築と配置を別々の作業に切り分けることもできるらしい。
OAuth認証のための【鍵】を取得する
こちらにアクセス
twitter developpers https://dev.twitter.com/
ログインしたら画面右上のアイコンをクリックし、My Applicationsを選択 ここでこれから作成するTwitterアプリケーション(=bot)の登録をする。
Name
アプリケーションの名前。あなたの名前ではありません。
Description
Twitterで外部サービスを使う時に、「このアプリを認証する」という画面を見かけたことがあるかと思います。 そこに出てくる説明文です。
WebSite
もしホームページやブログをお持ちなら
Callback URL
上手く作成できればこの画面に飛ぶ。
ここがTwitter側で自身のアプリケーションを管理するページである。 ご覧の通り、鍵もここに記載されている。
このままだと、アプリケーションはRead-onlyとなっており、 こちらから行えるのはTLやユーザー情報の取得だけで、ツイートの投稿やフォローなどはできない。
上部にあるsettings
タブにあるメニューを見れば、どこを編集すればいいかわかるはず。
Detailsタブに戻り、ページ下部にある Create my access token をクリック これで、
- Consumer Key
- Consumer Secret
- Access Token
- Acccess Secret
OAuth認証に必要な4つの鍵が揃った。 これらは外部に漏らさないようにすること。
指定ユーザーのツイートを取得し、ランダムにつぶやく
必要なモジュールをインストールし、 鍵も取得できたところで、いきなりソースコード貼っつけて解説する。
python1 import twitter,t_key,random 2 3 consumerKey =t_key.dict['cons_key'] 4 consumerSecret =t_key.dict['cons_sec'] 5 accessToken =t_key.dict['acc_token'] 6 accessSecret =t_key.dict['acc_sec'] 7 8 api = twitter.Api(consumerKey,consumerSecret,accessToken,accessSecret) 9 10 tlAry = api.GetUserTimeline('kill_in_sun',count=100) 11 tweetlist=[] 12 13 for s in tlAry: 14 if s.text[0] != '@': 15 tweetlist.append(s.text) 16 17 api.PostUpdates(status=tweetlist[random.randint(0,99)]) 18
2行目
python-twitterでは、twitterモジュールとしてインポートしている。
4行目から7行目
先ほど取得した認証鍵を予め別ファイルに格納しておき、 インポートしてから格納している。
9行目
注意して貰いたいのは、古い技術ブログに twitter.Api(username=xxx,password=xxx)といった形の認証方法を記述しているものがあるが、 この認証方式は随分前に廃止になっており、使うことは出来ない。 現在のOAuth認証では、
python1tlAry = api.GetUserTimeline('kill_in_sun',count=100) 2
このようにして、4つの鍵をパラメータとして渡す必要がある。
11行目
python1tlAry = api.GetUserTimeline('kill_in_sun',count=100) 2
GetUserTimeline()
このメソッドで指定したユーザーのタイムラインが取得できる。 取得したデータはオブジェクト型として戻り値が返される。
15行目
python1tweetlist.append(s.text) 2
text パラメータが、実際の「つぶやいた内容」である。 先頭に[@]が付いているものは公開リプライになってしまうため、取得しないように弾いている。
16行目
python1tweetlist.append(s.text) 2
今回は、リストを用意し、countで指定した分だけ格納するようにしている。
18行目
python1api.PostUpdates(status=tweetlist[random.randint(0,99)]) 2
PostUpdates()
status=[文字列] ツイートするメソッド。 ご覧のとおり、randomを使い、100件取得したツイートの中から適当に選び、ツイートしている。
今後やるべきことメモ
- リプライがあった場合に対応
- 一度ツイートしたものは以後、ツイートしないようにする
- 自動フォロー返し
よかったらシェアしてください!