【2024年6月URL変更対応版】NHKらじるらじる聴き逃し番組の一覧表プログラム(python)

Python

NHKらじるらじるの聞き逃し番組表URLが2024年6月に一新され、これまでのプログラムでは表示できなくなりましたので、json解析から抽出方法までを備忘録として記事にします。

調べてみると、URL自体は2024年2月に新旧の両方のバージョンで配信されていたようですが、旧バージョンが6月1周目に停止された模様です。

NHKらじる聴き逃しの番組表仕様について

旧配信URL:https://www.nhk.or.jp/radioondemand/json/index_v3/index.json

新配信URL:https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/corners/new_arrivals

旧URLでは、m3u8アドレスを含めてすべての番組情報が内包されていましたが、新URLでは番組表と番組内容が分割配信されて配信されていました。

以下は新配信URLの抜粋です。(json.dumpで可視化しています)

E:\GRC22\r04>python json_nhk_dump_4.py
{
  "corners": [
    {
      "id": 4710,
      "title": "クラシックの庭",
      "radio_broadcast": "FM",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/8917/g8917.jpg",
      "series_site_id": "8917",
      "corner_site_id": "01"
    },
    {
      "id": 2790,
      "title": "Learn Japanese from the News",
      "radio_broadcast": "R2",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/radioondemand/json/7629/img/7629_Learn-Japanese-from-the-News.jpg",
      "series_site_id": "7629",
      "corner_site_id": "01"
    },
    {
      "id": 1316,
      "title": "歌謡スクランブル",
      "radio_broadcast": "FM",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/444/g444.jpg",
      "series_site_id": "0444",
      "corner_site_id": "01"
    },
  
  ~~中略~~
  {
      "id": 80,
      "title": "らじる文庫 by らじるラボ",
      "radio_broadcast": "R1",
      "corner_name": "関東大震災シリーズ",
      "onair_date": "2020年9月7日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/radioondemand/json/F295/img/corner/box_80_thumbnail.jpg",
      "series_site_id": "F295",
      "corner_site_id": "19"
    },
    {
      "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"
    }
  ]
}

この中から人力で所望の番組を探すのは大変ですので、プログラムで「番組ID」「コーナーID」「番組タイトル」「コーナータイトル」のみ抽出します。

NHKらじる番組表のjsonタグ構造について

jsonファイルのタグ構造は以下のようになっていることが確認できます。

変更があった部分は(変更あり)と記載しています。

  • タグ名と内容の関係
    • corner:Key
    • series_site_id :番組ID (変更あり)
    • corner_site_id :番組サブID (変更あり)
    • onair_date :放送日
    • title : 番組名 (変更あり)
    • corner_name :サブコーナー名

json形式ですので解析は容易です。

jsonモジュールでタグ解析・抽出する

pythonでの解析と抽出にはpython標準のjsonモジュールを使いました。

インターネットにつながらない場合などの基本処理は、requestモジュールを使って受信可否を最初に判断するようにしています。

ネット接続していない場合は、戻り値に「番組表受信エラー」というテキスト文を設定することで、番組表に受信出来ない状態であることを表示し、プログラムの異常停止を回避できるように配慮しました。

for ~range文でパースするのですが、末尾のデータで異常終了となるため、except IndexError:を新しく定義しています。

作成したpythonプログラム

以下が作成したプログラムです。

抽出した値は(,)で区切って、Excelなどでソートできるようにしています。

一応、デバッグ時のprint文も残していますので、学習する場合の参考にしてください。

# Copyright (c) 2024 falconblog.org
# Released under the MIT license
# https://opensource.org/licenses/mit-license.php
import json
import io, sys
import requests

def json_radiru(): 
# 変数値の初期化
    site_id = []    #番組ID
    corner_site_id = []  #番組サブID
    onair_date = [] #放送日
    title = [] # 番組名
    corner_name = [] #サブID コーナー名
    url_source = [] #m3u8アドレス
