radiko.jp のタイムフリーでは、過去 1 週間以内に放送された番組を何時で聞くことができますが、ストリーミング配信のため、そのままでは簡単に保存することができません。更に、ギミックを駆使して(?)なんとなく頑なに保存されるのを嫌っているような雰囲気もあります。その radiko.jp のタイムフリー番組の録音をパソコンに保存するための覚書きです。
この記事で説明している方法では、最初の数秒が録音できず、完全な録音はできません。「最初から最後まで完全に保存できないとヤダ!」って人は、これ以上は読む必要がありません。
「radiko.jp タイムフリー 保存」で検索すると、それ用のフリーウェアが幾つか見つかったのですが、自宅の Windows 7 マシンでは保存できませんでした。radiko.jp のウェブサイトが仕様変更されると、動作しなくなっているようです*1。
番組の録音は m3u8
拡張子を持つストリーミングで配信されているので、これを ffmpeg を利用して保存することが一応はできるのですが、この m3u8
ファイルの URL が毎回変化するようになっており、更にご丁寧なことに、ストリーミングのチャンクごとにアクセス可能な有効期限が設定されているようなのです。そのため、m3u8
ファイルの URL が判明しても、のんびり ffmpeg のコマンド ラインを打ち込んでいると、録音の頭部分のチャンクが取得できないようです。
ならば、その URL を取得して、ffmpeg を起動するまでの部分をスクリプトなりで自動化すればいいんですが、詳細は次の調査メモで。
POST https://radiko.jp/v2/api/auth1_fms
して、X-Radiko-AuthToken と、X-Radiko-PartialKey を計算するためのパラメータを貰う。必要なヘッダを付けて普通にアクセスするだけで成功した。POST https://radiko.jp/v2/api/auth2_fms
して、X-Radiko-AuthToken を認証してもらうと予想。しかし、そのための X-Radiko-PartialKey の計算方法が判らない。POST https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=...
すると、目的の m3u8
ファイルが判明するハズ。しかし、上のステップを通さないと失敗するっぽい。
…と、まぁ、こんな感じで簡単に m3u8
ファイルの URL にアクセスさせてくれない雰囲気。結局、X-Radiko-PartialKey の計算方法を探すところで力尽きたわけです。予想ですが、頑張って計算方法を探せても、計算ロジック自体が変更されたらアウトですよね…
一応、Mozilla Firefox と Firebug アドオンでの操作方法について説明しておきます。ただし、この方法では、録音の最初の数秒が切れて保存されます。
GET <ランダムな文字列>.m3u8
を探し、その URL をコピーします(Fig.1 )。@ECHO OFF @set M3U8= @set /P M3U8="M3U8 の URL: " ffmpeg -i %M3U8% -movflags faststart -c copy -bsf:a aac_adtstoasc rec.mp4 @PAUSE