NHK 番組表 API を触る為の Python クライアント作った
はい
え!?有給休暇取ってないの!?翌日が祝日なのに!?なにすんの!?前日が日曜日で?次の日が建国記念日で?有給取らない?なにすんの!?なにすんのそれ!?え!?有給取らないの!?4連休に出来るのに!?なにすんの!?どこ勤務?どこ勤務?どこ勤務?どこ勤務?どこ勤務?どこ勤務?どこ勤務?ど
— すぎやまたいち (@sgymtic) 2014, 2月 9
有給とったはいいけど自宅の空調から異音がして全取っ替えを頼んだら 5 時間近く立ち会いでどこにも行けず暇になったので作った。
使い方は README を、API の詳細は公式ドキュメントを読めばいいと思う。例によって Python 3.3 じゃないと動きません。
先行者たち
- PHP: NHK番組表API for PHP を書いたよ - localdisk
- Scala: NHK 番組表 API の Scala クライアント - seratch's weblog in Japanese
- Perl: NHK番組表APIを触る為のPerlクライアント作った - その手の平は尻もつかめるさ
- Go: mattn/go-nhk · GitHub
- Ruby: NHK 番組表 API を触る為の Ruby クライアント作った - life.stub(:happy?).and_return(true)
- Emacs: NHK 番組表 API を触る為の Emacs クライアント作った - Thanks Driven Life
その他
実装的にはたいしたことやらないので雑多なこと色々やった。
バージョン番号の埋め込み
setup.py の setup 関数に指定するやつ、普通はそのまま書くけど、 SQLAlchemy のこれパクって nhk.__version__ で参照できる番号と同じになるようにした。便利かどうかはよくわからない。
egg じゃなくて wheel で配布するようにした
2014 年なんで。
$ pip install wheel $ python setup.py bdist_wheel upload
drone.io 使った
テストするのに API KEY 必要なので、テストコードで環境変数をみるようにして drone.io 使うようにした。
drone.io のスクリプトはこんなの。
pip install -e .[testing] python setup.py test pip install wheel python setup.py sdist bdist_wheel
環境変数 NHK_API_KEY は drone.io の設定の Environment Variables ってとこに入れる。
でもこれ普通に API 利用回数消費するので実行しすぎるとテスト全部失敗することになる。。。
ResourceWarning 出てるけど放置した
Build #3 | nhk-api
なんか出てるけど直してない。
ResourceWarning in python 3.2+ · Issue #1882 · kennethreitz/requests · GitHub
これかなー。
実用性
自作の録画サーバーに組み込んで使うかというと、
- 民法には同様の API がない
- API の仕様上 2 日分 しか取得できない(従来の epg 取得方法なら 1 週間ぐらい)
- NHK だけ特別扱いして実装するのがだるい
- オフラインでも動作するようにしたい
使わないと思います。
追記
epgdump は epgdump でチューナー使うことになるし、そこ効率化しようとすると録画してない時間を割り出して epg 取得するとか考えないといけなくてだるいけど、多分そんなこと考えるよりチューナー増やして金で解決したほうがはやい
— ねじめ (@drillbits) 2014, 2月 10
金で解決できるの便利
— ねじめ (@drillbits) 2014, 2月 10
というわけで一番下のチョコください http://t.co/cIAMiq2zb6
— ねじめ (@drillbits) 2014, 2月 10