# 番組URLアドレスの生成
    url1 = "https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/corners/new_arrivals"
    url_prog_this_week = url1

    try:
        file_prog_this_week = requests.get(url_prog_this_week)
    except:
        print("ERROR: NOT url requests")
        return(onair_date, title, url_source)

    if file_prog_this_week.status_code != 200:
        print("ERROR: NOT json page")
        return(onair_date, title, url_source)
        
    json_prog_this_week = json.loads(file_prog_this_week.text)

# json解析と値の抽出
    for i in range(len(json_prog_this_week["corners"])):
        try:
            site_id.append(json_prog_this_week["corners"][i]["series_site_id"])
            title.append(json_prog_this_week["corners"][i]["title"])
            corner_site_id.append(json_prog_this_week["corners"][i]["corner_site_id"])
            onair_date.append(json_prog_this_week["corners"][i]["onair_date"])
            corner_name.append(json_prog_this_week["corners"][i]["corner_name"])
            print(site_id[i],',', corner_site_id[i],',', title[i],',', corner_name[i])
        except IndexError:
            pass
        except:
            print("ERROR: json parse failed")
            break

def main():
    json_radiru()

if __name__ == '__main__':
    main()

プログラムの実行結果

pythonが動作する環境でサンプルプログラムを実行すると、配信中の番組が一望できるようになります。

番組ID順のソートは、プログラムで行うと手間がかかるため、Excelで行うこととし、csv表記のカンマ(,)で区切りました。

