これは防災アプリ Advent Calendar 2022の16日目の記事です。
はじめに
こんにちは、UD_Ri-chan(Rikuyade)30615🐺🎤です。
地震関連ではSeto City Camと名乗っています。
最近地震観測してn(ry
OBS使うとPCがフリーズするのなんとかしたい(切実)
最近は、Python / discord.pyを8月に始めてDiscord Botを作ってたり、11月くらいにC#を始めてちょいちょいソフトを作ってたりします。
概要
Pythonを使用して、最新の地震情報を取得するものを作ります。この記事では、P2P地震情報 JSON API v2から地震情報を取得することにします。
この記事を書くにあたっての環境
・Windows 10 Home 22H2(64bit)
・Python 3.10.5
・pip 22.3
・requests 2.28.1
1. 地震情報APIからデータ(JSON)を取得する
まず、地震情報APIからデータを取得します。前述したとおり、P2P地震情報 JSON API v2から地震情報を取得していきます。
必要なモジュールをインストールする
地震情報を取得すること、つまり、インターネット上からデータを取得する必要があります。
Pythonにおいて、インターネット上からデータ取得するには、追加でモジュールをインストールする必要があります。
この記事では、requests
というモジュールを使用していきます。
コマンドプロンプトなどを起動して、
pip install requests
と入力して実行してください。
これでモジュールがインストールされます。
上記のコマンドを実行したあとに、
pip list
と入力して実行すると、モジュールが正しくインストールされているか確認することができます。
requests
と書かれている行があれば正しくインストールされています。
地震情報のデータ(JSON)を取得する
以降登場するコード内の変数名は、適宜置き換えていただいて構いません。
P2P地震情報 JSON API v2は、JSONという形式で地震情報などが提供されています。
このJSONを取得していきます。
#インターネット上からデータを取得するためのモジュールをインポート
import requests
#リクエストするURLを指定(最新の地震情報のデータを取得することができるURL)
p2pquake_url = 'https://api.p2pquake.net/v2/history?codes=551&limit=1'
#リクエスト(データを取得する)
p2pquake_json = requests.get(p2pquake_url).json()
これで、最新の地震情報のデータが取得できます。
2. 取得したデータ(JSON)の中から、必要なものを取り出す
取得したデータ(JSON)の中から、必要なものを取り出します。
今回は、震央地名
を取り出すことにします。
データ(JSON)の中身を見てみる
まず、P2P地震情報 JSON API v2のJSONを中身を見てみましょう。
先ほどのコード(プログラム)の変数p2pquake_url
の右に書いてあるURLをブラウザで開いてみましょう。
そうすると、震央地名は、1つ目の配列(配列番号0)
の中のearthquake
の中のhypocenter
の中のname
に入っていることが分かります。
Google ChromeやMicrosoft Edgeの場合、デフォルトではJSONが非常に見ずらい状態となってしまいます。
そこで、拡張機能を入れることによりJSONが見やすくなるので、導入をおすすめします。
自分は、下の拡張機能を導入することによって、上記の画像のように表示されるようにしています。
実際に書いてみる
先ほどのことを踏まえると、下記のように記述することになります。
#震央地名を取り出して、変数Eq_nameに代入する
Eq_name = p2pquake_json[0]["earthquake"]["hypocenter"]["name"]
これで、震央地名を取得できます。
上記のコードのあとに
print(Eq_name)
を書くと、
奄美大島近海
のような形で出力されます。
震央地名だけではなく他のものを取得したい場合は、P2P地震情報 JSON API v2のAPI仕様とJSONの中身を照らし合わせたりして、いろいろ試してみてください。
さいごに
最後まで読んでいただきありがとうございました。
今回紹介したものとdiscord.pyを組み合わることによって、地震情報を取得できるDiscord Botを作れたりします。
興味があれば、ぜひ挑戦してみてください。
さて、今回、人生で初めて記事を書きました。
書き方や日本語がおかしいところがあるかもしれませんが、大目に見ていただけると幸いです。
Advent Calendarがあるというのは去年から知っていましたが、去年は書くようなことが無かったので参加していませんでした。
今回のAdvent Calendarでこうして参加することができたことを嬉しく思っています。
今後また記事を書くことがある際には、ぜひよろしくお願いします。
出典
P2Pquake JSON API v2: Earthquake information by Japan Meteorological Agency / CC BY 4.0