radiko APIを使用してラジオを聞いてみる
こんにちはショウです
今日はradikoAPIを使ってラジオを聞いてみます
最初に大まかな流れを説明しておきます
myplayer-release.swfをダウンロード
swfファイルから画像ファイル(authkey.png)を取り出す
ーーーーーーーーーーここまで事前準備
ーーーーーーーーーーここからプログラムで行う
認証1を行う
認証1で取得した値を使用してauthkey.pngからParticalkeyを取得する
Particalkeyを使って認証2を行う
myplayer-release.swfをダウンロード
以下のコマンド等でmyplayer-release.swfを取得してください
authkey.png の取得
swftoolsを使用してswfから画像(authkey.png)を取得します
$ swfextract myplayer-release.swf -b 12 -o authkey.png
ここまでで事前準備完了です
認証1
ここからはプログラムで行う処理となります
最初に以下のURLにPOSTします
https://radiko.jp/v2/api/auth1_fms
認証が成功すると以下のデータが取得できます
- X-Radiko-AuthToken
- X-Radiko-KeyLength
- X-Radiko-KeyOffset
HTTP通信でPOSTする方法については使用する言語毎に異なります
Pythonを使用するなら以下の記事を参考にしてください
認証2
次にParticalkeyを取得します
authkey.pngをバイナリで読み込んで、認証1で取得したX-Radiko-KeyOffset分オフセットした位置からX-Radiko-KeyLengthの長さのバイナリデータを取得します
取得したバイナリデータをBase64に変換します(これがParticalkeyです)
認証1で取得したX-Radiko-AuthTokenとParticalkeyで以下のURLにPOSTします
https://radiko.jp/v2/api/auth2_fms
以上で認証は完了です
ラジオの音声の取得
認証まで完了しましたので、次は聞きたいラジオの音声を取得します
ラジオ放送局の毎にIDが設定されており、そのIDをからURLが決定されます
TBSの場合は下記のURLにAuthTokenを設定してPOSTしてあげれば音声が取得できるます
http://c-radiko.smartstream.ne.jp/TBS/_definst_/simul-stream.stream/playlist.m3u8
以下のURLにアクセスすると放送局のIDが取得できます。
JP13.xmlのJP13の部分を自分の地域の値に変更してブラウザで開いてください
JP13,東京都,tokyo Japanの場合
http://radiko.jp/v2/station/list/JP13.xml
以下のような表示がされると思います、
この中から聞きたい局のID(TBSラジオならTBS)
を保存します。
<id>TBS</id>
<name>TBSラジオ</name>
///////////////////
<?xml version="1.0″ encoding="UTF-8″ ?>
<stations area_id="JP13″ area_name="TOKYO JAPAN">
<station>
<id>TBS</id>
<name>TBSラジオ</name>
<ascii_name>TBS RADIO</ascii_name>
///////////////////
まとめ
今回は自作のプログラムからradikoでラジオを聴く場合に必要な認証を中心に紹介しました
認証方法さえ理解できれば、自分の好きな言語でradikoのAPIが使用できます
自分専用のradikoプレイヤーをつくってみましょう
ディスカッション
コメント一覧
上記はできたのですが、タイムフリーをダウンロードするにはどうしたら良いですか?