Pythonを使ってNHKラジオをダウンロードしよう②-ダウンロード編-

IT

はじめに

前回はNHKラジオのダウンロードリスト(json)の抽出プログラムを作りました。
今回は、それに基づいて、実際にダウンロードしてみたいと思います。

準備

1.前回のプログラムより、ダウンロードしたい番組のURLをメモ帳にコピーしてください。
例えば、「ラジオ英会話」と「まいにち中国語」をダウンロードしたければこんな感じで、nhk_downloader.txtを作成します。

2.MP3形式に変換するために、ffmpegをダウンロードします。
下記からダウンロードしてインストールします。

プログラム

  • 下記のプログラムを作って実行すると、準備で作ったテキストファイルを読み込み、最新版の番組を自動的にダウンロードしてくれます。
import requests
import subprocess
import os
# ダウンロード対象リスト読み込み
with open('nhk_downloader.txt') as f:
    urls = f.readlines()
for url in urls:
    url = url.strip()
    if url == '':
        continue
    resp = requests.get(url)
    js = resp.json()
    # フォルダの作成
    program_title = js['main']['program_name']
    if not os.path.exists(program_title):
        os.makedirs(program_title)
    # 音声ファイルダウンロード
    for d1 in js['main']['detail_list']:
        for d2 in d1['file_list']:
            title = d2['file_title']
            date = d2['onair_date']
            file = d2['file_name']
            if not os.path.exists(f'{program_title}\{title}.mp3'):
                cmd = f'ffmpeg -y -vn -v verbose -http_seekable 0 -i "{file}" -id3v2_version 3 -metadata artist="NHK" -metadata title="{date}" -metadata album="{program_title}" -metadata date="2022" -metadata track="236" -ab 48k -ar 24000 -ac 1 "{program_title}\{title}.mp3"'
                result = subprocess.run(cmd)
                print(f'{title}', 'ダウンロード', result.returncode, result.stdout)
            else:
                print(f'{title}', 'キャンセル')

まとめ

いかがだったでしょうか?
実はこれは私が英語を勉強したくてNHKさんのお世話になっています。
本はKindleで購入して、毎日勉強を続けたいと思います。
皆さんも是非役立てていただければ、うれしく思います。

コメント

  1. tosiki より:

    上にあるのをコピーしてnhk_downloader.txtを作成
    実行すると

    raise InvalidSchema(f”No connection adapters were found for {url!r}”)
    requests.exceptions.InvalidSchema: No connection adapters were found for
    と表示

    • スングル スングル より:

      nhk_downloader.txtに取得したいラジオのアドレスが正しく入力されているでしょうか?

タイトルとURLをコピーしました