【Mac】rec_radiko.sh で保存されるファイル名を番組名でつける

2018年11月14日

 ‼️ 18.01.13 一部修正。
 ザリガニが見ていた…さんのスクリプトで、ラジコのタイマー予約録音する、という記事を書いた。
 大変有用なスクリプトだと思い利用させていただいているんだけど、保存されるファイル名は、デフォルトだと例えば「TBSラジオ_20180109-0830.m4a」のように出力されるかと思う。
 このままだと味気ないので、番組名をファイル名に入れて保存できないかな、と思った。

 相変わらず下手の横好きって感じのコードなんだけど、せっかく書いたから。


スポンサード リンク

 いろいろ考えてみたけど、rec_radiko.sh に直接追加するのが一番いいのではないかと思った。

📻 rec_radiko.sh
「# 引数解析」の直前あたり。

function getTitle() {
local progTitle=curl -s http://radiko.jp/v2/api/program/station/weekly?station_id=$1 | xpath //prog[@ft="${2}"]/title 2>/dev/null | sed -e 's/<title>//' -e 's/<\/title>//'
echo $progTitle
}

 番組名を取得する「getTitle」という関数を加えてみた。

📻 rec_radiko.sh
177 行目あたり。
output="${wdir}/${fname:=${station_name}_date +%Y%m%d-%H%M}${fext:=.flv}"」の直前くらい。

timeStamp=date +%Y%m%d%H%M | sed -e 's/$/00/'
hiduke=date +%Y%m%d-%H%M
bangumi=getTitle $channel $timeStamp
part=echo "$bangumi" | rev | cut -c 1-3 | rev

if test -z “$bangumi”; then
fname=echo ${station_name}'_'${hiduke}
elif [[ $part =~ (.)|(.) ]] ; then
bangumi=echo ${bangumi} | sed -e "s/$part//"
fname=echo ${bangumi}'_'${hiduke}${part}
else
fname=echo ${bangumi}'_'${hiduke}
fi

 🙇🏻‍♂️ この部分、豪快に間違っており、訂正しました(18.01.13)。

「番組名_20180109-0830.m4a」という形式で保存されるようになっている。
 例えば、「番組名_2018-1-9.m4a」という風に変更したい場合は、「hiduke」という変数を以下のようにすればいいはず。


hiduke=`date +%Y-%m-%d`

 また、番組のなかには前後編に別れて、例えば「伊集院光とらじおと(1)」「伊集院光とらじおと(2)」というようなタイトルになることがある。
 この場合、「伊集院光とらじおと_20180109-0830(1).m4a」と書き直すようにしてある。
 それとしないと、Mac の場合ファインダーで以下のようなファイルの並びになってしまう。


伊集院光とらじおと(1)_20180108-0830.m4a
伊集院光とらじおと(1)_20180109-0830.m4a
伊集院光とらじおと(1)_20180110-0830.m4a
伊集院光とらじおと(2)_20180108-1000.m4a
伊集院光とらじおと(2)_20180109-1000.m4a
伊集院光とらじおと(2)_20180110-1000.m4a

 ちょっと続きが捜しづらい。
 これを、日付順に並べたるため、カッコを最後に持っていった。
(1)を最後に持ってくると、以下のようになる。


伊集院光とらじおと_20180108-0830(1).m4a
伊集院光とらじおと_20180108-1000(2).m4a
伊集院光とらじおと_20180109-0830(1).m4a
伊集院光とらじおと_20180109-1000(2).m4a
伊集院光とらじおと_20180110-0830(1).m4a
伊集院光とらじおと_20180110-1000(2).m4a

 必要ない場合は上記コードから、以下の部分をそっくり削除でいいと思う。

part=echo "$bangumi" | rev | cut -c 1-3 | rev

elif [[ $part =~ (.)|(.) ]] ; then
bangumi=echo ${bangumi} | sed -e "s/$part//"
fname=echo ${bangumi}'_'${hiduke}${part}

 動かなかったり動作がおかしくなることもあると思うので、rec_radiko.sh ファイルのコピーを取ってからコードを追加し、まずはテストするのをおすすめします。
 つーかこんなことしなくても、もしかしたら番組名と日付でファイル名を指定する方法があるのかもしれない。

スポンサードリンク