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

Masa / Lino Blog

Masanori Satoh ( Masa / Lino ) の徒然ブログです

Google App Engineで動くTwitterのBotを作りました

Python Google

プライベートのタスクがひと段落したので、ちょこちょこっとGAEで動くTwitterBotを作ってみました。


Botのログのみたいな画面ですが、HTMLで動いたことを確かめることができます。
http://arsenaljpfans.appspot.com/
# 現在自動フォロー停止中なので単なる検索システムになっています・・・。理由は後述

追記:Twitterでの自動フォローは利用規約違反だそうです。

自動フォローとフォロー解除

ほとんどのTwitterユーザーは、新しくフォローしてくれた人のプロフィール や最近のツイートを見ます。大量に自動フォローされると、そのような作業が煩わしくなり、Twitterの楽しみが半減してしまいます。

Twitter が許可している自動フォロー行為は、自動フォロー返し(フォローしてくれたユーザーをフォローする)のみです。自動フォロー解除も許可していま せん。

https://support.twitter.com/articles/237504-

Twitterの中の人 @yusukey さんに教えていただきました。


アプリの仕様としては、次のような感じです。

  • 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も必要です。

TwitterのOAuth

TwitterBotを作るときはOAuthの認証がはまりどころですね。
最初にTwitter Developersで認証トークンを払い出したときにRead Onlyにしてしまって作り直しました。
まぁ、Webブラウザからポチポチできるので簡単ですが。

GAEの永続ファイルが使えない

GAEではファイルが使えないので、Twitter-Pythonのキャッシュが使えなかったり、sys.setdefaultencodingの前にゴニョゴニョしないといけなかったり、注意が必要です。

GAEのDjango テンプレート

個人的に始めてDjango のテンプレートを使ったので面白かったです。
比較的簡単に使えますね。ディクショナリをリストに入れて、初期化忘れたりして悩んだり・・・。
まぁ、テストコード書けよって話なんですが。


TwitterAPIで遊んでみるときは、この本の評判がいいみたいです。
なんといってもTwitterの中の人 @yusukey さんが書いてますし。

本屋で立ち読みはしたんですが、買ってはいないので、書評は控えさせていただきます。