59 lines
1.6 KiB
Python
Executable file
59 lines
1.6 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
#
|
|
# Pulls out only the required pieces for the esp_time.ino arduino program
|
|
# the ESP8266 doesn't have enough RAM to parse the whole JSON object.
|
|
# substitue in api_key, run this and place the output at a web server
|
|
# adjust ds_url in esp_time.ino to point at that web server!
|
|
|
|
import json
|
|
import urllib.request
|
|
|
|
ds_url = "https://api.darksky.net/forecast/";
|
|
ds_ll = "/-35.135,149.61";
|
|
ds_opts = "?units=auto"
|
|
|
|
api_key = "PUT YOUR API KEY HERE"
|
|
|
|
contents = urllib.request.urlopen(ds_url + api_key + ds_ll + ds_opts)
|
|
|
|
d = json.load(contents)
|
|
|
|
new = {}
|
|
current = d['currently']
|
|
today = d['daily']['data'][0]
|
|
tomorrow = d['daily']['data'][1]
|
|
day_after = d['daily']['data'][2]
|
|
|
|
new['current'] = {}
|
|
new['current']['temp'] = current['temperature']
|
|
new['current']['icon'] = current['icon']
|
|
new['today'] = {}
|
|
new['today']['max'] = today['temperatureMax']
|
|
new['today']['icon'] = today['icon']
|
|
new['tomorrow'] = {}
|
|
new['tomorrow']['max'] = tomorrow['temperatureMax']
|
|
new['tomorrow']['icon'] = tomorrow['icon']
|
|
new['day_after'] = {}
|
|
new['day_after']['max'] = day_after['temperatureMax']
|
|
new['day_after']['icon'] = day_after['icon']
|
|
|
|
|
|
with open('darksky.json', 'w') as output:
|
|
output.write(json.dumps(new))
|
|
output.close()
|
|
|
|
|
|
|
|
|
|
# OWM
|
|
# for forecast in d['list']:
|
|
# utcDate = datetime.datetime.strptime(forecast['dt_txt']+"+0000", "%Y-%m-%d %H:%M:%S%z")
|
|
|
|
# utcDate.replace(tzinfo=UTC)
|
|
|
|
# print("********")
|
|
# print(utcDate)
|
|
# print(utcDate.astimezone(local))
|
|
# print(forecast['weather'][0]['description'], forecast['weather'][0]['icon'], forecast['main']['temp'])
|
|
|