NHK語学講座のストリーミング放送を録音するシェルスクリプト

このシェルスクリプトに引数として録音時間と番組名を渡すと、指定された時間だけ録音します。

※ 予め ffmpeg をインストールしておいて下さい ※

#!/bin/bash
################################################
# Name: recnhklang
#
# Description: Record NHK radio program
#
# Usage: recnhklang <recording time> <title>
#
# Example: recnhklang 960 jissen-business
#
# Author: lambdacadabra
# Date: 2019/03/10
################################################

# 第一引数は録音時間、第二引数は番組名。
# 録音時間は秒数で渡します。
# ファイル形式はMP3。
# ファイル名は録音日時と引数として渡した番組名をつなげたものになります。

# 録音時間
TIME=$1

# 番組タイトル
TITLE=$2

# NHKラジオ第2のストリーミングURL
M3U8URL="https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8"

# 保存ファイル名
# ここではホームディレクトリに nhk というディレクトリを作って、
# 更にその中に番組ごとのディレクトリがあると仮定します。
# 録音ファイルを保存するディレクトリ名と
# 引数として渡す番組名は同じでなければなりません。
OUTFILE=~/nhk/$TITLE/$(date +"%Y%m%d")-$TITLE.mp3

# 録音実行
ffmpeg -i $M3U8URL -write_xing 0 -t $TIME $OUTFILE

このシェルスクリプトに実行属性を付与しておきます。

chmod +x recnhklang

あとは crontab にスケジュールを書き込んでやれば、時間が来ると自動的に録音してくれます。

放送スケジュールはNHKのページで確認して下さい。

crontab を編集するには下のコマンドを端末で実行して下さい。

crontab -e

私のcrontabはこんな感じです。3つの番組を予約してあります。

 40 12 * * 3-5 ~/bin/recnhklang 960 jissen-business
 30 18 * * 2-3 ~/bin/recnhklang 960 gendai-eigo
 10 15 * * 1-5 ~/bin/recnhklang 360 news

録音開始時間を右から、分・時・日・月・曜日・コマンド の順で指定します。

曜日は、0:日、1:月、2:火、3:水、4:木、5:金、6:土 となります。

一番上に書いてある予約を例にすると、毎週水曜から金曜の12時40分から960秒(16分間)録音するという意味になります。

ストリーミング放送は電波のラジオよりも約30〜40秒ほど遅れて始まるので、録音時間を60秒長く指定しています。

シェルスクリプトはホームディレクトリ下の bin ディレクトリに置いてあると仮定します。