E:\GRC22\r04>python json_nhk_detail_pickup_4.py
8380 , 01 , 挾間美帆のジャズ・ヴォヤージュ ,
8210 , 01 , 望海風斗のサウンドイマジン ,
5674 , 01 , リサイタル・パッシオ ,
1940 , 01 , カルチャーラジオ 日曜カルチャー ,
2214 , 01 , らじらー! , らじらー!サンデー
2303 , 01 , ブラボー!オーケストラ ,
0184 , 05 , ちきゅうラジオ ,
0930 , 01 , 新日曜名作座 ,
1878 , 01 , 岡田惠和 今宵、ロックバーで~ドラマな人々の音楽談議~ ,
3489 , 01 , MISIA 星空のラジオ ~Sunday Sunset~ ,
2564 , 01 , DJ日本史 ,
0934 , 01 , 吹奏楽のひびき ,
0442 , 01 , 音の風景 ,
7793 , 01 , ヴォイスミツシマ ,
5945 , 01 , ×(かける)クラシック ,
9128 , 01 , キダ・タローさん追悼「ナニワの編曲塾 夏期特別講座」 ,
8227 , 01 , 小痴楽の楽屋ぞめき ,
2519 , 01 , THE ALFEE 終わらない夢 ,
7155 , 01 , Living in Japan ,
0238 , 01 , NHKのど自慢 , NHKのど自慢
8244 , 01 , 伊集院光の百年ラヂオ ,
2039 , 00 , 子ども科学電話相談 , 子ども科学電話相談を聴く
1635 , 01 , 名演奏ライブラリー ,
0812 , 01 , 日曜討論 ,
0424 , 01 , 宗教の時間 ,
0446 , 01 , 現代の音楽 ,
0935 , 01 , ビバ!合唱 ,
1280 , 01 , 視覚障害ナビ・ラジオ ,
0960 , 01 , こころをよむ ,
0664 , 01 , ラジオ体操 ,
5642 , 07 , マイあさ! , 日曜日放送分を聴く
0449 , 01 , ジャズ・トゥナイト ,
0324 , 06 , ラジオ深夜便 , 土曜日放送分を聴く
0309 , 01 , 名曲の小箱 ,
8050 , 01 , 滝藤賢一 正解のない世界のこだわりさん ,
0058 , 01 , FMシアター ,
8919 , 01 , 洋楽シーカーズ ,
5508 , 01 , 古家正亨のPOP★A ,
1930 , 01 , カルチャーラジオ 漢詩をよむ ,
7792 , 01 , 梶裕貴のラジオ劇場 ,
0083 , 01 , 上方演芸会 ,
0143 , 01 , 社会福祉セミナー ,
3393 , 01 , 音で訪ねる ニッポン時空旅 ,
0129 , 01 , ザ・ソウルミュージックII ,
0961 , 01 , 古典講読 ,
9124 , 01 , プロ野球2024(ラジオ) ,
7880 , 01 , Asian View ,
0444 , 01 , 歌謡スクランブル ,
0632 , 01 , 真打ち競演 ,
0701 , 01 , やさしい日本語 ,
7731 , 01 , 国語辞典サーフィン ,
8062 , 01 , 朗読 ,
0456 , 01 , ひるのいこい ,
0285 , 01 , 文芸選評 ,
5009 , 01 , 鉄旅・音旅 出発進行!~音で楽しむ鉄道旅~ ,
0167 , 01 , 世界の快適音楽セレクション ,
2769 , 01 , ポルトガル語講座 ,
0029 , 01 , ウィークエンドサンシャイン ,
4750 , 01 , 石丸謙二郎の山カフェ , 山カフェをきく
0937 , 01 , アラビア語講座 ,
5642 , 06 , マイあさ! , 土曜日放送分を聴く
0685 , 01 , 音楽の泉 ,
0324 , 05 , ラジオ深夜便 , 金曜日放送分を聴く
0045 , 01 , NHKジャーナル ,
1257 , 01 , ミュージックライン ,
6324 , 01 , 高橋源一郎の飛ぶ教室 ,
0164 , 01 , 青春アドベンチャー ,
8367 , 01 , 朗読の世界 ,
0458 , 01 , ベストオブクラシック ,
3065 , 01 , カルチャーラジオ 科学と人間 ,
8417 , 01 , 佐藤二朗とオヤジの時間 ,
4774 , 33 , Nらじ , みんなでファクトチェック
4774 , 02 , Nらじ , ニュース解説
4774 , 32 , Nらじ , みんなのエンタメ
4774 , 31 , Nらじ , みんなのニュース
4774 , 25 , Nらじ , 金曜放送分を聴く
6805 , 01 , 小学生の基礎英語 ,
2299 , 01 , オペラ・ファンタスティカ ,
6400 , 01 , 花ラジちば ,
2825 , 01 , ひるどき!さいたま~ず ,
2834 , 01 , はま☆キラ! ,
6404 , 01 , ホッと!四国 ,
4852 , 01 , かいラジ ,
3938 , 01 , 中国!ちゅーもく!ラジオ ,
5621 , 01 , はっけんラジオ ,
7426 , 01 , Nandary ,
2812 , 01 , 夕刊ゴジらじ ,
2855 , 01 , 関西ラジオワイド ,
0308 , 01 , 名曲スケッチ ,
8863 , 05 , まんまる , 金曜放送分を聴く
5642 , 20 , マイあさ! , ワールドリポート
5642 , 13 , マイあさ! , 健康ライフ
8345 , 01 , ふくどん! ,
8982 , 01 , 出会いは!みんようび ,
4859 , 01 , KABUKI TUNE(カブキ・チューン) ,
6810 , 01 , ステップアップ ハングル講座 ,
7512 , 01 , ニュースで学ぶ「現代英語」 ,
6809 , 01 , ラジオビジネス英語 ,
3064 , 01 , エンジョイ・シンプル・イングリッシュ ,
4121 , 01 , ボキャブライダー ,
0956 , 01 , まいにちロシア語 ,
8249 , 06 , ふんわり , 金曜放送分を聴く
2331 , 01 , 英会話タイムトライアル ,
0915 , 01 , まいにち中国語 ,
0951 , 01 , まいにちハングル講座 ,
0946 , 01 , まいにちイタリア語 ,
0953 , 01 , まいにちフランス語 ,
0948 , 01 , まいにちスペイン語 ,
0943 , 01 , まいにちドイツ語 ,
0916 , 01 , ラジオ英会話 ,
5642 , 05 , マイあさ! , 金曜日放送分を聴く
6808 , 01 , 中高生の基礎英語 in English ,
6807 , 01 , 中学生の基礎英語 レベル2 ,
6806 , 01 , 中学生の基礎英語 レベル1 ,
0324 , 04 , ラジオ深夜便 , 木曜日放送分を聴く
6749 , 01 , あさこ・佳代子の大人なラジオ女子会 ,
1929 , 01 , カルチャーラジオ 文学の世界 ,
4784 , 01 , 東京03の好きにさせるかッ! ,
4774 , 05 , Nらじ , Nらじセレクト
4774 , 01 , Nらじ , 特集
4774 , 04 , Nらじ , ニュースランキング&ニュースアップ
4774 , 24 , Nらじ , 木曜放送分を聴く
3905 , 01 , ひろしまコイらじ ,
8255 , 01 , ひめゴジ! ,
8917 , 01 , クラシックの庭 ,
8863 , 04 , まんまる , 木曜放送分を聴く
4395 , 01 , FM能楽堂 ,
0455 , 01 , 弾き語りフォーユー ,
2298 , 01 , 音楽遊覧飛行 ,
8249 , 05 , ふんわり , 木曜放送分を聴く
1911 , 01 , 古楽の楽しみ ,
5642 , 04 , マイあさ! , 木曜日放送分を聴く
0324 , 03 , ラジオ深夜便 , 水曜日放送分を聴く
7412 , 01 , アナウンサー百年百話 ,
6441 , 01 , 大竹しのぶの“スピーカーズコーナー” ,
1928 , 01 , カルチャーラジオ 芸術その魅力 ,
6753 , 01 , タカアンドトシのお時間いただきます ,
4774 , 23 , Nらじ , 水曜放送分を聴く
8863 , 03 , まんまる , 水曜放送分を聴く
4367 , 01 , とさらじお ,
3143 , 01 , 山形ひるどきラジオ なにしったのや~? ,
0291 , 01 , 邦楽百番 ,
8249 , 04 , ふんわり , 水曜放送分を聴く
5642 , 03 , マイあさ! , 水曜日放送分を聴く
0324 , 02 , ラジオ深夜便 , 火曜日放送分を聴く
7536 , 01 , ジャーナルクロス ,
1927 , 01 , カルチャーラジオ 歴史再発見 ,
7413 , 01 , アニメ・ステラー ,
4774 , 22 , Nらじ , 火曜放送分を聴く
8863 , 02 , まんまる , 火曜放送分を聴く
0305 , 01 , 民謡をたずねて ,
0290 , 01 , 邦楽のひととき ,
6581 , 01 , ステップアップ中国語 ,
8249 , 03 , ふんわり , 火曜放送分を聴く
5642 , 02 , マイあさ! , 火曜日放送分を聴く
0324 , 01 , ラジオ深夜便 , 月曜日放送分を聴く
4000 , 01 , 又吉・児玉・向井のあとは寝るだけの時間 ,
9057 , 01 , カルチャーラジオ 保阪正康が語る昭和人物史 ,
6675 , 01 , さくらひなたロッチの伸びしろラジオ ,
4774 , 21 , Nらじ , 月曜放送分を聴く
8959 , 01 , マイ・フェイバリット・アルバム ,
4486 , 03 , 安心ラジオ , くらし安全
7629 , 01 , Learn Japanese from the News ,
8863 , 01 , まんまる , 月曜放送分を聴く
5642 , 18 , マイあさ! , 著者からの手紙
2496 , 01 , アニソン・アカデミー ,
5642 , 17 , マイあさ! , 週末文化の歩き方
5642 , 16 , マイあさ! , 土曜さんぽ
5642 , 15 , マイあさ! , サエキけんぞうの素晴らしき20世紀ポップ
5642 , 14 , マイあさ! , いきもの☆いろいろ
3167 , 01 , みえDE川柳 ,
4817 , 01 , ゆる信ワイド ,
9020 , 01 , かがのとラジオ ,
0328 , 01 , 浪曲十八番 ,
8249 , 02 , ふんわり , 月曜放送分を聴く
5642 , 01 , マイあさ! , 月曜日放送分を聴く
2401 , 01 , 眠れない貴女へ ,
0324 , 07 , ラジオ深夜便 , 日曜日放送分を聴く
7763 , 01 , ぶいあーる!〜VTuberの音楽Radio〜 ,
0324 , 08 , ラジオ深夜便 , もっと、光る君へ
4486 , 04 , 安心ラジオ , 健康・医療
4486 , 02 , 安心ラジオ , 防災・気象
4400 , 01 , ラジオ防災講座 ,
4486 , 05 , 安心ラジオ , 犯罪・事故
F683 , 01 , 【らじる文庫】夏目漱石「文鳥」(全4回) , 夏目漱石「文鳥」
F666 , 01 , 【らじる文庫】太宰治「富嶽百景」(全4回) , 太宰治「富嶽百景」
F300 , 35 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「なめとこ山の熊」
F300 , 36 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「ざしき童子(ぼっこ)のはなし」
F654 , 01 , 【らじる文庫】芥川龍之介「秋」(全3回) , 芥川龍之介「秋」
F647 , 01 , 【らじる文庫】芥川龍之介「鼻」(全2回) , 芥川龍之介「鼻」
F604 , 01 , 【らじる文庫】 江戸川乱歩「人間椅子」(全4回) , 江戸川乱歩「人間椅子」(全4回)
F295 , 68 , らじる文庫 by らじるラボ , 山本周五郎 歳末の随筆
F295 , 67 , らじる文庫 by らじるラボ , 山本周五郎 随筆「小説の効用」より
F311 , 06 , らじる文庫 by 地域局発 , 牧野富太郎「ススキ談義」
F295 , 66 , らじる文庫 by らじるラボ , 石川欣一 随筆集「ささやかな幸福」より
F295 , 65 , らじる文庫 by らじるラボ , 久保田万太郎の随筆
F295 , 64 , らじる文庫 by らじるラボ , 中谷宇吉郎 食の随筆
F295 , 71 , らじる文庫 by らじるラボ , 山本周五郎著「義経の女」
F295 , 70 , らじる文庫 by らじるラボ , 吉川英治著『源頼朝』より「同根相剋」
F295 , 69 , らじる文庫 by らじるラボ , 吉川英治著『源頼朝』より「独愁」
F295 , 62 , らじる文庫 by らじるラボ , 金子みすゞの詩 秋
F295 , 63 , らじる文庫 by らじるラボ , 人見絹枝の自伝
F300 , 33 , らじる文庫 by ラジオ深夜便  , 『アイヌ神謡集』より「序」
F295 , 60 , らじる文庫 by らじるラボ , 金子みすゞの詩 いのち
F295 , 61 , らじる文庫 by らじるラボ , オペラ歌手 三浦環の自伝
F300 , 31 , らじる文庫 by ラジオ深夜便  , 新美南吉「木の祭り」
F295 , 59 , らじる文庫 by らじるラボ , 岡本かの子 息子・太郎への想(おも)い
F295 , 58 , らじる文庫 by らじるラボ , 久坂葉子「スケッチブックからのエスキス」
F295 , 57 , らじる文庫 by らじるラボ , 新居格 随筆集「街の哲学」より
F295 , 56 , らじる文庫 by らじるラボ , 新美南吉 童話と詩
F295 , 55 , らじる文庫 by らじるラボ , 【生朗読!】宮沢賢治「注文の多い料理店」
F295 , 54 , らじる文庫 by らじるラボ , 芥川龍之介「蜜柑」
F295 , 53 , らじる文庫 by らじるラボ , 宮沢賢治「やまなし」
F295 , 52 , らじる文庫 by らじるラボ , 佐藤春夫「杏の実をくれる娘」
F295 , 51 , らじる文庫 by らじるラボ , マーク・トウェイン「塀を塗るトム・ソーヤー」
F295 , 50 , らじる文庫 by らじるラボ , 夏の随筆
F295 , 48 , らじる文庫 by らじるラボ , 岡本かの子「鮨」
F295 , 46 , らじる文庫 by らじるラボ , 野口米次郎「梅雨」
F295 , 47 , らじる文庫 by らじるラボ , 間山久彌「人生の鑑 八十八の実話」より
F300 , 21 , らじる文庫 by ラジオ深夜便  , 宮沢賢治『注文の多い料理店』序
F300 , 22 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「永訣の朝」
F300 , 26 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「虔十公園林」
F300 , 25 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「雨ニモマケズ」
F295 , 39 , らじる文庫 by らじるラボ , 佐藤惣之助 桜と春風
F295 , 45 , らじる文庫 by らじるラボ , 佐藤春夫「少年」
F295 , 43 , らじる文庫 by らじるラボ , 岡本かの子 食の随筆
F295 , 44 , らじる文庫 by らじるラボ , 田山花袋 新緑と新茶
F300 , 16 , らじる文庫 by ラジオ深夜便  , 新美南吉「二ひきのかえる」
F295 , 41 , らじる文庫 by らじるラボ , いわて震災エッセイ
F295 , 42 , らじる文庫 by らじるラボ , 金子みすゞの詩・春
F295 , 40 , らじる文庫 by らじるラボ , 薄田泣菫 春の随筆
F295 , 38 , らじる文庫 by らじるラボ , いわて震災小説
F311 , 01 , らじる文庫 by 地域局発 , 梶井基次郎「檸檬」
F295 , 37 , らじる文庫 by らじるラボ , 金子みすゞの詩・冬
F295 , 36 , らじる文庫 by らじるラボ , 中谷宇吉郎と雪
F295 , 35 , らじる文庫 by らじるラボ , 【ラジオことはじめ】寺田寅彦とラジオ
F295 , 34 , らじる文庫 by らじるラボ , 【ラジオことはじめ】室生犀星とラジオ
F295 , 30 , らじる文庫 by らじるラボ , 年末年始の情景
F295 , 33 , らじる文庫 by らじるラボ , 【ラジオことはじめ】萩原朔太郎とラジオ
F295 , 32 , らじる文庫 by らじるラボ , 【ラジオことはじめ】宮城道雄とラジオ
F295 , 31 , らじる文庫 by らじるラボ , 【ラジオことはじめ】山田耕筰とラジオ
F311 , 02 , らじる文庫 by 地域局発 , 比企寿美子「アインシュタインからの墓碑銘」
F300 , 07 , らじる文庫 by ラジオ深夜便  , 与謝野晶子「金魚のお使(つかい)」
F300 , 08 , らじる文庫 by ラジオ深夜便  , 小川未明「野ばら」
F300 , 09 , らじる文庫 by ラジオ深夜便  , 新美南吉「手ぶくろを買いに」
F300 , 10 , らじる文庫 by ラジオ深夜便  , 芥川龍之介「トロッコ」
F295 , 28 , らじる文庫 by らじるラボ , 【恋する朗読】山之口貘 女性を恋うる詩
F295 , 29 , らじる文庫 by らじるラボ , 【恋する朗読】太宰治「葉桜と魔笛」
F295 , 25 , らじる文庫 by らじるラボ , 【恋する朗読】夏目漱石『夢十夜』より「第一夜」
F295 , 26 , らじる文庫 by らじるラボ , 【恋する朗読】江戸川乱歩「日記帳」
F295 , 27 , らじる文庫 by らじるラボ , 【恋する朗読】岡本かの子「気の毒な奥様」
F300 , 03 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「いちょうの実」
F300 , 04 , らじる文庫 by ラジオ深夜便  , 小川未明「月夜とめがね」
F300 , 05 , らじる文庫 by ラジオ深夜便  , 新美南吉「ごんぎつね」
F300 , 06 , らじる文庫 by ラジオ深夜便  , 有島武郎「一房のぶどう」
F295 , 24 , らじる文庫 by らじるラボ , 薄田泣菫 秋の随筆
F295 , 23 , らじる文庫 by らじるラボ , 伊藤左千夫「野菊の墓」
F295 , 21 , らじる文庫 by らじるラボ , マーク・トウェイン『トム・ソーヤーの冒険』より「わんぱくトム」
F295 , 20 , らじる文庫 by らじるラボ , 金子みすゞの詩・夏
F295 , 22 , らじる文庫 by らじるラボ , 室生犀星「随筆 女ひと」より
F295 , 17 , らじる文庫 by らじるラボ , 永井荷風「一月一日」
F295 , 19 , らじる文庫 by らじるラボ , 関東大震災シリーズ
F295 , 18 , らじる文庫 by らじるラボ , 徳冨蘆花「草とり」

