NHKの番組表APIを使って、興味のあるキーワードを含む番組情報を抽出して通知するプログラムを公開します。同じ記事を、誰かに使ってもらえればと思い、僕のガジェット向けブログにも上げているのですが、このAPIを使ったひとつのサンプルとして参考いただければとここに思い上げます。
コードはGitHUBのGistsに上げています。
> smallmake/nhkkw.rb
(QiitaではGistのembedはできないのでリンクです)
##コードの説明
コードの中の以下の各値を設定すればとりあえず動くはずです。
#####NHK_API_KEY
NHK番組表APIのサイトで、自分のアプリ用にAPIキー(Program List API)を生成して入手してください。APIキーは "doksoHhdwh8shPsd6dsJshdjsjhsmrhdw"(テキトー) みたいな感じの文字列です。ENV[] を使って環境変数から取るようにしています。
#####GMAIL_APP_USERNAME, GMAIL_APP_PASSWORD, GMAIL_ADDRESS
通知をgmailに送れるようにしています。
メール通知が不要な場合、つまり、例えばその都度手元で起動して表示される抽出結果を見るだけでよいなら、これらの変数は設定不要です。設定しなければメール送信しません。
(二段階認証にしている場合、別途アプリ用パスワードの取得が必要ですね)
#####REGION_CODE
住んでいる地域を示すコードを指定しなければなりません。NHKは地域毎に番組表が違う場合があるので、これは重要です。地域コードは下記URLのページの「area」欄を参照してください。
#####GENRE_CODES
これは番組のジャンル(バラエティ、情報番組、ドラマなど)を絞り込むためのパラメータなのですが、実はジャンルのコードがどのようになっているのかはNHKのAPIサイト自体には詳しい説明がなく、僕は下記のブログで簡潔に知ることができました。助かります。
> テレビ番組ジャンル一覧 ゆるくつくる – stabuckyのブログ。
分類が多いので、大分類を示す最初の2桁だけで絞り込むようにしています(ニュース/報道は1, スポーツは2 ですが、それぞれ 01, 02 と記述します)
#####KEYWORDS
自分の興味を示すキーワードを並べてください。番組情報に半角英数字は使っていないようなので「UFO」も全角で「UFO」でなければなりません。
#####LOG_FILE
これは特に変更していただく必要はないと思います。ただし、このような名前のファイルが同じディレクトリ(フォルダ)に作られることを知っておいてください。プログラムに書き込みの権限も必要となります。
このファイルは、取得済み(通知済み)の番組を記憶しておくために使っています。そうしないと、プログラムが動くたびに通知済みの番組をその番組が終わるまでは何度も通知してしまうからです。
この記録は、プログラムの最後で、当日の前の日以前のから消去していますので、容量が増え続けるということはありません。
#####NHK_CHANNELS
抽出するTVチャンネルのコードと表示用の名前を設定します。NHK番組表APIはテレビだけでなくワンセグやラジオ放送も取得できます。コードと名前の対応一覧はNHK番組表APIサイトの下記のURLに「service」欄を参照してください。Rubyのhashで記述してください。
値の設定は以上です。
僕の場合は、これを自分のサーバーに設置してcrontabを設定して、毎朝8時5分に起動させています。以下のような設定ですね。
まず、シェル起動できるように
% chmod 755 nhkkw.rb
して、crontabでRuby環境を読み込んで起動するシェルスクリプトを nhkkw.sh を用意して
#!/bin/sh
cd /home/eijin
source ./.bash_profile
./nhkkw.rb > /dev/null 2>&1
で、
% chmod 755 nhkkw.sh
して、そして
% ctontab -e
で
5 8 * * * /home/eijin/nhkkw.sh
ですね。
以上です。