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を使用するなら以下の記事を参考にしてください

https://sho10case.com/programingschol-2-2-twitterapi/

認証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プレイヤーをつくってみましょう