イースター島

ポリネシア人もにっこり

自鯖録画システム「もあれこ」のアプリケーション部分

要件

  • ブラウザで操作
  • 番組表が見れる
  • 番組が検索できる
  • 録画予約できる
  • 録画したものを視聴できる

構成

  • webアプリケーション
    • nodejs + express + MongoDB
      使ってみたかったというだけの理由でこの構成。番組表・録画リストなどのUIを提供し、録画予約はmongoに記録。録画視聴はvideoタグで実現。 実験的に番組表表示にReact.jsを使ってみたりもした。残念ながらリアルタイム視聴は今のところできない。
  • バックエンド
    • nodejs + node-cron
      録画予約データを元に録画を行い、ffmpegでmp4にエンコードする。また、番組表の定期更新を行う。

番組タイトル問題

基本的に録画予約した番組は勝手に毎週録画されて欲しい。しかし見たところシリーズに対するユニークIDなどは存在しないようだ。

そこで毎週変わらないであろうタイトル部分を抽出し、新たに番組表に追加されたタイミングで自動的に録画予約する。例えば

【新】ハロー!!きんいろモザイク

であれば、【新】の部分を除外して「ハロー!!きんいろモザイク」を記録しておけば、あとはこの文字列をタイトルに含む番組を全て録画すればいい。

しかし、ここで度々失敗した。いくつか例を挙げると

月刊少女野崎くん「第5号『恋を「思い」「描く」男子。』」

サブタイは括弧で括られることが多く、“「”から“」”までの範囲をサブタイトルとみなして正規表現で除外していた。しかし野崎くんは括弧が多かったため除外に失敗し

月刊少女野崎くん男子。』」

となっていた。僕のなんちゃって正規表現は見事に打ち砕かれた。更に、逆のケースも存在する。

【新】TVアニメ「Fate/stay night[UBW]」

僕は諦めた。

別のパターン

【新】ローリング★ガールズ

が急に録画できなくなっていた。確認したところ

ローリング☆ガールズ

2話から星の色が変わっていた。あのさぁ・・・

できた

3ヶ月ほどバシバシコード書いてたらなんとか動くようになった。ブラウザのまま視聴可能(もちろん非公開) f:id:wmoai:20150805180412p:plain f:id:wmoai:20150805180425p:plain 手探り感あふれるソース github.com

実際自鯖で録画ってどうなのか

僕の場合、ハードウェアへの投資が約10万となってしまい、費用対効果は大敗北だろう。何でもかんでも詰め込み過ぎたのが敗因と言える。電気代は思っていたほど爆上げではなかった。

録画ミスはtorneの頃より体感少ないし、HDDは4T積んだので容量を気にすることはほぼ無く、どこでも見れるとかいう細々とした利点はあるが、今日日市販のレコーダーでもそれくらいできるのだろう。

結局のところ勢いが重要なので、好き勝手いじれて僕は満足だし、録画システムが欲しい人は大人しく市販の物を買うことをオススメします。