初めに
ダッシュボード作成のために、各種情報をAPIにて取得する
Sunset and sunrise times APIを使用すると取得できることが判明
⇒Pythonを用い、HP等で表示させる用途を想定
※PHPバージョン
環境
- Windows10
- Python 3.8.12
パラメータ
lat (float):必須、取得したい場所の緯度、
lng (float): 必須、取得したい場所の経度
date (string):オプション、YYYY-MM-DDフォーマットにて入力/相対・絶対日時の指定も可能。入力しない場合は現在の時刻を取得する。
callback (string):オプション,Callback function name for JSONP response.
formatted (integer): オプション、0 か 1 (1 がデフォルト). 0の場合はISO 8601にて出力される。
本コードではsunset_url.formatにてパラメータをセットしてください。
コード
sunset_time_api.php
# -*- coding:utf-8 -*-
#各種libraryのインポート
import requests
import json
import datetime
from datetime import datetime, timezone, timedelta
# sunset_apiより天気を取得する
sunset_url = "https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&date={date}&formatted=0"
#各種パラメータをセット
sunset_url = sunset_url.format(lat="35.00000", lon="135.000000", date="today")
sunset_json = requests.get(sunset_url).json()
# ISO8601フォーマット => Datetime_awere(timezoneあり)
utc_sunrise = datetime.fromisoformat(sunset_json["results"]["sunrise"])
utc_sunset = datetime.fromisoformat(sunset_json["results"]["sunset"])
utc_civil_twilight_end = datetime.fromisoformat(
sunset_json["results"]["civil_twilight_end"])
utc_nautical_twilight_end = datetime.fromisoformat(
sunset_json["results"]["nautical_twilight_end"])
utc_astronomical_twilight_end = datetime.fromisoformat(
(sunset_json["results"]["astronomical_twilight_end"]))
# timezone変更(UTC => JST)、表示フォーマットの変更
# 時刻フォーマット例;'%Y年%-m月%-d日 %-H時%-M分%-S秒'
JST = timezone(timedelta(hours=+9), "JST")
sunrise = utc_sunrise.astimezone(JST).strftime('%m/%d %H:%M')
sunset = utc_sunset.astimezone(JST).strftime('%m/%d %H:%M')
civil_twilight_end = utc_civil_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')
nautical_twilight_end = utc_nautical_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')
astronomical_twilight_end = utc_astronomical_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')
print("日の出 : " + sunrise)
print("日の入り:"+sunset)
print("市民薄明の終わり:" + civil_twilight_end)
print("航海薄明の終わり:" + nautical_twilight_end)
print("天文薄明の終わり:" + astronomical_twilight_end)
参考サイト