2011-12-30
Google App Engineで動くTwitterのBotを作りました
プライベートのタスクがひと段落したので、ちょこちょこっとGAEで動くTwitterのBotを作ってみました。
Botのログのみたいな画面ですが、HTMLで動いたことを確かめることができます。
http://arsenaljpfans.appspot.com/
# 現在自動フォロー停止中なので単なる検索システムになっています・・・。理由は後述
追記:Twitterでの自動フォローは利用規約違反だそうです。
自動フォローとフォロー解除
ほとんどのTwitterユーザーは、新しくフォローしてくれた人のプロフィール や最近のツイートを見ます。大量に自動フォローされると、そのような作業が煩わしくなり、Twitterの楽しみが半減してしまいます。
Twitter が許可している自動フォロー行為は、自動フォロー返し(フォローしてくれたユーザーをフォローする)のみです。自動フォロー解除も許可していま せん。
https://support.twitter.com/articles/237504-
Twitterの中の人 @yusukey さんに教えていただきました。
@lino_s あ、自動フォローはAPI規約違反です・・
2011-12-30 21:09:12 via YoruFukurou to @lino_s
@lino_s まーアグレッシブにフォローしなければ凍結はされないとは思いますが・・・。フォロー(解除)で自動化がokなのはフォロー返しのみです。 URL URL
2011-12-30 21:30:02 via YoruFukurou to @lino_s
@lino_s ちなみにTwitter APIポケットリファレンスだと3章(REST API) - REST APIのレートリミット - フォロー/フォロー解除(P86)に書いてあります(宣伝) URL
2011-12-30 21:44:49 via YoruFukurou to @lino_s
アプリの仕様としては、次のような感じです。
- arsenalまたはアーセナルを日本語指定で検索する
- すでにフォローしている人じゃなければ、フォローする
- 現在自動フォロー停止中
- アカウントは @ArsenalJPFans です。
このBotはアーセナルのファンじゃなくてもフォローしてしまいますが。
いろいろブログにプログラミングHow toを書こうと思ったのですが、めんどくさくなったので要点だけをまとめておきます。
コードはGithubで公開しているので、そちらを読んでください・・・。
https://github.com/linosatoh/ArsenalJPFansTwitterBot
GAEの開発環境
Python 2.5にGAE SDKが必要です。
Python 2.5系は2.5.6が最新なんですが、Windows Binaryがなかったので、2.5.4を入れています。
GAEのSDKはGAEの公式からダウンロードしてインストールします。
Python-twitter
TwitterクライアントAPIにはPython-twitterを使いました。
Python-twitterを使うには以下のライブラリが必要です。これらをインストールする前にはsetuptoolsも必要です。
- http://cheeseshop.python.org/pypi/simplejson
- http://code.google.com/p/httplib2/
- http://github.com/simplegeo/python-oauth2
TwitterのOAuth
TwitterのBotを作るときはOAuthの認証がはまりどころですね。
最初にTwitter Developersで認証トークンを払い出したときにRead Onlyにしてしまって作り直しました。
まぁ、Webブラウザからポチポチできるので簡単ですが。
GAEの永続ファイルが使えない
GAEではファイルが使えないので、Twitter-Pythonのキャッシュが使えなかったり、sys.setdefaultencodingの前にゴニョゴニョしないといけなかったり、注意が必要です。
GAEのDjango テンプレート
個人的に始めてDjango のテンプレートを使ったので面白かったです。
比較的簡単に使えますね。ディクショナリをリストに入れて、初期化忘れたりして悩んだり・・・。
まぁ、テストコード書けよって話なんですが。
TwitterのAPIで遊んでみるときは、この本の評判がいいみたいです。
なんといってもTwitterの中の人 @yusukey さんが書いてますし。
技術評論社
売り上げランキング: 8618
本屋で立ち読みはしたんですが、買ってはいないので、書評は控えさせていただきます。
クリック: 124回
- 62 http://t.co/O7xe3usE
- 10 http://www.google.co.jp/url?sa=t&rct=j&q=自動フォロー REST+API 規約&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/lino/20111230/1325233421&ei=MHANT9D5JoLSrQedxcC
- 6 http://www.facebook.com/l.php?u=http://d.hatena.ne.jp/lino/20111230/1325233421&h=tAQGqNsEKAQEhMC3uLxnAFmNwDsDFlaaWJS92ZYhtbPRuNA
- 4 http://twitbeam.jp/extsite.php?guid=ON&url=http://t.co/O7xe3usE
- 4 http://www.google.com/url?sa=X&q=http://d.hatena.ne.jp/lino/20111230/1325233421&ct=ga&cad=CAcQARgBIAIoATAAOABA7oP39wRIAlgAYgVqYS1KUA&cd=bYWiDSFYODM&usg=AFQjCNEwgkeiGrj4wJsJ3zoOMyqDPTJ9Lg&utm_source=dlvr.it&utm_medium=twitter
- 4 http://yubitter.com/tools/gw?u=http://d.hatena.ne.jp/lino/20111230/1325233421
- 3 http://reader.livedoor.com/reader/
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=google app engine twitter bot&source=web&cd=4&ved=0CEYQFjAD&url=http://d.hatena.ne.jp/lino/20111230/1325233421&ctbs=qdr:y&ei=dyEYT6M8iv-YBbOC-bMK&usg=AFQjCNFeXPNEmovWsXHT3i0eM9yloeTbtw&sig2=ty
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=google app engine&source=web&cd=7&ved=0CHEQFjAG&url=http://d.hatena.ne.jp/lino/20111230/1325233421&ei=NpEAT8OhMMnUmAX68LyEAw&usg=AFQjCNFeXPNEmovWsXHT3i0eM9yloeTbtw&sig2=VAjDPgzcFGY59sBaaGQVBQ
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=twitter フォロー自動化 規約違反&source=web&cd=3&ved=0CDcQFjAC&url=http://d.hatena.ne.jp/lino/20111230/1325233421&ei





