今日、どんなラジオやるのかな？radiko api 番組表取得

# あれ、今日はあの番組お休みなのか、、、

なんてこと、ありませんか？
私はあります。

**山崎怜奈の誰かに話したかったことを拝聴しようとしたら、山崎怜奈がニューヨークへ旅行していて知らないアナウンサーが代理で喋りだした**こととか、、、
あります。

例えばいつも聞いているラジオがいつも通りの時間にやるのか確認したいとき、radikoアプリを開いて頑張って番組表をスワイプしますか？
**私はしません。**

**なぜなら、もっと簡単に番組表が取得できるようにしているからです。**

今回は、**放送局id**と**日にち**から、**その日の番組表を取得する**方法をお教えします。

# 番組表を取得できる radiko api

https://radiko.jp/v3/program/station/date/(年月日:例 20240521)/(放送局id:例 FMT).xml
にアクセスすると、指定した放送局、日にちの番組表をxml形式で取得できます。
例として、2024年5月21日　TOKYO FMの番組表を取得してみます。

[こんな感じ](https://radiko.jp/v3/program/station/date/20240521/FMT.xml)でアクセスしてみてください。
https://radiko.jp/v3/program/station/date/20240521/FMT.xml

おそらく2024年5月21日から一週間以上経過していると取得できないため、一週間以内のurlの一部を日にちに変えてアクセスしてみてください。

みれない人のために取得できるxmlの一部を下記に記します。

```xml:programs.xml
<radiko>
  <ttl>1800</ttl>
  <srvtime>1716725705</srvtime>
  <stations>
    <station id="FMT">
      <name>TOKYO FM</name>
      <progs>
        <date>20240521</date>
        <prog id="9945977" master_id="" ft="20240521050000" to="20240521053000" ftl="0500" tol="0530" dur="1800">
          <title>Memories＆Discoveries</title>
          <url>https://audee.jp/program/show/27337</url>
          <url_link/>
          <failed_record>0</failed_record>
          <ts_in_ng>0</ts_in_ng>
          <ts_out_ng>0</ts_out_ng>
          <desc/>
          <info>
          ...
          ...
          </info>
          <pfm>早見沙織</pfm>
          <img>https://program-static.cf.radiko.jp/acw23umv4n.jpg</img>
          <tag>
            <item>
              <name>早見沙織</name>
            </item>
            <item>
              <name>人気声優出演</name>
            </item>
          </tag>
        <genre>
          <personality id="C006">
            <name>女性声優</name>
          </personality>
          <program id="P005">
            <name>音楽</name>
          </program>
        </genre>
        <metas>
          <meta name="twitter" value="#radiko"/>
        </metas>
      </prog>
      <prog>
      ...
      ...
      </prog>
      ...
      
```

# pythonでradiko apiからxmlを取得

radiko apiからxmlを取得して、番組表をprintします。

今回はとりあえずprintしますが、下記のスクリプトを参考にすれば**好きなデータが抽出できる**はずなので、
**自分なりに成型するなり、保存するなり好きにして**ください。

私はLINE apiとGCFを使って毎朝番組表がLINE通知されるようにしています。

```text:requirements.txt
requests==2.31.0
lxml==5.2.2
```

```py:programs.py
import sys
import requests
from lxml import etree

def get_root(url):
    r = requests.get(url)
    r.encoding = r.apparent_encoding
    return etree.fromstring(r.text.encode('utf-8'))
def get_programs(date, station_id):
    root = get_root(f'http://radiko.jp/v3/program/station/date/{date}/{station_id}.xml')

    for p in root.xpath('//prog'):
        print(f'{p.attrib["ftl"]}-{p.attrib["tol"]} {p.xpath("pfm")[0].text} {p.xpath("title")[0].text} {p.xpath("url")[0].text}')


def main():
    args = sys.argv
    get_programs(args[0], args[1])

if __name__ == "__main__":
    main()
```

```shell:shell
python -m programs.py 20240521 FMT 
```

```text:result
0500-0530 早見沙織 Memories＆Discoveries https://audee.jp/program/show/27337
0530-0600 中島岳志 FUTURES https://audee.jp/program/show/35004
0600-0900 ユージ / 吉田明世 ゲスト: 神庭亮介（ダイヤモンド・ライフ副編集長） ONE MORNING https://www.tfm.co.jp/one/
0900-1100 住吉美紀 Blue Ocean https://www.tfm.co.jp/bo/
1100-1130 坂本美雨 ディア・フレンズ https://www.tfm.co.jp/dear/
1130-1300 安田レイ ALL-TIME BEST～LUNCH TIME POWER MUSIC～ supported by Ginza Sony Park https://www.tfm.co.jp/atb/
1300-1455 山崎怜奈 山崎怜奈の誰かに話したかったこと。 https://www.tfm.co.jp/darehana
1455-1500 IMP. IMP.のIMPickup https://audee.jp/program/show/300007784
1500-1550 稲垣吾郎 / 山本里菜 THE TRAD https://www.tfm.co.jp/trad/
1550-1600 川瀬良子 あぐりずむ https://www.tfm.co.jp/agrizm/
1600-1650 稲垣吾郎 / 山本里菜 THE TRAD https://www.tfm.co.jp/trad/
1650-1700 八嶋智人 SUZUKI No.1 Factory https://www.tfm.co.jp/factory/
1700-2000 マンボウやしろ / 浜崎美保 Skyrocket Company https://www.tfm.co.jp/sky/
2000-2055 野呂佳代 ゲスト: 永野 Roomie Roomie! https://www.tfm.co.jp/roomie/
2055-2100 None TOKYO FM NEWS None
2100-2130 結那（Liella!） / 坂倉 花（Liella!） What a Wonderful Radio!!☆☆☆ https://audee.jp/program/show/60925
2130-2155 ヒコロヒー トーキョー・エフエムロヒー https://www.tfm.co.jp/fmrohee/
2155-2200 None TOKYO FM NEWS～きょうのSHO TIME! None
2200-2355 こもり校長 / COCO教頭 ゲスト: 三月のパンタシア SCHOOL OF LOCK! https://www.tfm.co.jp/lock/
2355-2400 None TOKYO FM NEWS None
2400-2455 福山雅治 JET STREAM https://www.tfm.co.jp/jetstream/
2455-2500 None TOKYO FM NEWS None
2500-2600 OCTPATH 小堀 柊 / OCTPATH 栗田 航兵 / チョコレートプラネット TOKYO SPEAKEASY https://www.tfm.co.jp/speakeasy/
2600-2800 緑仙 / 和田雅成 AuDee CONNECT https://audee.jp/program/show/60610
2800-2900 早見沙織 Memories＆Discoveries https://audee.jp/program/show/27337
```