はてなアンテナでNHKの番組更新を補足しようと思ったのだが、ページ自体は更新されているのに、なぜか通知されない。どういうことだろうと思ったら、ページ自体はjavascriptで描画されているようで、これでは、はてなアンテナでは更新の補足はできないだろう。
で、どうやら、かなりのページは既にjavascriptでページが描画されているようで、その内容を取得するために、謎のAPIが使われているようだ。ちょっとgoogleで検索してみたが、NHKの提供しているAPIはv2止まりで、v3は見つけられなかった。なぜ、v3かと思ったかというと、APIのURLが次のような形式になっているからだ。
http://api.nhk.or.jp/r3/pg/site_id/4/130/all/1632.json?from=2016-07-13&to=2016-09-07
URLの中にr3が入っているからそうだと思っているだけである。このリクエストの応答はjsonで返ってくる。start_time、end_time、title、subtitle辺りが、必要な情報だと思う。
上のURLのallの後ろにある数字が、番組に割り当てられて固有のIDのようなのだが、このIDの一覧がどこかにないものだろうか?
fromとtoの間の日付差は56日ぐらいにしておくのがよさそうで、ページによっては、あまりに日付差が大きいと503を返してくるようだ。
2016年12月6日追記
NHKは2016年になってからラジオ第二放送のページを刷新してしまって、過去の内容が見つけられなくなってしまった。2015年以前のページは現在のページからはリンクが張られていないが、ページはまだ存在するみたいなので、参照可能となっている。2016年以降の内容は今のところ、このAPIを使えば参照可能となっている。
2017年11月10日追記
番組に割り当てられた固有のIDは以下のURLで提供されている番組表のページが参照しているJSONデータの中のsite_idの項目が相当すると思われる。
それと、APIのURL中の130は東京のコードだと思われる。ドキュメント リクエストの説明 | NHK番組表APIのareaが相当すると思われる。
2023年2月17日追記
一部の番組でこのAPIが403を返すようになった。新たに"https://api.nhk.jp/r6/l/radioepisode/rs/"というようなAPIができているようだが、例によってどこで番組のIDが決められているのか不明。