Node.jsでnasne APIのwrapperを作った

mtane0412/nasne-wrapperというnasne APIを叩くwrapperを作ってみました。

やりたかったこと

SONYのHDDレコーダーのnasneで地上波とBSを撮っているのですが、Torne mobileにはnasneの残りHDD容量のアラートなどの機能がありません。いつでも見れるからとうっかり放置していたらなんと容量がパンクしてプリキュアの録画に失敗するという痛恨のミスを犯してしまったので過ちを二度と繰り返さないためにSlackにnasneの情報を自動でポストするようにしました。

nasne APIについて

nasneは非公式ですがAPIがあるのでこれで情報を取得できます。nasneのAPIについては以下のサイトを参考にさせていただきました。

実装について

nasneのAPIを叩くのにnaokiy/node-nasneがありましたが、自分の環境だとうまく動かなかったのでNode.jsのお勉強もかねて自分で書いてみることにしました。実装やエンドポイント一覧はnaokiy/node-nasneをかなり参考にさせてもらいました。

非同期の処理でかなり悩みましたが、ES6のPromiseを使ってみました。ES6楽しいよES6。

ゆくゆくは自分でパケット解析もしてみて、できれば予約や削除も自動でできるようにしてみたいです。

GASに飛ばしてSlackに通知する

どんな感じで使ってるかというと、ローカルのRaspberry Pi Zero Wでnode-cronとforeverで走らせて必要な情報を定期的にGASにPOSTしてます。Piから直接シートやSlackにPOSTしてないのは単にGASのdoPostの使い方を試してただけです…。nasneから取得したjsonはGASにpostしてスプレッドシートの録画リストに同期、新着録画があったり残りHDD容量が少ないとSlackにpostします。

トルネフかわいいよトルネフ。

Raspberry PiはGoogle Homeに喋らせるときとかにWebサーバー立てるし、Slackからインタラクティブに操作できたほうが面白そうなのでnasneもexpressで書いちゃおうかなともなんとなく考えています。

とりあえずNode.jsとES6好きになれたのでめでたしめでたし。