ニコ生アラート.py を作ってるよ
ニコ生アラート(本家)API のクライアントをPythonで作ってます。 作ってるのは次の2種類。
- ニコ生アラート.py - ニコ生アラート(本家)APIから情報を取得するライブラリ
- ニコ生アラートIRC.py - ニコ生アラート.pyから取得した情報をIRCに投げるソフト
直接ダウンロードしてもいいし、こちらからもどうぞ。
IRCは irc.fuktommy.com の #nicolive で試験運用しています。
APIの使い方はこんな感じ。
- GetAlertInfo APIから、コメントサーバーを案内してもらう。
- コメントサーバーに接続する。
- loop: コメントサーバーから
基本情報(番組ID, コミュニティID, 生主ユーザーID)が送られてくるので、
- 詳細情報が不要なら無視する。
- GetStreamInfo APIから 番組の詳細情報(番組タイトル、コミュニティ名等)を取得する。
基本情報、詳細情報ってのはいまここで名付けました。 基本情報だけならPUSHで送られてくるのですが、 詳細情報を取得するには都度APIにリクエストしないといけません。 負荷についてはよくわかんないのだけど、 全番組について詳細情報の取得をしたらまずいのかしらん。 そんなわけで、IRCボットの方は詳細情報を取得するのに条件をつけてたりします。 ニコ生アラート.py はフィルタリングとは別のレイヤです。
ニコ生アラート.py はPythonの得意なイテレータを使うようになっていて、 新しく始まった番組がループの変数として次々取得できるという、 けっこう格好いいものになっています。
困ったこと。 仕様がよくわからん。 なんかGetStreamInfo APIがエラーを返してくることがあって、 一度そうなると基本復活できなくて、 GetAlertInfo APIからやり直すとうまくいくことがわかったのだけど、 よくわかんない。 本家クライアントは「コメントサーバーから切断されました」だっけか、 そういうメッセージを出すのだけど、 コメントサーバーから切断されるときにどうなるのかわかんない。
んで僕の弱点で、仕様を手探りしながらだとテストを書けないんですね。 かつネットワークアプリなのでモックを使わないとテストが書けなかったりして、 まあ後付けでテスト書くかねえ。 手作業であれこれやったわけでもないので、何が起こるか謎ですよ。 これはひどい。
面白いかも、って思ったこと。 ニコ生アラートによって視聴形態って大きく変わるんですね。 Webのトップページを眺めるよりも、 アラートで番組開始を感知してすぐ表示すると。 じゃあ、そのアラートが全番組について表示するようになったらどうなるのか。 今はやってないんですけど、 開始した全番組をIRCに投げると、読みきれない程の情報になるのですけど、 これが面白い。 なんかこう、負荷のかからないような方法で流せないものかなあ。 公式のWebサービスとかで何かできないんかなあ。