curlとjqとffmpegを使ってNHKらじる聞き逃しのストリームを録音するスクリプト 修正

いつのまにかエラーを吐いてて、動いてなかったので修正しました。

元記事は、

です。実際は、

を試したのに、動かないので不具合が発覚しました。もともとは動いていたはずなので、犯人は誰だ?さて、Bashのスクリプトがエラー吐いてますから、ターミナルで確認しましょうかね?

赤い部分がffmpegが吐いてるエラーです。なんとなくmetadata周りのエラーぽいので、実際にffmpegに渡しているコマンドラインを拾ってみましょう。urlとかはうまく取れているようです。ffmpeg起動直前にset -xを入れます。

nao@debian-g:~/nhk$ cat rajiru.orig

#!/bin/bash

DATE=`date '+%Y%m%d_%H%M'`
OUTDIR="/mnt/nas/english"


first=$(curl -s "https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/series?site_id=PMMJ59J6N2&corner_site_id=01")
results=$(echo $first | jq '.episodes[].stream_url' | sed -n 5p)
title=$(echo $first | jq '.episodes[].program_title' | sed -n 5p)
temp="${results%\"}"
temp="${temp#\"}"
#echo ${results}
temp2="${title%\"}"
temp2="${temp2#\"}"
echo $temp2

set -x

ffmpeg -y -http_seekable 0 -i ${temp} -vn  -bsf aac_adtstoasc -acodec copy -metadata title=${temp2} "${OUTDIR}/${temp2}.m4a"

これを起動して、ffmpegの起動コマンド部分を抜き出すと、

+ ffmpeg -y -http_seekable 0 -i https://vod-stream.nhk.jp/radioondemand/r/PMMJ59J6N2/s/stream_PMMJ59J6N2_d4061c52784e8c67a7c49030022bc130/index.m3u8 -vn -bsf aac_adtstoasc -acodec copy -metadata title=ラジオ英会話 'ハートでつかめ!英語の極意' '(80)' '/mnt/nas/english/ラジオ英会話 ハートでつかめ!英語の極意 (80).m4a'

-metadata title=ラジオ英会話 ‘ハートでつかめ!英語の極意’ ‘(80)’

が変ですね。nhkさんが jq ‘.episodes[].program_title’ で返してくる文字列をごちゃするような仕様変更したようですね。で、すっぱりと上記部分を削除しました。従って新版は、

nao@debian-g:~/nhk$ cat rajiru
#!/bin/bash

DATE=`date '+%Y%m%d_%H%M'`
OUTDIR="/mnt/nas/english"


first=$(curl -s "https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/series?site_id=PMMJ59J6N2&corner_site_id=01")
results=$(echo $first | jq '.episodes[].stream_url' | sed -n 5p)
title=$(echo $first | jq '.episodes[].program_title' | sed -n 5p)
temp="${results%\"}"
temp="${temp#\"}"
#echo ${results}
temp2="${title%\"}"
temp2="${temp2#\"}"
echo $temp2

ffmpeg -y -http_seekable 0 -i ${temp} -vn  -bsf aac_adtstoasc -acodec copy "${OUTDIR}/${temp2}.m4a"

です。diffするとmetadata=云々がらみのみカットしたのがわかります。

nao@debian-g:~/nhk$ diff rajiru.orig rajiru
17c17
< ffmpeg -y -http_seekable 0 -i ${temp} -vn  -bsf aac_adtstoasc -acodec copy -metadata title=${temp2} "${OUTDIR}/${temp2}.m4a"
---
> ffmpeg -y -http_seekable 0 -i ${temp} -vn  -bsf aac_adtstoasc -acodec copy "${OUTDIR}/${temp2}.m4a"

これで無事動くようになりました。めでたしめでたし。さて、

ここで紹介しているらじる☆らじる聞き逃し番組サーチアプリでも録音する時には同様なパラメーターでffmpegに丸投げしてますから、修正しないと行けません。といっても録音する時だけ顕在化するバグですけどね。筆者はファイル残すのが嫌いなので滅多に録音しませんのでこちらも発見が遅れました。すでに修正済みですが、バイナリの配布は別記事で…..。vectorにアップもせねばならんか?面倒だなあ。(笑)

コメント