2020/3/25より、東電PGのサイトが変更されたことにより現時点では本APIの運用ができておりません。ご指摘ありがとうございます。
本記事は記録としてのみ残しています
令和元年台風第15号の影響で千葉県の停電が長引いている状況で、何かCivic Tech的に出来ることはないものかと思い、シンプルなAPIを作成しました。
TL;DR
- 電力会社の停電情報ページが使いづらいため、非公式API jp-power-outage を作った。
- 現時点では東京電力(東京電力パワーグリッド)管内のみ対応
- そのうち(需要があれば && 時間があれば)各地の電力会社を網羅したい
- そもそも非公式APIなんか作らなくても良いように、電力会社は公共性の高い情報に関して機械判読性の高いデータを提供してほしい……
- Pythonでスクレイピングし、
GitHub Pagesで配信している- 10分に1回、東電のページを巡回してstaticなJSONを生成する形式のためこれで十分
- **(2019-10-12 追記)**過去データに関する容量の制限を考慮し、さくらVPS(東京第2リージョン)へ移動した
URL
https://ryo-a.github.io/jp-power-outage/
最新の停電情報
10分おきにクロール
http://teiden.info/api/v1/latest/都道府県名.json
(旧URL: https://ryo-a.github.io/jp-power-outage/api/v1/latest/都道府県名.json
)
過去の停電情報
http://teiden.info/api/v1/old/YYYY/MM/DD/都道府県名/都道府県名-HHmm.json
例: 2019年9月20日 0:10取得の千葉県の停電情報
http://teiden.info/api/v1/old/2019/09/20/chiba/chiba-0010.json
GitHub Pagesでホストできる容量に上限があるので、過去データは2ヶ月を目処に削除しようかと現時点では考えています。
実装
Python + beautifulsoupでHTMLをスクレイピングしているだけです。
東電のページに余計な負荷をかけないため、停電情報が出ている自治体のページのみ取得してアクセスするようにしています。
エリア名で取得しやすいように市町村名・エリア名をキーにしたJSONを生成しています。
運用
雑に シンプルにcronでPythonスクリプトを回し、その情報をGitHubにpushしています。
cronで回すスクリプトと公開用のrepoを分けているため、スクリプトでは -C
オプションを付けてgitを叩いています。
cmd_commit = f'git -C {output_repo_dir} commit -am "update ({datetime.now().isoformat()})"'
謝辞
今回のAPIのみならず、普段から各種アドバイスに乗ってくれているRY_2718氏, kn1cht氏. min氏に感謝いたします。