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