google app engineを使ってみる
- fulline
- 2016年8月10日
- 読了時間: 3分
前回Tweepyによるtwitter APIの使い方が大体分かったので、次は自分が求めているツイートを自動でリツイートするbotの作成を行っていきます。
今回のbot作成からは、「google app engine(以下gae)」というwebサーバを利用していきたいと思います。無料で利用可能の割に個人で利用する分には十分事足りるサービスを受けることができるので、ちょっとしたサービスを作る分にはちょうどいいと思います。
gaeについてはこちらの方の説明がとても分かりやすかったので、ぜひ読んでちょっと試してみてください。
さて、では実際にbotを作っていきます。
botの仕様は「TgLのタイムラインに表示される試合相手を募集しているツイートを自動でリツイートする」という風にします。
Tweepyには、継続的にツイートを取得し続ける「Streaming API」と実行した時のみツイートを取得する「Rest API」があるのですが、まだ「Streaming API」の使い方がよく分からないので、今回は「Rest API」を一定タイミングで断続的に実行する形をとっていこうと思います...というか、この方法が一般的みたいですね。
ではまず、「試合相手を募集しているツイートをリツイートする」というプログラムを作ります。(ここではretweet.pyとします)

ここで1つ気をつけて欲しいのは、「tweepy」及び「twpy.py」を同ディレクトリ内に入れておく必要があることです。これらは現在利用しているPCに存在しているだけで、外部サーバには存在しないためです。しっかりと入れておかないと、「そんなライブラリなんてないよ!」と言われてしまいます。今回に限らず、特定のAPIを使う時は基本的にgaeディレクトリにも追加する必要があるということにご注意ください。
話は戻りまして、gaeではテキストファイルなどの書き換え及び読み込みが出来ないので、googleデータストアを利用しています。
データストアにはgoogle cloud platformからログインし、画面左上の「三」マークにある「データストア」を選択します。その後「エンティティの作成」を選び、「種類」「キー識別子(カスタム名)」「プロパティ」をそれぞれ設定して「作成」ボタンを押せば設定完了です。
ちなみに今回の場合は、種類:LastTweet、キー識別子:LAST、プロパティ:名前[twID]/タイプ[整数]/数値[0]としています。
次に「main.py」で「RetweetHandler」を呼び出せるようにします。

これで、SDKでデプロイした後に「http://〇〇.appspot.com/retweet」を開きます。
特に何も表示されなければ上手くいってると思います。もし、上手くいっているか確認したい場合は、"試合相手募集"の部分を別の言葉に変えてみて実行し、ちゃんとリツイートされたか確認してください。
ここまでいけば、あとは「/retweet」が定期的に自動で動くようになれば完了です。
ここで新しく「cron.yaml」を作成します。

これを追加するだけで5分ごとに一度RetweetHandlerが動くようになります。
ここで5分で設定している理由は、tweepyの「Rest API」で取得できるツイート数が15分に800ツイートまでというAPI制限があるため、大体これくらいのスパンかな??という感じです。タイムラインの流れが早い方とかは、もう少し間隔を短くするとか対策が必要かもしれませんね。
※もし、デプロイする時にSDKで上手くいかない場合は、ターミナル(Windowsならコマンドプロンプト)を使いましょう。
カレントディレクトリを「main.py」のあるディレクトリにし、「appcfg.py update .」と実行してみてください。僕は上手くSDKを使えなかったのでこの方法でデプロイしています。
Commentaires