LoginSignup
0
2

More than 3 years have passed since last update.

GAE(python)でTwitter BOT作ってみた(めっちゃリファレンス付)

Posted at

完成品

Twitter BOT with GAE(python)

本投稿をするに至った経緯

先月からGAE(python)を仕事で使う機会が増えてきたけど、一からGAE(python)を使ってちゃんとしたアプリを作った試しがありませんでした(helloworldや公式チュートリアルに載ってるguestbookくらいしかなかった)。そこで、せっかくだしTwitter BOTを作ってみようと思いました(バッチ機能とか理解が薄かったため)。

内容は、League of Legendsと呼ばれる海外の有名なゲームにおいて、登録されたユーザーが最近対戦した試合に参加していた他のサモナーネームを自動でTwitterに投稿するBOTです。TwitterのOAuth認証はtweepyを使い、League of Legendsの試合結果やサモナー名は、RIOT APIで取得して結果をndbに格納しています。

実装にあたっての手順

  • Tweepyを使ってTwitterのOAuth認証を行なって、そのあとにmodelUserにTwitterのアクセストークンなどの情報を格納する
  • /registrationのフォーム画面にて自分のサモナーネームを登録し、RIOT APIを経由して取得したサモナーネームやアカウントIdなどをmodelTaskに格納する
  • taskqueue(push)を使って、modelTaskに含まれるaccountIdを使って直近の試合において参加したサモナーの名前をAPIから引っ張ってきて、その参加者を4名だけTwitterで自動投稿させる

しかし、上記の項目を実装するにあたって参考になるGAE(python)の実装例がほとんどないorあってもバージョンなどが古すぎて動作しない場合が多く、非常に苦労しました汗
そこで、今回は参考文献に余りあるほどの参考URLを載せました...!取り敢えず、自分がつまづいたところは全て網羅しているつもりなので、ぜひ参考にしていただければと思います。

また、Githubに実際の完成品のソースコードと使い方を載せてあるので、取り敢えず挙動確認がしたい方はGithubのREADMEを参考にして勉強などに役立てて頂けたらと思います。

参考文献

今回のBOTを作成する上で参考にした主なサイト
GAE/P+Tweepy+RIOT APIでTwitter BOTサービスを作る!(前編)

GAE/P+Tweepy+RIOT APIでTwitter BOTサービスを作る!(後編)

riot apiでアカウント情報を取得してみた

TwitterやRIOT APIのアクセスキーなどの取得方法
Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報

riot apiでアカウント情報を取得してみた

Tweepyのインストール方法に苦戦した時に見たサイト
Google App EngineのTwitter BotをFlaskとTweepyで作る

GAE上でサードパーティのpythonライブラリを導入するための方法Tips
Google App Engine (Python) においてサードパーティ・ライブラリを利用する方法

GAE/Py で "ImportError: No module named _winreg"が発生する 原因と解決策

setup.cfgを入れないと、libフォルダにpip installしてもエラーが吐くことが示されているスタックオーバーフロー

GAEに組み込みで入っているサードパーティライブラリ一覧表(app.yamlで入れられるライブラリ)

requirement.txtにまとめて記述してpip installしたい人はこちらを参考にしてください

実装する上で苦戦した時に助けになったサイト
requests関連の挙動エラーは、requests_toolbelt.adapters.appengine入れれば解決する

TweepyのOAuth1a認証を実践するときに参考にしたURL

バッチ処理のときに同じツイートは連続で自動ツイートできなくてエラーを吐くので、検証のときに注意

TwitterのOAuth認証について知りたい方
一番分かりやすい OAuth の説明
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -

まとめ

今回は、GAE(python)を使ってTwitter BOTを作成してみました。実装例が余りなかったこともあり、taskqueueやndb周りの細かい仕様などは公式のリファレンスと格闘しながらでしたが、なんとか実装までできました。

もしも仕事や趣味でGAE(python)を使う機会がある方は、ぜひこちらを参考にして実装を進めて理解を深めていただけたらと思います。研修用にもぜひ活用してください(Githubからクローンするときはぜひstarをつけて下さい!)

初期実装が終わった際に思った感想

  • ルーティングはroutes.pyで一つのファイルにまとめるべきだった
  • memcacheを使ってもよかったかもしれない
  • フロント画面を綺麗にしたかった
  • ndb周りの理解が思った以上に不十分だった
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2