m3u8配信URLは大きく変更された

新番組表内は、m3u8アドレスが記載なかったので、HPのhtmlを見ながら、どこに行ったかを調べてみると、番組ごとのURLに変更されていました。

以下は、「中学生の基礎英語 レベル1」番組ID:6806の配信例です。

配信URL:https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/series?site_id=6806&corner_site_id=01

このurlをjson.dumpすると以下の通りになります。

E:\GRC22\r04>python json_nhk_dump_4.py
{
  "id": 244,
  "title": "中学生の基礎英語 レベル1",
  "radio_broadcast": "R2,FM",
  "schedule": "放送:(NHK-FM)月曜~金曜 午前5:00~5:15 再放送:(R2)月曜~金曜 午前6:00~6:15、午後6:45~7:00、午後9:00~9:15、土曜 午後9:00~10:15(5回分)",
  "corner_name": "",
  "thumbnail_url": "https://www.nhk.or.jp/prog/img/6806/g6806.jpg",
  "series_description": "アメリカからの留学生・グレイと同級生たちの友情を描いたオリジナルストーリーを通して、中学1年~2 年前半で学ぶ単語や文法、日常生活でよく使う英語表現を身につけていく講座です。しかしグレイには何やら秘密があるようで…!?",
  "series_url": "https://www.nhk.jp/p/rs/148W8XX226/",
  "share_text_title": "中学生の基礎英語 レベル1",
  "share_text_url": "https://www.nhk.or.jp/radioondemand/share/244_1798.html",
  "share_text_description": "#radiru",
  "episodes": [
    {
      "id": 4008150,
      "program_title": "中学生の基礎英語 レベル1(42)",
      "onair_date": "6月4日(火)午前5:00放送",
      "closed_at": "2024年6月11日(火)午前5:15配信終了",
      "stream_url": "https://vod-stream.nhk.jp/radioondemand/r/6806/s/stream_6806_54d305bc536b65db7c414eda9d1caa26/index.m3u8",
      "aa_contents_id": "[radio]vod;中学生の基礎英語 レベル1(42);r3,130;2024060474109;2024-06-04T05:00:00+09:00_2024-06-04T05:15:00+09:00",
      "program_sub_title": "【アロハ】"
    },
    {
      "id": 4008675,
      "program_title": "中学生の基礎英語 レベル1(43)",
      "onair_date": "6月5日(水)午前5:00放送",
      "closed_at": "2024年6月12日(水)午前5:15配信終了",
      "stream_url": "https://vod-stream.nhk.jp/radioondemand/r/6806/s/stream_6806_d4b6c42bf1fff11981481b39b1811c02/index.m3u8",
      "aa_contents_id": "[radio]vod;中学生の基礎英語 レベル1(43);r3,130;2024060574350;2024-06-05T05:00:00+09:00_2024-06-05T05:15:00+09:00",
      "program_sub_title": "【ポテトチップスをどうぞ】"
    },
    {
      "id": 4009209,
      "program_title": "中学生の基礎英語 レベル1(44)",
      "onair_date": "6月6日(木)午前5:00放送",
      "closed_at": "2024年6月13日(木)午前5:15配信終了",
      "stream_url": "https://vod-stream.nhk.jp/radioondemand/r/6806/s/stream_6806_dbea16f28069ad02c1c27d2b7271e06e/index.m3u8",
      "aa_contents_id": "[radio]vod;中学生の基礎英語 レベル1(44);r3,130;2024060674589;2024-06-06T05:00:00+09:00_2024-06-06T05:15:00+09:00",
      "program_sub_title": "【魔法みたい】"
    },
    {
      "id": 4009758,
      "program_title": "中学生の基礎英語 レベル1(45)",
      "onair_date": "6月7日(金)午前5:00放送",
      "closed_at": "2024年6月14日(金)午前5:15配信終了",
      "stream_url": "https://vod-stream.nhk.jp/radioondemand/r/6806/s/stream_6806_f0780bb35dd7f4a45dd616cd3cebe0cc/index.m3u8",
      "aa_contents_id": "[radio]vod;中学生の基礎英語 レベル1(45);r3,130;2024060774831;2024-06-07T05:00:00+09:00_2024-06-07T05:15:00+09:00",
      "program_sub_title": "【Lesson41からLesson44の復習】"
    },
    {
      "id": 4011282,
      "program_title": "中学生の基礎英語 レベル1(46)",
      "onair_date": "6月10日(月)午前5:00放送",
      "closed_at": "2024年6月17日(月)午前5:15配信終了",
      "stream_url": "https://vod-stream.nhk.jp/radioondemand/r/6806/s/stream_6806_81121e506c729f3540e9713908c82bf5/index.m3u8",
      "aa_contents_id": "[radio]vod;中学生の基礎英語 レベル1(46);r3,130;2024061075549;2024-06-10T05:00:00+09:00_2024-06-10T05:15:00+09:00",
      "program_sub_title": "【SFが大好き】"
    }
  ],
  "same_tag_series": [
    {
      "id": 115,
      "title": "ステップアップ中国語",
      "radio_broadcast": "R2,FM",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/6581/g6581.jpg",
      "link_url": "",
      "series_site_id": "6581",
      "corner_site_id": "01"
    },
    {
      "id": 410,
      "title": "ニュースで学ぶ「現代英語」",
      "radio_broadcast": "R2,FM",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/7512/g7512.jpg",
      "link_url": "",
      "series_site_id": "7512",
      "corner_site_id": "01"
    },
    {
      "id": 247,
      "title": "ラジオビジネス英語",
      "radio_broadcast": "R2,FM",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/6809/g6809.jpg",
      "link_url": "",
      "series_site_id": "6809",
      "corner_site_id": "01"
    },
    {
      "id": 43,
      "title": "エンジョイ・シンプル・イングリッシュ",
      "radio_broadcast": "R2",
      "corner_name": "",
      "onair_date": "2024年6月10日(月)放送",
      "thumbnail_url": "https://www.nhk.or.jp/prog/img/3064/g3064.jpg",
      "link_url": "",
      "series_site_id": "3064",
      "corner_site_id": "01"
    }
  ]
}
  • 番組URLのタグ名と内容の関係
    • episodes:Key
    • onair_date :放送日
    • program_title : 番組名
    • stream_url :m3u8アドレス(音声ファイルのストリーミング)

配信URLをpythonで値を抜き出すには、以下のようなソースコード(抜粋)で対応できます。

# json解析と値の抽出
        for i in range(len(json_prog_this_week)):
            try:
                self.onair_date.append(json_prog_this_week["episodes"][i]["onair_date"][0:4])
                self.prog_title.append(json_prog_this_week["episodes"][i]["program_title"])
                self.url_source.append(json_prog_this_week["episodes"][i]["stream_url"])
            except IndexError:
                pass
            except:
                print("ERROR: json parse failed")
                self.lbl7.append('エラー:json解析に失敗しました')
                return()

当サイトの聞き逃しプログラム(m2h_recorder)では、上述の3つを抽出し、ffmpegでストリーミング録音とファイル名生成に使用しています。

2024.8.12追記:2024/08より番組IDの形式が変更になりました。詳しくはこちらの記事を確認ください。