NHK は各種 RSS を用意している
NHK オンラインはジャンルごとにニュースのヘッドラインを RSS 化して提供している。
この中でも LIVE ニュース RSS は、緊急度の高いニュースがあった時のみ情報が入るようになっている。
MeePet の Slideshow でこの内容が表示されるようにしているが、これと合わせて TC001 の画面や通知音を使って速報が入ったことを知らせるようにしてみる。
XML ノードを使って配列に入れる
RSS の配列化には XML ノードを使う。
このように配列化されて msg.payload
に渡される。
LIVEニュースが無い時とある時の RSS の違いは、 rss.channel[0]
に含まれる要素の数で検知できる。
ニュースが無い時はチャンネル概要の4つのみ(title, description, link, lastBuildDate)、ある時はニュースの数だけ item が追加されるので5以上となる。
TC001 は 日本語を表示することができないため、 LIVE ニュースの入電有無の判定であればこれを使うだけで十分である。
要素数はそのまま .length
を使って取れないので、 Object.keys()
を使う。
code 変数をフラグとして利用し、 気象庁サイトの注警報情報を取得し、 Ulanzi TC001 で表示させる でやったようにコンテキストを用いて flow.nhklive
に値を保存する。
前回の状態が 0 (LIVEニュースが無い)で今回 LIVE ニュースありの場合のみ通知をし、状態を 1 にする(次に LIVE ニュースが継続していても通知しない)。
var rss = msg.payload;
var code = msg.code;
var count = Object.keys(rss.rss.channel[0]).length;
if (count > 4) {
if (code == 0) {
msg.payload = {"text": "Breaking News", "background": "#666600", "blinkText": 1000, "sound":"justin", "hold": true};
msg.code = 1;
} else {
msg.payload = "";
msg.code = 1;
}
} else {
msg.payload = "";
msg.code = 0;
}
return msg;
今朝はユン大統領絡みで2度LIVEニュースが更新されたが、2回ともきちんと通知された。
通知音
おまけであるが、通知音は某テレビ系列局の速報音を rtttl で模して使っている。
justin:d=4,o=5,b=100:16c#6,16p,16c#6,16p,p,16c#6,16p,16c#6,16p,p