LoginSignup
87
43

More than 1 year has passed since last update.

[停止中] 東電管内の停電状況を取得するAPIを作った

Last updated at Posted at 2019-09-19

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/
image.png

最新の停電情報

10分おきにクロール
http://teiden.info/api/v1/latest/都道府県名.json
(旧URL: https://ryo-a.github.io/jp-power-outage/api/v1/latest/都道府県名.json

都道府県 URL
茨城県 http://teiden.info/api/v1/latest/ibaraki.json
栃木県 http://teiden.info/api/v1/latest/tochigi.json
群馬県 http://teiden.info/api/v1/latest/gunma.json
埼玉県 http://teiden.info/api/v1/latest/saitama.json
千葉県 http://teiden.info/api/v1/latest/chiba.json
東京都 http://teiden.info/api/v1/latest/tokyo.json
神奈川県 http://teiden.info/api/v1/latest/kanagawa.json
山梨県 http://teiden.info/api/v1/latest/yamanashi.json
静岡県 http://teiden.info/api/v1/latest/shizuoka.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氏に感謝いたします。

87
43
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
87
43