radikoのタイムフリーで番組を録音してみる

radiko関連ソフト総合 Part24の390の内容を元に先程の通常録音用バッチファイルをタイムフリーでの録音に書き換えてみた。要はストリームURLの取得とrtmpdumpでのダウンロードを、プレイリストURLの取得とffmpegでのダウンロードに変えただけ。
後日、この方法で上手く録音出来なくなってたので、Webラジオの保存方法の質問はこちら【23】のNo.43の内容を元にffmpegの処理に-headerを加えた。(2016/12/03追記)
放送局ID、開始日時、終了日時を指定して実行する。日時は西暦4桁+月2桁+日2桁+時2桁+分2桁+秒2桁で指定する。
無劣化で保存する為、ffmpegに-vnで映像なし、-acodec copyで音声コーデック変換なし、-bsf aac_adtstoascでm4aコンテナに格納できないビットストリームのAAC(TSコンテナ等に格納できる)をm4aコンテナに格納出来る形式に変換するオプションを指定してある。

wget http://radiko.jp/apps/js/flash/myplayer-release.swf
swfextract -b 12 myplayer-release.swf -o authkey.jpg
wget ^
	--header="pragma: no-cache" ^
	--header="X-Radiko-App: pc_ts" ^
	--header="X-Radiko-App-Version: 4.0.0" ^
	--header="X-Radiko-User: test-stream" ^
	--header="X-Radiko-Device: pc" ^
	--post-data='\r\n' ^
	--no-check-certificate ^
	--save-headers ^
	https://radiko.jp/v2/api/auth1_fms
FOR /F "usebackq tokens=1,2 delims=: " %%I IN (auth1_fms) DO (
	IF "%%~I"=="X-Radiko-AuthToken" SET AUTHTOKEN=%%~J
	IF "%%~I"=="X-Radiko-KeyLength" SET KEYLENGTH=%%~J
	IF "%%~I"=="X-Radiko-KeyOffset" SET KEYOFFSET=%%~J
)
dd if=authkey.jpg bs=1 skip=%KEYOFFSET% count=%KEYLENGTH% of=partialkey.bin
certutil -f -encode partialkey.bin partialkey.txt
FOR /F "usebackq eol=- delims=" %%I IN (partialkey.txt) DO SET PARTIALKEY=%%~I
wget ^
	--header="pragma: no-cache" ^
	--header="X-Radiko-App: pc_ts" ^
	--header="X-Radiko-App-Version: 4.0.0" ^
	--header="X-Radiko-User: test-stream" ^
	--header="X-Radiko-Device: pc" ^
	--header="X-Radiko-Authtoken: %AUTHTOKEN%" ^
	--header="X-Radiko-Partialkey: %PARTIALKEY%" ^
	--post-data='\r\n' ^
	--no-check-certificate ^
	https://radiko.jp/v2/api/auth2_fms
wget ^
	-O playlist.m3u8 ^
	--header="pragma: no-cache" ^
	--header="Content-Type: application/x-www-form-urlencoded" ^
	--header="X-Radiko-Authtoken: %AUTHTOKEN%" ^
	--header="Referer: http://radiko.jp/apps/js/flash/myplayer-release.swf" ^
	--post-data='flash=1' ^
	--no-check-certificate ^
	"https://radiko.jp/v2/api/ts/playlist.m3u8?l=15&station_id=%~1&ft=%~2&to=%~3"
FOR /F "usebackq tokens=1,2 delims=:" %%I IN (playlist.m3u8) DO (
	IF "%%~I"=="https" SET PLAYLIST_URL=https:%%~J
)
ffmpeg -headers "X-Radiko-Authtoken: %AUTHTOKEN%" -i %PLAYLIST_URL% -vn -acodec copy -bsf aac_adtstoasc %~1-%~2-%~3.m4a