世の中には数多くのWEB APIが公開されています。
本日はその中でNHK番組表APIを紹介したいと思います。
NHK番組表APIポータルサイト
https://api-portal.nhk.or.jp/
機能の概要
このAPIではNHK総合、Eテレ、BS放送などのNHKが放送している番組情報を取得することができます。2014年から公開されており、ユーザー登録さえすれば誰でも無料で利用可能です。
APIは4つあります。
1.Program List API
放送地域、サービス、日付を指定してその日一日分の番組表を取得するAPI
2.Program Genre API
放送地域、ジャンル、日付を指定して該当する条件の番組リストを取得するAPI
3.Program Info API
番組ID(Program List APIから取得できる)を指定して番組詳細情報を取得するAPI
4.Now On Air API
放送地域、サービスを指定することで現在放送されている番組情報を取得するAPI
どのAPIもレスポンスはJSON形式になります。また、上記ポータルサイトでパラメータを指定してAPIを試すことできます。
利用方法
上記ポータルサイトでユーザー登録を行い、APIキーを取得してください。メールアドレスとユーザー名だけで登録が可能です。
curlとjqでごにょごにょしても良いのですが、今回はPython2.7を使用します。
今日の大阪(AREA=270)、NHK総合(SERVICE=g1)を取得するプログラムだと下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# -*- coding: utf-8 -*- import json import datetime import urllib2 APINHK = "http://api.nhk.or.jp/v2/pg/list/{area}/{service}/{date}.json?key={apikey}" APIKEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" AREA = "270" SERVICE = "g1" def main(): try: today = datetime.date.today().strftime("%Y-%m-%d") url = APINHK.format(area=AREA, service=SERVICE, date=today, apikey=APIKEY) response = urllib2.urlopen(url) root = json.loads(response.read()) print(repr(root).decode('unicode-escape')) except Exception as e: print(e) if __name__ == "__main__": main() |
データの取得イメージは下記のようになります。
番組タイトルで好きな番組がやっているか確認したり、好きな有名人が出ている番組がないか検索したりすることができそうですね。
ちなみに私は、家にあるRaspberry PiがこのAPIから情報取得してます。「ブラタモリ」がある日は朝に音声でお知らせしてくれます。