Radiko/らじるらじるの番組を録音する(6) 2016/10/11対応の内容を元に変更箇所を把握してWindowsで動くバッチファイルを書き直した。playerのURL、authkeyの場所、auth_fms取得時に指定するヘッダ内容等が変更になってる。
wget.exe、swfextract.exe、dd.exe、rtmpdump.exeを別途用意して放送局IDと録音秒数を下記に指定して実行する録音が始まる。放送局IDはパラメータ無しで実行して生成されたauth2_fmsの行頭に書かれているエリアIDを確認し、 http://radiko.jp/v2/station/list/エリアID.xml をダウンロードすれば、そのエリアで聴取可能な放送局と対応する放送局IDが確認できる。
バッチファイル実行時に生成されるファイルや設定される環境変数は次回実行前に削除や初期化をしておかないと正常に動作しない可能性があるので注意が必要。
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 http://radiko.jp/v2/station/stream/%~1.xml FOR /F usebackq^ tokens^=1-4^ delims^=^"^=^<^>^ eol^= %%I IN (%~1.xml) DO ( IF "%%~J %%~L"=="item /item" IF NOT DEFINED STREAM_URL SET STREAM_URL="%%~K" ) rtmpdump ^ -v ^ -r %STREAM_URL% ^ -W http://radiko.jp/apps/js/flash/myplayer-release.swf ^ -C S:"" ^ -C S:"" ^ -C S:"" ^ -C S:%AUTHTOKEN% ^ --stop %~2 ^ --flv %~1.flv