NHKらじるらじる聴き逃し番組を一覧表示するプログラム(python)

Python

自作のNHKらじるらじる聴き逃し録音ソフトがバージョンアップして、語学放送以外も対応できましたので、現在配信されている番組名と番組IDを抽出するプログラムを作りました。

NHKラジオの聴き逃しはjson形式で配信されており、radikoのxml配信とは抽出方法が全く違いましたので、json解析から抽出方法までを備忘録として記事にします。

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

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

Webブラウザでindex.jsonを見てみると以下のjsonが大量に出てきます。

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

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

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

  • タグ名と内容の関係
    • site_id :番組ID
    • corner_id :番組サブID
    • onair_date :放送日
    • prog_title : 番組名
    • corner_name :サブID コーナー名

json形式ですので、xmlほど解析はややこしくありません。

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

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

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

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

作成したpythonプログラム

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

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

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

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

def json_radiru(): 
#returnする値の初期化
    site_id = []    #番組ID
    corner_id = []  #番組サブID
    onair_date = [] #放送日
    prog_title = [] # 番組名
    corner_name = [] #サブID コーナー名
    url_source = [] #m3u8アドレス
# 番組URLアドレスの生成
    # url = url1 + '/' + dir + '/' + url2 + dir + '_' + sub + url3
    url1 = "https://www.nhk.or.jp/radioondemand/json/index_v3/index.json"
    url_prog_this_week = url1
#    print(url_prog_this_week)

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

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

# json解析と値の抽出
    for i in range(len(json_prog_this_week["data_list"])):
        try:
            site_id.append(json_prog_this_week["data_list"][i]["site_id"])
            prog_title.append(json_prog_this_week["data_list"][i]["program_name"])
            url_source.append(json_prog_this_week["data_list"][i]["detail_json"])
            corner_id.append(json_prog_this_week["data_list"][i]["corner_id"])
            onair_date.append(json_prog_this_week["data_list"][i]["onair_date"])
            corner_name.append(json_prog_this_week["data_list"][i]["corner_name"])
#            print(onair_date[i], corner_id[i], prog_title[i], url_source[i])
#            print(site_id[i], corner_id[i], onair_date[i], prog_title[i])
            print(site_id[i],',', corner_id[i],',', prog_title[i],',', corner_name[i])
        except:
            print("ERROR: json parse failed")
            break

def main():
    json_radiru()

if __name__ == '__main__':
    main()

プログラムの実行結果

pythonが動作する環境で以下設定のサンプルプログラムを実行します。

  • site_id :番組ID
  • corner_id :番組サブID
  • prog_title : 番組名
  • corner_name :サブID コーナー名

結果は以下の通りで、配信中の番組が一望できるようになり、IDの抽出が容易になりました。

番組ID順のソートは結構手間がかかるため、Excelで行うことにし、csv表記に合わせるためカンマ(,)で区切りました。

