そんでもってcronで定期予約をして語学勉強したい。
VLCでストリームをmp3に変換してファイル出力するスクリプト。
第一引数に、録音時間を指定できます。
#! /bin/bash
DEST_FILE_NAME_BASE=`date +%Y%m%d-%H%M`
## 録音時間
if [ $# = 0 ]
then
RECORDING_MINUTES=15
else
RECORDING_MINUTES=$1
fi
DEST_DIR="/Users/flo_jack/NHK_Radio"
DEST_FILE="$DEST_DIR/$DEST_FILE_NAME_BASE.mp3"
# ストリームには10〜20秒のタイムラグがあるため、30秒余分に保存
RECORDING_TIME=$(($RECORDING_MINUTES * 60 + 30))
# らじる★らじるのラジオ第2放送ストリーム
STREAM_SOURCE="mms://a57.l12993246056.c129932.g.lm.akamaistream.net/D/57/129932/v0001/reflector:46056"
# ラジオ第1ストリーム
#STREAM_SOURCE="mms://a33.l12993146032.c129931.g.lm.akamaistream.net/D/33/129931/v0001/reflector:46032"
# NHK-FMストリーム
#STREAM_SOURCE="mms://a52.l12993346051.c129933.g.lm.akamaistream.net/D/52/129933/v0001/reflector:46051"
if [ ! -e "$DEST_DIR" ]
then
mkdir "$DEST_DIR"
fi
/usr/local/bin/vlc -I rc $STREAM_SOURCE :sout="#transcode{acodec=mp3}:std{access=file,mux=raw,dst=$DEST_FILE}" --run-time $RECORDING_TIME vlc://quit
録音時間以外の指定、たとえば保存場所の指定などを引数から行うことは、このスクリプトではできません。シェルスクリプトに不慣れなものですみません。
パスはMacな感じで書いてあるため、使用している環境に応じて書き換える必要があります。VLCのパスも同様です。Macの場合、VLCはVLCを右クリックして『パッケージの内容を表示』してから Contents/MacOS/VLC
に存在します。VLCをアプリケーションフォルダにインストールしていれば /Applications/VLC/Contents/MacOS/VLC
となるでしょう。私はこのシンボリックリンクを /usr/local/bin/vlc
になんとなく作りました。
10分番組を記録する使い方。
recording.sh 10
ラジオ英会話(月~金曜日の6:45から15分間)を保存する場合のcrontab例
45 6 * * 1-5 /Users/flo_jack/NHK_Radio/recording.sh 15
当然ながら、この時間にコンピュータを起動しておく必要があります。
放送は実際の時間より10〜20秒の時間差をもって送信されますので、時間ちょうどにcronを設定しても、うまいぐいあいに開始より先に記録が始まります。