らじる★らじるの録音用シェルスクリプト再び
主題
らじる★らじるの録音用シェルスクリプトを作ってみたので紹介する。
背景
ザリガニが見ていた…。さんのらじる★らじるも録音したいにある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
この投稿へのコメント