USTREAMのライブ情報を流すbotを公開しました

 livernal.netのバージョンアップ計画の一環なのですが「ライブ」をTwitter上でサポートするbotを作ってみました。
 現在はUSTREAM専用で、以下の機能があります。

  1. 日本語(と判断される)ライブがスタートしたのを検知して流す
  2. 盛り上がっているライブを見つけたら報告(盛り上がりが持続している場合は10分間隔)
  3. 「ライブ予告。タイトルは○○。開始は○○。チャンネルは(短縮アドレス)。」とリプライするとその時と30分前、開始時に告知
    1. もし、何か詳細を示すURLがあれば「ライブ予告。タイトルは○○。開始は○○。チャンネルは(短縮アドレス)。詳細は(URL)」とつけるとその分も一緒に告知
  4. 「ライブ開始。タイトルは○○。チャンネルは(短縮アドレス)」とリプライすると開始を告知
    1. こちらも同じくもし何か詳細を示すURLがあれば「ライブ予告。タイトルは○○。開始は○○。チャンネルは(短縮アドレス)。詳細は(URL)」とつけるとその分も一緒に告知

 どうぞお使いください。

技術的背景

動作環境

 botそのものはGoogle App Engine上で動作しています。一番大変だったのはUSTREAMからの情報取得で、ちょっとアクセスの頻度が高いとすぐにアクセスを拒否される上に短縮アドレスから直接情報を得る手段が無いので、を使ってそこそこの速さを使ったアクセスを作る必要がありました。

開始・日本語判定

 開始と日本語判定はソーシャルストリーム機能を利用しています。具体的にはtwitterで「/ustre.am」をlang=jaで検索して判断。クエリーが「ustre.am」でないのがポイントで、この辺はなんかインデックスの生成がおかしいらしく、残念ながら呟いている人の数がすくないマイナーなライブではライブ開始をキャッチできるか、そしてそれがすぐ検知できるかどうかは非常に微妙です。

盛り上がり判定

 盛り上がり判定は、チャンネル個別の短縮アドレスをクエリーにして検索して「一分間にどれだけ呟いているか」をベースに判断しています。こちらもTaskQueueを使うことで各チャンネルごとに専用のクローラーが動く形式になっています。