0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NHK の LIVEニュース RSS に情報が入ったら TC001 で通知する

Posted at

NHK は各種 RSS を用意している

NHK オンラインはジャンルごとにニュースのヘッドラインを RSS 化して提供している。

この中でも LIVE ニュース RSS は、緊急度の高いニュースがあった時のみ情報が入るようになっている。

MeePet の Slideshow でこの内容が表示されるようにしているが、これと合わせて TC001 の画面や通知音を使って速報が入ったことを知らせるようにしてみる。

XML ノードを使って配列に入れる

ノード図は以下の通り。
nhkrss1.png

RSS の配列化には XML ノードを使う。

http request は UTF8 文字列で出力
nhkrss2.png

XML ノードの設定は特にしなくてよい。
nhkrss3.png

このように配列化されて msg.payload に渡される。
nhkrss4.png

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 ニュースが継続していても通知しない)。

function
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 で模して使っている。

/MELODIES/justin.txt
justin:d=4,o=5,b=100:16c#6,16p,16c#6,16p,p,16c#6,16p,16c#6,16p,p
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?