E:\GRC22\sample>python json_nhk_detail_pickup_2.py
0937 , 01 , アラビア語講座 ,
0812 , 01 , 日曜討論 ,
0424 , 01 , 宗教の時間 ,
0446 , 01 , 現代の音楽 ,
0934 , 01 , 吹奏楽のひびき ,
1280 , 01 , 視覚障害ナビ・ラジオ ,
0960 , 01 , こころをよむ ,
0309 , 01 , 名曲の小箱 ,
0664 , 01 , ラジオ体操 ,
5642 , 07 , マイあさ! , 日曜日放送分を聴く
0449 , 01 , ジャズ・トゥナイト ,
0324 , 06 , ラジオ深夜便 , 土曜日放送分を聴く
0058 , 01 , FMシアター ,
1930 , 01 , カルチャーラジオ 漢詩をよむ ,
2214 , 02 , らじらー! , らじらー!サタデー
0184 , 05 , ちきゅうラジオ ,
0083 , 01 , 上方演芸会 ,
0143 , 01 , 社会福祉セミナー ,
2769 , 01 , ポルトガル語 ステップアップ ,
0129 , 01 , ザ・ソウルミュージックII ,
0961 , 01 , 古典講読 ,
5508 , 01 , 古家正亨のPOP★A ,
7880 , 01 , Asian View ,
0444 , 01 , 歌謡スクランブル ,
0632 , 01 , 真打ち競演 ,
0701 , 01 , やさしい日本語 ,
7731 , 01 , 国語辞典サーフィン ,
F666 , 01 , 【らじる文庫】太宰治「富嶽百景」(全4回) , 太宰治「富嶽百景」
8062 , 01 , 朗読 ,
0456 , 01 , ひるのいこい ,
0442 , 01 , 音の風景 ,
0285 , 01 , 文芸選評 ,
5707 , 01 , らじるの時間 ,
0167 , 01 , 世界の快適音楽セレクション ,
3393 , 01 , 音で訪ねる ニッポン時空旅 ,
0029 , 01 , ウィークエンドサンシャイン ,
4750 , 01 , 石丸謙二郎の山カフェ , 山カフェをきく
0935 , 01 , ビバ!合唱 ,
5642 , 06 , マイあさ! , 土曜日放送分を聴く
0685 , 01 , 音楽の泉 ,
0308 , 01 , 名曲スケッチ ,
3449 , 01 , 夜のプレイリスト ,
0324 , 05 , ラジオ深夜便 , 金曜日放送分を聴く
4971 , 01 , ヤバイラジオ屋さん ,
1257 , 01 , ミュージックライン ,
0045 , 01 , NHKジャーナル ,
6324 , 01 , 高橋源一郎の飛ぶ教室 ,
0164 , 01 , 青春アドベンチャー ,
8367 , 01 , 朗読の世界 ,
4158 , 01 , 第92回日本音楽コンクール 本選 ,
3065 , 01 , カルチャーラジオ 科学と人間 ,
7792 , 01 , 梶裕貴のラジオ劇場 ,
4774 , 07 , Nらじ , Nらじチェック
4774 , 01 , Nらじ , 特 集
4774 , 02 , Nらじ , ニュース解説
4774 , 05 , Nらじ ,    Nらじセレクト
4774 , 25 , Nらじ , 金曜放送分を聴く
6805 , 01 , 小学生の基礎英語 ,
2299 , 01 , オペラ・ファンタスティカ ,
7009 , 01 , ラジオdeもぎたて! ,
6400 , 01 , 花ラジちば ,
2825 , 01 , ひるどき!さいたま~ず ,
3854 , 05 , ごごカフェ , 金曜放送分を聴く
F443 , 01 , ナノコエ、きがへで , ナノコエ、きがへで
5642 , 20 , マイあさ! , ワールドリポート
5642 , 13 , マイあさ! , 健康ライフ
7269 , 01 , 駒井蓮のニポミン! ,
4859 , 01 , KABUKI TUNE(カブキ・チューン) ,
6810 , 01 , ステップアップ ハングル講座 ,
6311 , 01 , おしゃべりな古典教室 ,
7512 , 01 , ニュースで学ぶ「現代英語」 ,
3064 , 01 , エンジョイ・シンプル・イングリッシュ ,
4121 , 01 , ボキャブライダー ,
4414 , 01 , まいにちロシア語 応用編 ,
8249 , 06 , ふんわり , 金曜放送分を聴く
2331 , 01 , 英会話タイムトライアル ,
0915 , 01 , まいにち中国語 ,
0951 , 01 , まいにちハングル講座 ,
6809 , 01 , ラジオビジネス英語 ,
4411 , 01 , まいにちイタリア語 応用編 ,
4412 , 01 , まいにちフランス語 応用編 ,
4413 , 01 , まいにちスペイン語 応用編 ,
4410 , 01 , まいにちドイツ語 応用編 ,
0916 , 01 , ラジオ英会話 ,
6808 , 01 , 中高生の基礎英語 in English ,
6807 , 01 , 中学生の基礎英語 レベル2 ,
6806 , 01 , 中学生の基礎英語 レベル1 ,
5642 , 05 , マイあさ! , 金曜日放送分を聴く
0324 , 04 , ラジオ深夜便 , 木曜日放送分を聴く
2302 , 01 , リトグリのミューズノート ,
6749 , 01 , あさこ・佳代子の大人なラジオ女子会 ,
1929 , 01 , カルチャーラジオ 文学の世界 ,
4784 , 01 , 東京03の好きにさせるかッ! ,
4774 , 04 , Nらじ , ニュースアップ、トピック
4774 , 24 , Nらじ , 木曜放送分を聴く
0933 , 01 , クラシックカフェ ,
3854 , 04 , ごごカフェ , 木曜放送分を聴く
4395 , 01 , FM能楽堂 ,
0455 , 01 , 弾き語りフォーユー ,
2298 , 01 , 音楽遊覧飛行 ,
8249 , 05 , ふんわり , 木曜放送分を聴く
1911 , 01 , 古楽の楽しみ ,
5642 , 04 , マイあさ! , 木曜日放送分を聴く
0324 , 03 , ラジオ深夜便 , 水曜日放送分を聴く
2519 , 01 , THE ALFEE 終わらない夢 ,
7412 , 01 , アナウンサー百年百話 ,
6441 , 01 , 大竹しのぶの“スピーカーズコーナー” ,
1928 , 01 , カルチャーラジオ 芸術その魅力 ,
6753 , 01 , タカアンドトシのお時間いただきます ,
4774 , 23 , Nらじ , 水曜放送分を聴く
3854 , 03 , ごごカフェ , 水曜放送分を聴く
4400 , 01 , ラジオ防災講座 ,
0291 , 01 , 邦楽百番 ,
0956 , 01 , まいにちロシア語 入門編 ,
8249 , 04 , ふんわり , 水曜放送分を聴く
0946 , 01 , まいにちイタリア語 入門編 ,
0953 , 01 , まいにちフランス語 入門編 ,
0948 , 01 , まいにちスペイン語 入門編 ,
0943 , 01 , まいにちドイツ語 入門編 ,
5642 , 03 , マイあさ! , 水曜日放送分を聴く
0324 , 02 , ラジオ深夜便 , 火曜日放送分を聴く
6792 , 01 , GReeeeN HIDEの ミドリの2重スリット ,
8689 , 01 , STUDY!ぼくたちとみんなのラジオ ,
1927 , 01 , カルチャーラジオ 歴史再発見 ,
7413 , 01 , アニメ・ステラー ,
4774 , 22 , Nらじ , 火曜放送分を聴く
3854 , 02 , ごごカフェ , 火曜放送分を聴く
3143 , 01 , 山形ひるどきラジオ なにしったのや~? ,
0305 , 01 , 民謡をたずねて ,
0290 , 01 , 邦楽のひととき ,
6581 , 01 , ステップアップ中国語 ,
8249 , 03 , ふんわり , 火曜放送分を聴く
5642 , 02 , マイあさ! , 火曜日放送分を聴く
0324 , 01 , ラジオ深夜便 , 月曜日放送分を聴く
1633 , 01 , 松尾潔のメロウな夜 ,
4000 , 01 , 又吉・児玉・向井のあとは寝るだけの時間 ,
1890 , 01 , カルチャーラジオ NHKラジオアーカイブス ,
6675 , 01 , さくらひなたロッチの伸びしろラジオ ,
4774 , 21 , Nらじ , 月曜放送分を聴く
7629 , 01 , Learn Japanese from the News ,
4486 , 04 , 安心ラジオ , 健康・医療
3854 , 01 , ごごカフェ , 月曜放送分を聴く
5642 , 18 , マイあさ! , 著者からの手紙
1344 , 01 , ラジオマンジャック ,
2496 , 01 , アニソン・アカデミー ,
5642 , 17 , マイあさ! , 週末文化の歩き方
5642 , 16 , マイあさ! , 土曜さんぽ
5642 , 15 , マイあさ! , サエキけんぞうの素晴らしき20世紀ポップ
5642 , 14 , マイあさ! , いきもの☆いろいろ
7426 , 01 , Nandary ,
4817 , 01 , ゆる信ワイド ,
6069 , 01 , 放課後ラジオよりみちこまち ,
6404 , 01 , ホッと!四国 ,
3938 , 01 , 中国!ちゅーもく!ラジオ ,
2812 , 01 , 夕刊ゴジらじ ,
2855 , 01 , 関西ラジオワイド ,
0328 , 01 , 浪曲十八番 ,
8249 , 02 , ふんわり , 月曜放送分を聴く
5642 , 01 , マイあさ! , 月曜日放送分を聴く
2401 , 01 , 眠れない貴女へ ,
0324 , 07 , ラジオ深夜便 , 日曜日放送分を聴く
7763 , 01 , ぶいあーる!〜VTuberの音楽Radio〜 ,
8210 , 01 , 望海風斗のサウンドイマジン ,
1940 , 01 , カルチャーラジオ 日曜カルチャー ,
5674 , 01 , リサイタル・パッシオ ,
2214 , 01 , らじらー! , らじらー!サンデー
0930 , 01 , 新日曜名作座 ,
3638 , 01 , サカナクション・山口一郎 Night Fishing Radio ,
3489 , 01 , MISIA 星空のラジオ ~Sunday Sunset~ ,
3433 , 01 , 洋楽グロリアス デイズ ,
7793 , 01 , ヴォイスミツシマ ,
5945 , 01 , ×(かける)クラシック ,
7313 , 01 , 名曲ヒットパレード ,
8227 , 01 , 小痴楽の楽屋ぞめき ,
8282 , 01 , ディスカバー・ビートルズⅡ ,
7155 , 01 , Living in Japan ,
0238 , 01 , NHKのど自慢 , NHKのど自慢
8244 , 01 , 伊集院光の百年ラヂオ ,
2039 , 00 , 子ども科学電話相談 , 子ども科学電話相談を聴く
1635 , 01 , 名演奏ライブラリー ,
4486 , 03 , 安心ラジオ , くらし安全
0324 , 08 , ラジオ深夜便 , もっと、どうする家康
F300 , 35 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「なめとこ山の熊」
F300 , 36 , らじる文庫 by ラジオ深夜便  , 宮沢賢治「ざしき童子(ぼっこ)のはなし」
4486 , 02 , 安心ラジオ , 防災・気象
F654 , 01 , 【らじる文庫】芥川龍之介「秋」(全3回) , 芥川龍之介「秋」
F647 , 01 , 【らじる文庫】芥川龍之介「鼻」(全2回) , 芥川龍之介「鼻」
4486 , 05 , 安心ラジオ , 犯罪・事故
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 らじるラボ , 徳冨蘆花「草とり」

以上、NHKらじるらじるの聴き逃し番組表抽出プログラムです。