2014年4月9日水曜日

高専プロコン競技部門練習場にツイッターボットを導入したお話

競技練習場のツイッターボット(@KPCP2014)を作りましたー。

別にそんなに難しい話じゃないんですけどね。

一応、(自分なりに)お行儀よく書いてみたから記事にしておきます。

TwitterのAPIを叩くためのライブラリはPythonで有名なTwitterライブラリであるtweepy(https://github.com/tweepy/tweepy)を使いました。(競技場はPythonで書かれています)

ふつうにやった場合。
ー> HTTPの通信のレスポンスを返す間にTwitterのAPIにアクセスしてツイートする。


_人人人人人人人人_
> お行儀が悪い <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
だって、HTTPのレスポンスを返す間に他のところにHTTPリクエストを送るとかなんかエグいじゃないですか。
今回はツイートだけできればいいのでQueueにツイートをためておいて。Workerプロセスを立ち上げておくことでツイートを行う機構を作ってみました。

今回使ったQueueを作るシステムはRabbitMQを使いました。

今回作ったTweetBotシステムは
├── bot_client.py
├── bot_server.py
└── messages
    └── update_ranking.tpl

ツイートのJinja2のテンプレートをmessagesの中に配置します。(Jinja2なのはWeb側に使ってるフレームワークがFlaskだからです)
あとは、ツイートサーバとなるbot_server.pyを
nohup python bot_server.py &
みたいな感じで実行してやって。

ツイートを行いたいPythonスクリプトにて
import bot_client
bot_client.tweet(テンプレートファイル名, パラメータ...)
みたいな感じで関数を呼んでやればツイートを行うことが出来ます。

まとめ

いつもみたいに適当にツイート機能を実装してしまえばよかったんですけど、そろそろ、Python+Flask環境から簡単に構築できるツイートボットシステムが欲しかったので作ってみました。作った奴はまとめてgithubにあげてあります。(https://github.com/higumachan/python_tweet_bot)暇があったら見てみてください。

0 件のコメント:

コメントを投稿