らじる★らじるの録音用シェルスクリプト再び
主題
らじる★らじるの録音用シェルスクリプトを作ってみたので紹介する。
背景
ザリガニが見ていた…。さんのらじる★らじるも録音したいにあるrec_radiru.sh
は、らじる★らじるが仕様変更されて、HLSに変わってしまったため、使えなくなった。
ネットを検索すると、NHKネットラジオAPI プログラミング解説というサイトが見つかった。このサイトの情報によると、ストリームURLはxmlで記述されており、これをパースすることで容易にシェルスクリプト化ができそうだったので、作ってみることにした。
スクリプト
スクリプトの内容を以下に示す。なお、こちらからダウンロードすることもできる。
#!/bin/sh
# rec_radiru2.sh
#
#
# Created by 桃源老師 on 2020/01/14.
#
# NHKのらじる★らじるを録音するためのシェルスクリプト
#
# バージョン:0.4
#
# バージョン履歴:
# 0.1(2020/01/14)初版
# 0.2(2020/01/14)wgetをcurlに変更
# 0.3(2020/01/14)らじる★らじるの放送情報チェック(404かxmlか)
# 録音開始メッセージ表示追加
# 0.4(2020/01/15)録音開始メッセージに録音中の放送局、録音時間を追加
#
#ffmpegの存在チェック
check_ffmpeg=`which ffmpeg`
if [ -z $check_ffmpeg ];then
echo "ffmpegが見つかりません。インストールしてから、再度実行してください。"
exit 1;
fi
# NHKのらじる★らじるの放送情報取得
channel_xml=`curl "https://www.nhk.or.jp/radio/config/config_web.xml" 2>/dev/null`
#デバッグ用xmlパス
#channel_xml=`cat $HOME/Downloads/config_web.xml`
#xmlフォーマットかどうか確認
#(移動されたりした場合、NHKは自前の404 HTML文書を吐くので、それと区別する)
if [ ! "`echo $channel_xml | grep \/dev/null`;;
"2") area_info=`echo $channel_xml | xpath "//stream_url/data[area='sendai']" 2>/dev/null`;;
"3") area_info=`echo $channel_xml | xpath "//stream_url/data[area='tokyo']" 2>/dev/null`;;
"4") area_info=`echo $channel_xml | xpath "//stream_url/data[area='nagoya']" 2>/dev/null`;;
"5") area_info=`echo $channel_xml | xpath "//stream_url/data[area='osaka']" 2>/dev/null`;;
"6") area_info=`echo $channel_xml | xpath "//stream_url/data[area='hiroshima']" 2>/dev/null`;;
"7") area_info=`echo $channel_xml | xpath "//stream_url/data[area='matsuyama']" 2>/dev/null`;;
"8") area_info=`echo $channel_xml | xpath "//stream_url/data[area='fukuoka']" 2>/dev/null`;;
*) echo "条件に合わないキーが入力されました。終了します。"; exit 1;;
esac
#チャンネル選択
echo "録音したいチャンネルを選択してください。"
echo "1.ラジオ第1 2.ラジオ第2 3.FM:"
read channel
case "$channel" in
"1")
channel_name="R1";
channel_namejp="ラジオ第1";
hls_url=`echo $area_info | xpath "//r1hls/text()" 2>/dev/null`;;
"2")
channel_name="R2";
channel_namejp="ラジオ第2";
hls_url=`echo $area_info | xpath "//r2hls/text()" 2>/dev/null`;;
"3")
channel_name="FM";
channel_namejp="FM";
hls_url=`echo $area_info | xpath "//fmhls/text()" 2>/dev/null`;;
*)
echo "条件に合わないキーが入力されました。終了します。"; exit 1;;
esac
#時間指定
echo "録音したい時間を指定してください。:"
read input_time
if [[ "$input_time" =~ ^[0-9]+$ ]];then
rec_time=$input_time
else
echo "$input_timeは数字ではありません。終了します。";
exit 1
fi
#ffmpegを使った録音
#echo $hls_url
#echo $channel_name
#echo $rec_time
work_dir=$HOME/Downloads
output_name=NHK-${channel_name}_`date +%Y%m%d-%H%M`.m4a
#echo $output_name
echo "NHK ${channel_namejp}の${rec_time}秒間の録音を開始しました。終了までしばらくお待ち下さい。"
caffeinate -i ffmpeg -i $hls_url -vn -c:a copy -t $rec_time $work_dir/$output_name 2>/dev/null
echo "録音が終了しました。出力ファイルは${work_dir}に${output_name}という名前で保存されています。"
exit 0
スクリプトを上記からコピペした場合は、ファイル名をrec_radiru2.sh
として保存する。
実行権の付与
以下のコマンドを実行し、スクリプトに実行権を付与する。
chmod +x rec_radiru2.sh
実行
以下のようにすると対話式でスクリプトが実行される。
./rec_radiru2.sh
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント