らじる★らじる聴き逃しサービスをダウンロードするための手始め:JSONファイルのありか(その2)

おことわり

ここに記載した情報は、私的利用に限定した使用に限ります。著作権侵害は禁じます。

JSON ファイルのありかが変わりました

2017年に以下の記事を書きました。

その後(昨年(2023年)8月末?)にどうやら JSON ファイルのありかが変わったようなので更新記事を書く事にします。今更かよ、とツッコミありそうですね。そろそろ年度末なので対策しておかねばということですよw

まず 聴き逃しサービス のトップページでの JSON は、以前の

から

へと変更されました。いま(2/27 14時過ぎ)の JSON の内容を Ruby に読ませて JSON.parse するとこんな状況。

{"corners"=>
  [{"id"=>3190,
    "title"=>"Asian View",
    "radio_broadcast"=>"R2",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/prog/img/7880/g7880.jpg",
    "series_site_id"=>"7880",
    "corner_site_id"=>"01"},
   {"id"=>1316,
    "title"=>"歌謡スクランブル",
    "radio_broadcast"=>"FM",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/prog/img/444/g444.jpg",
    "series_site_id"=>"0444",
    "corner_site_id"=>"01"},
   {"id"=>116,
    "title"=>"ごごカフェ",
    "radio_broadcast"=>"R1",
    "corner_name"=>"火曜放送分を聴く",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/prog/img/3854/g3854.jpg",
    "series_site_id"=>"3854",
    "corner_site_id"=>"02"},
   {"id"=>97,
    "title"=>"ひるのいこい",
    "radio_broadcast"=>"R1,FM",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/prog/img/456/g456.jpg",
    "series_site_id"=>"0456",
    "corner_site_id"=>"01"},
   {"id"=>31,
    "title"=>"マイあさ!",
    "radio_broadcast"=>"R1",
    "corner_name"=>"ワールドリポート",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/5642/img/corner/box_31_thumbnail.jpg",
    "series_site_id"=>"5642",
    "corner_site_id"=>"20"},
   {"id"=>32,
    "title"=>"マイあさ!",
    "radio_broadcast"=>"R1",
    "corner_name"=>"健康ライフ",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/5642/img/corner/box_32_thumbnail.jpg",
    "series_site_id"=>"5642",
    "corner_site_id"=>"13"},
      :
   {"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=0916_01 です。URL の p 以下の ID 「0916_01」がポイントですね。ちなみに先ほどのトップページ JSON のラジオ英会話の部分は

   {"id"=>450,
    "title"=>"ラジオ英会話",
    "radio_broadcast"=>"R2,FM",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/0916/img/0916_0403.jpg",
    "series_site_id"=>"0916",
    "corner_site_id"=>"01"},

となっています。series_site_id と corner_site_id とをアンダースコアで繋げれば ID そのままです。

で。JSON はどこにあるかというと、先ほどの series_site_id と corner_site_id を用いた

にあります。ちなみに以前だと JSON

にありました。新しい JSON の URL のほうがしっかりデザインされてますよね。

JSON の中身を見てみましょう。繰り返し部分は一部省略しました。

{"id"=>42,
 "title"=>"ラジオ英会話",
 "radio_broadcast"=>"R2,FM",
 "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回分)",
 "corner_name"=>"",
 "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/0916/img/0916_0403.jpg",
 "series_description"=>
  "中学校までの基本的な英語の学習を終えた高校生や改めて英語を学んで話せるようになりたいと考えている方々に、英語を話すた
めのポイントをわかりやすくお伝えします。\r\n※NHK-FMでも放送します。\r\n\r\n\r\n",
 "series_url"=>"https://www2.nhk.or.jp/gogaku/english/",
 "share_text_title"=>"ラジオ英会話",
 "share_text_url"=>"https://www.nhk.or.jp/radioondemand/share/42_450.html",
 "share_text_description"=>"#radiru",
 "episodes"=>
  [{"id"=>3927357,
    "program_title"=>"ラジオ英会話~ハートでつかめ!英語の極意~(213)",
    "onair_date"=>"2月21日(水)午前6:45放送",
    "closed_at"=>"2024年2月28日(水)午前7:00配信終了",
    "stream_url"=>
     "https://vod-stream.nhk.jp/radioondemand/r/916/s/stream_916_91702667a70e43178e93d3cca4b995a9/index.m3u8",
    "aa_contents_id"=>
     "[radio]vod;ラジオ英会話~ハートでつかめ!英語の極意~(213);r2,130;2024022167905;2024-02-21T06:45:00+09:00_2024-02-21T07:00:00+09:00",
    "program_sub_title"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ"},
    :
   {"id"=>3929320,
    "program_title"=>"ラジオ英会話~ハートでつかめ!英語の極意~(217)",
    "onair_date"=>"2月27日(火)午前6:45放送",
    "closed_at"=>"2024年3月5日(火)午前7:00配信終了",
    "stream_url"=>
     "https://vod-stream.nhk.jp/radioondemand/r/916/s/stream_916_add6258c4f76356280d7ba887ba4960b/index.m3u8",
    "aa_contents_id"=>
     "[radio]vod;ラジオ英会話~ハートでつかめ!英語の極意~(217);r2,130;2024022769370;2024-02-27T06:45:00+09:00_2024-02-27T07:00:00+09:00",
    "program_sub_title"=>"【講師】東洋学園大学教授…大西泰斗,【出演】デイビット・エバンス,秋乃ろーざ"}],
 "same_tag_series"=>
  [{"id"=>497,
    "title"=>"Asian View",
    "radio_broadcast"=>"R2",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/prog/img/7880/g7880.jpg",
    "link_url"=>"",
    "series_site_id"=>"7880",
    "corner_site_id"=>"01"},
   {"id"=>115,
    "title"=>"ステップアップ中国語",
    "radio_broadcast"=>"R2",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/6581/img/step_china.jpg",
    "link_url"=>"",
    "series_site_id"=>"6581",
    "corner_site_id"=>"01"},
   {"id"=>410,
    "title"=>"ニュースで学ぶ「現代英語」",
    "radio_broadcast"=>"R2",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/7512/img/7512.jpg",
    "link_url"=>"",
    "series_site_id"=>"7512",
    "corner_site_id"=>"01"},
   {"id"=>43,
    "title"=>"エンジョイ・シンプル・イングリッシュ",
    "radio_broadcast"=>"R2",
    "corner_name"=>"",
    "onair_date"=>"2024年2月27日(火)放送",
    "thumbnail_url"=>"https://www.nhk.or.jp/radioondemand/json/3064/img/3064.jpg",
    "link_url"=>"",
    "series_site_id"=>"3064",
    "corner_site_id"=>"01"}]}

m3u8 ファイルへのリンク先要素は stream_url

ってことで m3u8 ファイルへのリンク先は stream_url 要素に書いてある

(中略)

ということになります。

いちおう以前の 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 要素が加わりました。

再度おことわり

ここに記載した情報は、私的利用に限定した使用に限ります。念押し。