LoginSignup
0
0

More than 3 years have passed since last update.

RubyでNHK番組表APIを使ってキーワード監視

Last updated at Posted at 2019-06-15

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」欄を参照してください。

リクエストパラメータ 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で記述してください。

リクエストパラメータ service

値の設定は以上です。

僕の場合は、これを自分のサーバーに設置して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

ですね。

以上です。

NHK番組表APIサイト
NHK番組表APIサイト

0
0
2

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