nco-pocket作りました

外出先でもNsen見たい欲が高ぶったので作りました

nco-pocket

できること

今のところコメントとGood/Skipの送信, Nsenで放送中の音楽の再生ができる。 リクエスト送信はそのうち対応するつもりだけどちょっとしばらくはたて込みそうなので辛そう。

実装

内部のコードはできるだけNcoから使い回すようにしたけど、さすがにNode.js直に叩けるElectronとモノホンのブラウザで同じコードを動かすのは無理で レンダラ側のelectron-kitに依存していた部分をブラウザ向けに書きなおしたり、Nsen・ニコニコとの通信部分のラッパーを書いたり、スマホ向けにUI調整したりした。

Nsen・ニコニコとの通信部分はすべてサーバー側のNode.jsに移植して、あとはWebSocket(Socket.IO)を介して通信するようにしています。 リアルタイム通信 + node-nicovideo-apiがあるのでNode.js一択だった。

この時、Socket.IOのイベント名の名前付けと管理がすごく面倒だったんだけど、そういえばSocket.IOってnamespace使えたよな…… イベント名をURLみたいな"/"区切りにしてゴリゴリ管理してた……うゎ……

放送中の音楽の再生は、Node側で放送中の動画の変更を監視して、次の動画のプリロードを検知したら動画をダウンロード + エンコードするようになっている。 DLとエンコが早ければ実際に動画が再生される頃にはエンコードが終わる。 もし再生までに間に合わなかった時は、エンコードが完了したらクライアントにWebSocketで通知して、ブラウザ側からHTML5 Audioで読み込ませるようにしている。

サーバーのログを見た感じ多少使ってもらえてるみたいなので嬉しい。