おことわり
ここに記載した情報は、私的利用に限定した使用に限ります。著作権侵害は禁じます。
JSON ファイルのありかが変わりました
2017年に以下の記事を書きました。
その後(昨年(2023年)8月末?)にどうやら JSON ファイルのありかが変わったようなので更新記事を書く事にします。今更かよ、とツッコミありそうですね。そろそろ年度末なので対策しておかねばということですよw*1 更に 2024/8/2 時点で、サイトの ID(と私が呼んでいる各番組の聴き逃し配信ページ URL の "?p=" 以降にある文字列)が「数字4桁_数字2桁」から「英大文字数字10文字_数字2桁」へと変更されました。なので当初この記事を書いた 2024/2 時点の情報を上書きして記事を書いております*2。
さて本編へ
まず 聴き逃しサービス のトップページでの JSON は、以前の
から
へと変更されました。いま(2024/8/2 17時過ぎ)の JSON の内容を Ruby に読ませて JSON.parse するとこんな状況。
{"corners"=>
[{"id"=>2734,
"title"=>"関西ラジオワイド",
"radio_broadcast"=>"R1",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/2855/g2855.jpg",
"series_site_id"=>"3LMYMLG7XQ",
"corner_site_id"=>"01"},
{"id"=>1316,
"title"=>"歌謡スクランブル",
"radio_broadcast"=>"FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/444/g444.jpg",
"series_site_id"=>"N8M9ZPVK4L",
"corner_site_id"=>"01"},
{"id"=>1389,
"title"=>"名曲スケッチ",
"radio_broadcast"=>"R2,FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/308/g308.jpg",
"series_site_id"=>"K7NR257MJ5",
"corner_site_id"=>"01"},
{"id"=>4548,
"title"=>"まんまる",
"radio_broadcast"=>"R1",
"corner_name"=>"金曜放送分を聴く",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/8863/g8863.jpg",
"series_site_id"=>"GNWPP74MG4",
"corner_site_id"=>"05"},
:
{"id"=>79,
"title"=>"らじる文庫 by らじるラボ",
"radio_broadcast"=>"R1",
"corner_name"=>"徳冨蘆花「草とり」",
"onair_date"=>"2020年8月25日(火)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/F295/img/corner/box_79_thumbnail.jpg",
"series_site_id"=>"F295",
"corner_site_id"=>"18"}]}
以前だと各番組の JSON ファイルへのリンクが書かれていたのですが、今回は含まれていません。残念。なので手動で各番組のページへ飛んでみましょう。
ラジオ英会話の JSON
どの番組でも良いのですが、今回は ラジオ英会話 にします。 URL は https://www.nhk.or.jp/radio/ondemand/detail.html?p=PMMJ59J6N2_01 です。URL の p 以下の ID PMMJ59J6N2_01 がポイント*3ですね。ちなみに先ほどのトップページ JSON のラジオ英会話の部分は
{"id"=>450,
"title"=>"ラジオ英会話",
"radio_broadcast"=>"R2,FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/916/g916.jpg",
"series_site_id"=>"PMMJ59J6N2",
"corner_site_id"=>"01"},
となっています。series_site_id の英大文字数字10文字と corner_site_id の数字2桁とをアンダースコアで繋げれば ID そのままです。
で。JSON はどこにあるかというと、先ほどの series_site_id と corner_site_id を用いた
にあります。
JSON の中身を見てみましょう。繰り返し部分は一部省略しました。
{"id"=>42,
"title"=>"ラジオ英会話",
"radio_broadcast"=>"R2,FM",
"schedule"=>
"放送:(R2)月曜~金曜 午前6:45~7:00 再放送:(R2)月曜~金曜 午後0:25~0:40、午後9:45~10:00、日曜 午後4:30~5:45(月曜~金曜の再放送)、(NHK-FM)月曜~金曜 午後11:30~11:45",
"corner_name"=>"",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/916/g916.jpg",
"series_description"=>
"高校生から社会人までを対象とした英会話レッスン。日常生活で使う英会話が意識せずに口から出てくる事を目指します。会話の
土台である文法と語彙のイメージを身につけながら実用的な英会話力の養成につなげます。日常会話はもちろん受験やビジネスにも最適!\r\n",
"series_url"=>"https://www.nhk.jp/p/rs/PMMJ59J6N2/",
"share_text_title"=>"ラジオ英会話",
"share_text_url"=>"https://www.nhk.or.jp/radioondemand/share/42_450.html",
"share_text_description"=>"#radiru",
"episodes"=>
[{"id"=>4041457,
"program_title"=>"ラジオ英会話 ハートでつかめ!英語の極意(81)",
"onair_date"=>"7月29日(月)午前6:45放送",
"closed_at"=>"2024年8月5日(月)午前7:00配信終了",
"stream_url"=>
"https://vod-stream.nhk.jp/radioondemand/r/PMMJ59J6N2/s/stream_PMMJ59J6N2_fde3f0564d3edfb8fd36b8c2d63aa1a3/index.m3u8",
"aa_contents_id"=>
"[radio]vod;ラジオ英会話 ハートでつかめ!英語の極意(81);r2,130;2024072967324;2024-07-29T06:45:00+09:00_2024-07-29T07:00:03+09:00",
"program_sub_title"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ"},
:
{"id"=>4042381,
"program_title"=>"ラジオ英会話 ハートでつかめ!英語の極意(85)",
"onair_date"=>"8月2日(金)午前6:45放送",
"closed_at"=>"2024年8月9日(金)午前7:00配信終了",
"stream_url"=>
"https://vod-stream.nhk.jp/radioondemand/r/PMMJ59J6N2/s/stream_PMMJ59J6N2_aca5c0458306bb9fb1482648927e1453/index.m3u8",
"aa_contents_id"=>
"[radio]vod;ラジオ英会話 ハートでつかめ!英語の極意(85);r2,130;2024080268265;2024-08-02T06:45:00+09:00_2024-08-02T07:00:03+09:00",
"program_sub_title"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ"}],
"same_tag_series"=>
[{"id"=>250,
"title"=>"ステップアップ ハングル講座",
"radio_broadcast"=>"R2,FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/6810/g6810.jpg",
"link_url"=>"",
"series_site_id"=>"NLJM5V3WXK",
"corner_site_id"=>"01"},
{"id"=>410,
"title"=>"ニュースで学ぶ「現代英語」",
"radio_broadcast"=>"R2,FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/7512/g7512.jpg",
"link_url"=>"",
"series_site_id"=>"77RQWQX1L6",
"corner_site_id"=>"01"},
{"id"=>247,
"title"=>"ラジオビジネス英語",
"radio_broadcast"=>"R2,FM",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/6809/g6809.jpg",
"link_url"=>"",
"series_site_id"=>"368315KKP8",
"corner_site_id"=>"01"},
{"id"=>43,
"title"=>"エンジョイ・シンプル・イングリッシュ",
"radio_broadcast"=>"R2",
"corner_name"=>"",
"onair_date"=>"2024年8月2日(金)放送",
"thumbnail_url"=>"https://www.nhk.or.jp/prog/img/3064/g3064.jpg",
"link_url"=>"",
"series_site_id"=>"BR8Z3NX7XM",
"corner_site_id"=>"01"}]}
m3u8 ファイルへのリンク先要素は stream_url
ってことで m3u8 ファイルへのリンク先は stream_url 要素に書いてある
(中略)
ということになります。
いちおう以前(昨年(2023年)8月ごろより前?)の JSON の中身も比較のため見てみます。m3u8 ファイルへのリンク先を示す要素は、以前だと file_name 要素でしたね。要素の名称の付け方が改善されていて良いと思います^ ^
{"main"=>
{"site_id"=>"0916",
"program_name"=>"ラジオ英会話",
"mode"=>0,
"media_type"=>"radio",
"media_code"=>"06,07",
"media_name"=>"NHKラジオ第2、NHK-FM",
"site_detail"=>
"中学校までの基本的な英語の学習を終えた高校生や改めて英語を学んで話せるようになりたいと考えている方々に、英語を話す
ためのポイントをわかりやすくお伝えします。\r\n※NHK-FMでも放送します。\r\n\r\n\r\n",
"thumbnail_p"=>"https://www.nhk.or.jp/radioondemand/json/0916/img/0916_0403.jpg",
"thumbnail_c"=>nil,
"schedule"=>"放送:月~金 午前6:45~7:00(NHK-FMは午前7:30~7:45) 再放送(R2で放送):月~金 午後0:25~0:40、午後9:45~10:00/日 午後4:30~5:45(5回分)",
"official_url"=>"https://www2.nhk.or.jp/gogaku/english/",
"share_url"=>"https://www.nhk.or.jp/radioondemand/share/42_450.html",
"corner_id"=>"01",
"corner_name"=>nil,
"corner_detail"=>nil,
"program_index"=>false,
"cast"=>nil,
"dev"=>"2024-02-27T14:26:15.794+09:00",
"detail_list"=>
[{"headline_id"=>"3927357",
"headline"=>nil,
"headline_sub"=>nil,
"headline_image"=>nil,
"file_list"=>
[{"seq"=>1,
"file_id"=>"3927357",
"file_title"=>"ラジオ英会話~ハートでつかめ!英語の極意~(213)",
"file_title_sub"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ",
"file_name"=>
"https://vod-stream.nhk.jp/radioondemand/r/916/s/stream_916_91702667a70e43178e93d3cca4b995a9/index.m3u8",
"open_time"=>"2024-02-21T07:00:00+09:00",
"close_time"=>"2024-02-28T07:00:00+09:00",
"onair_date"=>"2月21日(水)午前6:45放送",
"share_url"=>"https://www.nhk.or.jp/radioondemand/share/42_450.html?p=0916_01_3927357",
"aa_contents_id"=>
"[radio]vod;ラジオ英会話~ハートでつかめ!英語の極意~(213);r2,130;2024022167905;2024-02-21T06:45:00+09:00_2024-02-21T07:00:00+09:00",
"aa_measurement_id"=>"vod",
"aa_vinfo1"=>"ラジオ英会話~ハートでつかめ!英語の極意~(213)",
"aa_vinfo2"=>"r2,130",
"aa_vinfo3"=>"2024022167905",
"aa_vinfo4"=>"2024-02-21T06:45:00+09:00_2024-02-21T07:00:00+09:00"}]},
:
{"headline_id"=>"3929320",
"headline"=>nil,
"headline_sub"=>nil,
"headline_image"=>nil,
"file_list"=>
[{"seq"=>1,
"file_id"=>"3929320",
"file_title"=>"ラジオ英会話~ハートでつかめ!英語の極意~(217)",
"file_title_sub"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ",
"file_name"=>
"https://vod-stream.nhk.jp/radioondemand/r/916/s/stream_916_add6258c4f76356280d7ba887ba4960b/index.m3u8",
"open_time"=>"2024-02-27T07:00:00+09:00",
"close_time"=>"2024-03-05T07:00:00+09:00",
"onair_date"=>"2月27日(火)午前6:45放送",
"share_url"=>"https://www.nhk.or.jp/radioondemand/share/42_450.html?p=0916_01_3929320",
"aa_contents_id"=>
"[radio]vod;ラジオ英会話~ハートでつかめ!英語の極意~(217);r2,130;2024022769370;2024-02-27T06:45:00+09:00_2024-02-27T07:00:00+09:00",
"aa_measurement_id"=>"vod",
"aa_vinfo1"=>"ラジオ英会話~ハートでつかめ!英語の極意~(217)",
"aa_vinfo2"=>"r2,130",
"aa_vinfo3"=>"2024022769370",
"aa_vinfo4"=>"2024-02-27T06:45:00+09:00_2024-02-27T07:00:00+09:00"}]}]}}
比較
新しい JSON で m3u8 ファイルのありかを取得するには
- episodes 要素 > 配列 > stream_url 要素
の順番で探せば良くなり、以前の
- main 要素 > detail_list 要素 > 配列 > file_list 要素 > 配列 > file_name 要素
よりも格段に浅くなりました。名称も分かりやすくなりました。
また、各回の情報もコンパクトにまとまりましたね。以前だと不要に見える要素がたくさん入っていました。ただ、新しい方には番組サイト末尾に「おすすめ番組」を表示させるための(余分な)same_tag_series 要素が加わりました。
再度おことわり
ここに記載した情報は、私的利用に限定した使用に限ります。念押し。