ページ

2012-11-05

クソシーbotを更新した。[javascript,node.js,linux,twitter]


クソシーbotを更新しました。

僕は幾つかtwitterのbotを作っているのですが、今日はその中の一つであるクソシーbotを更新しました。
数ヶ月に一回のイベントです。
クソシーって言うのは面白いことをつぶやく僕の友人の名前からとりました。

今回の更新によって、つぶやきの種類が、275種類から558種類に増えました。

今日はそんな更新作業の流れを書いてみたいと思います。

登場人物は3人です。

  • クソシー
  • キャメシャン
  • ボク


過去のツイートを一括ダウンロード

まず、クソシーにtwilogから過去のつぶやきをXMLでダウンロードするように依頼します。
XMLはメールで送ってもらいます。
twilogってのは登録しとくと自分のツイートを全部記録してくれるサービスです。
twitterだけだと遥か昔に遡ることはできないのでこのサービスを使います。
メールでXMLが届いたらそのメールをキャメシャンに転送します。

面白さの純度を高める

キャメシャンにはクソシーのつぶやきの中に含まれている不要なつぶやきを除去してもらいます(Replyとか)。

キャメシャンにつぶやきを抽出してもらうと不思議なことにクソシーのつぶやきがjson形式になってメールで届きます。

このjsonは、まさに面白さの塊です。

何か高度なプログラムで作っているに違いありません。

Jsonをbotが理解できる形にする

このjsonを受け取ったら僕の出番です。
クソシーbotはjson形式を理解することができないので、jsonファイルを改行で区切られたテキストファイルに変換する必要があります。

これが私の仕事です。

まず、jsonをボットが稼働しているサーバにscpします。

そんでもって
cat siebenstars_twilog.json | node print_json.js > new.text
します。

siebenstars_twilog.jsonはキャメシャンから受け取ったjsonファイルです。

print_json.jsはjsonを改行で区切られたテキストファイルにするためのjavascriptです。
javascriptだとjsonが簡単に扱えるので楽です。

nodeはjavascriptの実行環境でprint_json.jsを実行しています。

解析結果はnew.textにリダイレクトしています。

ここで
less new.text
してちゃんと出来ているか確認します。

問題ないようなので
cat new.text >> ../siebenstars.text
してクソシーbotのつぶやきを追加します。

siebenstars.textはクソシーbotがつぶやく候補となるつぶやきが保存されているファイルです。

つぶやくタイミングが来るたびにこのフィアルの中からランダムにつぶやきを選択してつぶやく仕組みになっています。

おまけ

ちなみにクソシーbotはTwitterのStreaming APIを使って常にタイムラインを監視していて、特定のキーワードに対して1秒以内にリプライを飛ばす機能を有しています。
JanetterとかのStreaming APIを使っているクライアントを使用している人がそれに引っかかるとなかなかおもしろい事案が発生しています。


まとめ

  • 適材適所な分業による負荷の分散
  • 共同作業によるモチベーションの維持及び向上
  • 過去の作業はスクリプトにしておくと捗る
  • 無駄に高機能にすることで自己満足に浸れる
  • パイプしてドーン パイプしてドーン

0 件のコメント:

コメントを投稿