Subscribed unsubscribe Subscribe Subscribe

全裸botの全貌

全裸bot(@zenra_bot)について。
一応、完成ということにしたので、機能や工夫した点などをまとめておきます。
今後GAE/PyでTwitter botを作ろうとしている方々の参考になれば。
またご指摘やアドバイスをいただけると嬉しいですが、もうだいぶ情熱が失せてきているので反映する可能性は低いです。ごめんなさい。

ソースコード

常に最新版をGithubにあげてあります。
GitHub - sugyan/Zenra: 全裸にする

follow/remove

GAEでTwitter botを作った - すぎゃーんメモ
ここで書いた、Datastoreとcronを使った自動follow返し&remove機能はずっと使い続けています。
ただ、自動フォロー返しするのに必ずこれをやる必要もなくて、この記事へのid:yuroyoroさんのブクマコメントにある通り、1回のリクエストの中でfollower, friendsのidsを取って、setの差分を使ってfollow/removeする、という仕組みでも全然問題ないと思います。
はてなブックマーク - yuroyoroのブックマーク - 2009年8月17日
yuroyoro / yuroyoro-bots / source / lib / webapi / twitter4gae.py — Bitbucket
自分はそれを思いつかずにDatastore使う方法で書いてしまって、書き直すのが面倒だったからそのまま使っているだけです。

文章を全裸にする

PythonからYahoo日本語係り受け解析で形態素解析をする - すぎゃーんメモ
Pythonから全裸で形態素解析をする - すぎゃーんメモ
全裸botのzenrize処理を改良した - すぎゃーんメモ
と、色々辿って現時点の状態に至っています。
単純に動詞の前に挿入するだけだと不自然な文章になってしまう、ということで少し工夫して場合分けして処理するようにしてあります。

followerの発言を拾って全裸にしてpostする

発言頻度に関しては、下記記事の通り。これまたid:yuroyoroさんに感謝です。
全裸botはタイムラインの早さに合わせて呟く - すぎゃーんメモ
ただ、最近はfollowerが増えすぎた影響で1分程度でfriends_timelineに50件が溢れるようで、頻度が高くなりすぎているかもしれないです。要調整?
また、非公開発言やRT、ハッシュタグのついたものなどを全裸にしないようフィルタリングをしたりして、いちおう気を遣っています。
http://github.com/sugyan/Zenra/blob/master/python/zen-ra/bot/twitter.py#L194-211

ひとりごと

全裸botは3時間に1回、ワケの分からないひとりごとを呟きます。
これはStatusesというひとりごとを格納するModelを用意しておいて、そこからEntityをランダムに選択してpostするだけです。
ひとりごとの内容は自分が気が向いたときに管理コンソールのData Viewerから編集しています。デプロイした直後だけはData Viewerに現れないのでRemore APIを使ってEntityを格納したような気がします。

その他の修正など

全裸botの修正作業 - すぎゃーんメモ
この時点のcommitで、最終バージョンとしています。

最後に

それなりに完成形に達しているので、これをコピーして数行書き換えてやるだけで、質の高いbotを20分くらいで作ってしまうことができます。
頑張れば、内部で複数のアカウント情報を所持して「followerの発言を改変postするbot」という機能をもつbotを同時に数種類動かすフレームワーク的なものを作れるかも知れないな、と思ったのですが、個人的にそんな下らないbotは全裸botだけで十分だと思っているので作りません。