以前、
かって
そんなわけで、
かって

こうしておけば、
ファイルの場合、
$ ls MP3/NHK/クラシック ... 「シンフォニア 変ホ長調 Wq。183 第2」-2012-01-31-14-00.mp3 「組曲“ヴィクトリアン・キッチン・ガーデン”-2012-01-31-07-20.mp3 アンダルシア幻想曲-2012-02-07-14-00.mp3 イタリア風序曲-2012-02-01-14-00.mp3 ウィリアムテル、ウィンナワルツ、ビゼー、チャイコフスキー.mp3 ...
もう少し使いやすくするために、
NHKの番組情報API
「らじる★らじる」

この番組情報はどこから取ってくるのだろう、
この設定ファイルを眺めてみると、
<!-- ただいま放送中の番組を取得するAPIのURL -->
<url_program_noa>
http://www2.nhk.or.jp/hensei/api/noa.cgi?c=3&wide=1&mode=jsonp
</url_program_noa>
wgetを使ってこのURLにアクセスしてみると、
$ wget 'http://www2.nhk.or.jp/hensei/api/noa.cgi?c=3&wide=1&mode=jsonp' -O sample.dat $ cat sample.dat nowonair({"title":"NHK\u30cd\u30c3\u30c8\u30e9\u30b8\u30aa\u305f\u3060\u3044\u307e \u914d\u4fe1\u4e2d","language":"ja","pubDate":"Thu, 27 Mar 2014 00:14:59 +0900", "curtime":"2014-03-27 00:14:59","netr10":{"ch":"netr1","index":0,"starttime": "2014-03-27 00:10:00","endtime":"2014-03-27 01:00:00","title":"\u30e9\u30b8\u30aa\u6df1 \u591c\u4fbf \u5bae\u5ddd\u6cf0\u592b","subtitle":"\u25bd\u30ef\u30fc\u30eb\u30c9\u30cd ...
得られたデータはテキスト形式ではあるものの、
番組情報データの解読
実のところ、
JSON
最近よく使っているPythonにもJSON用のモジュールが用意されています。そこで、
$ python Python 2.7.3 (default, May 24 2012, 17:48:47) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import json >>> f=open('sample.dat','r') >>> l=f.readline() >>> data=json.loads(l) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/json/__init__.py", line 326, in loads return _default_decoder.decode(s) File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib64/python2.7/json/decoder.py", line 384, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded >>>
おっと
>>> data = json.loads(l.lstrip('nowonair(').rstrip(');')) >>> print data {u'language': u'ja', u'pubDate': u'Thu, 27 Mar 2014 09:18:44 +0900', u'title': u'NHK\u30cd\u30c3 ...
こんどは正しく読み込めたようです。Pythonの場合、
>>> print data.keys() [u'001netr2B1', u'language', u'pubDate', u'title', u'001netfmF1', u'001netr20', u'001netr1B1', u'001netfm0', u'curtime', u'001netr1F1', u'001netfmB1', u'001netr10', u'001netr2F1'] >>> print data['language'] ja >>> print data['title'] NHKネットラジオただいま配信中 >>> print data['001netfm0'] {u'index': 0, u'ch': u'netfm', u'subtitle': u'\u300c\u30b9\u30a6\u30a7\u30c3\u30c8\u300d (\u30c8\u30cb\u30fb\u30d6\u30e9\u30af\u30b9\u30c8\u30f3&\u30d9\u30a4\u30d3\u30fc\u30d5\u30a7\u30a ....
この結果を見ると、
>>> print data['001netfm0'].keys() [u'index', u'ch', u'subtitle', u'title', u'url_goods', u'hashtag', u'free', u'content', u'station', u'music', u'starttime', u'act', u'link', u'rebroad', u'endtime'] >>> print data['001netfm0']['title'] ザ・ソウルミュージック▽Blast From The Past 第2夜 >>> print data['001netfm0']['content'] 「スウェット」 (トニ・ブラクストン&ベイビーフェイス) (4分25秒) <MOTOWNUICT-1071> 「イッツ・イン・ユー」 (ロウ・ソウル・エクスプレス) (3分26秒) <WARNERWPCR-27718> 「リッスン・トゥ・ミー」 (ベイビー・ヒューイ) (6分36秒) <WARNERWPCR-27720> 「カム・オン・アンド・ステイ・ウィズ・ミー」 (サウンズ・オブ・ザ・シティ >>> print data['001netr20']['title'] カルチャーラジオ 芸術その魅力「楽器別・中南米音楽入門」(12)-終-
なるほど、
>>> print data['001netfm0']['starttime'] 2014-03-27 10:00:00 >>> print data['001netfmB1']['starttime'] 2014-03-27 09:20:00 >>> print data['001netfmF1']['starttime'] 2014-03-27 11:00:00 >>> print data['001netfmF1']['title'] 弾き語りフォーユー
どうやら、
>>> print data['001netr10']['title'] 第86回選抜高校野球大会 第6日 >>> print data['001netr1F1']['title'] 天気予報・交通情報 >>> print data['001netr1F1']['starttime'] 2014-03-27 11:50:00
どうやらルールとして、
番組情報が変わるように、
title | 「NHKネットラジオただいま配信中」 |
---|---|
language | ja |
pubData | このデータをダウンロードした時刻 |
curtime | 現在時刻 |
001netfm0 | NHK FMの現在の番組情報 |
001netfmB1 | NHK FMの1つ前の番組情報 |
001netfmF1 | NHK FMの次の番組情報 |
001netr10 | NHKラジオ第一の現在の番組情報 |
001netr1B1 | NHKラジオ第一の1つ前の番組情報 |
001netr1F1 | NHKラジオ第一の次の番組情報 |
001netr20 | NHKラジオ第二の現在の番組情報 |
001netr2B1 | NHKラジオ第二の1つ前の番組情報 |
001netr2F1 | NHKラジオ第二の次の番組情報 |
そして、
index | 0(現在の番組)、 |
---|---|
ch | netfm |
title | 番組名 |
subtitle | 番組内容の要約 |
hashtag | Twitterに投稿する際のハッシュタグ |
station | 放送局の識別子。東京 |
starttime | 番組の開始時刻。"2014-03-27 10:00:00"という形式 |
endtime | 番組の終了時刻。形式はstarttimeと同じ |
act | 出演者 |
content | 短めの番組内容紹介 |
link | 各番組のホームページへのリンク |
rebroad | 1だと再放送 |
url_ | 関連商品等へのリンク? |
music | BGM等の曲名? |
free | 曲目、 |
これらのうちurl_
このように、