changed weather api
This commit is contained in:
parent
b01ab720c1
commit
d38296ec2a
@ -661,74 +661,79 @@ def updateNews(api_key, logf):
|
||||
|
||||
def updateWeather(api_key, logf):
|
||||
|
||||
max_cities = 30
|
||||
|
||||
try:
|
||||
gn = geocoders.GeoNames(username='fintic')
|
||||
|
||||
weather_codes = {
|
||||
0: ['Clear', 'Clear sky'],
|
||||
1: ['Clouds', 'few clouds'], 2: ['Clouds', 'scattered clouds'], 3: ['Clouds', 'overcast clouds'],
|
||||
45: ['Fog', 'Fog'], 48: ['Fog', 'depositing rime fog'],
|
||||
51: ['Drizzle', 'Light'], 53: ['Drizzle', 'moderate'], 55: ['Drizzle', 'dense'], 56: ['Drizzle', 'light'], 57: ['Drizzle', 'dense'],
|
||||
61: ['Rain', 'light rain'], 63: ['Rain', 'moderate rain'], 65: ['Rain', 'very heavy rain'],
|
||||
66: ['Rain', 'freezing rain'], 67: ['Rain', 'freezing rain'],
|
||||
71: ['Snow', 'slight'], 73: ['Snow', 'moderate'], 75: ['Snow', 'heavy'], 77: ['Snow', 'Snow grains'], 85: ['Snow', 'slight'], 86: ['Snow', 'heavy'],
|
||||
80: ['Rain', 'light intensity shower rain'], 81: ['Rain', 'shower rain'], 82: ['Rain', 'heavy intensity shower rain'],
|
||||
95: ['Thunderstorm', 'Slight or moderate'], 96: ['Thunderstorm', 'slight hail'], 99: ['Thunderstorm', 'heavy hail']
|
||||
}
|
||||
f = open('csv/daily_weather.json', 'r')
|
||||
all_daily_settings = json.load(f)
|
||||
f.close()
|
||||
|
||||
f = open('csv/current_weather.json', 'r')
|
||||
all_current_settings = json.load(f)
|
||||
f.close()
|
||||
|
||||
|
||||
current_locations = list(all_current_settings['locations'].keys())
|
||||
daily_locations = list(all_daily_settings['locations'].keys())
|
||||
|
||||
all_locations = list(set(current_locations + daily_locations))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
current_weathers = {}
|
||||
daily_weathers = {}
|
||||
|
||||
|
||||
|
||||
|
||||
for location in all_locations:
|
||||
loc = gn.geocode(location)
|
||||
current_weather = {}
|
||||
|
||||
|
||||
lat = loc.latitude
|
||||
lon = loc.longitude
|
||||
url = 'https://api.openweathermap.org/data/2.5/onecall?lat={}&units=metric&lon={}&appid={}'.format(lat, lon, api_key)
|
||||
r = requests.get(url)
|
||||
|
||||
weather = r.json()['current']
|
||||
|
||||
current_weather['main_weather'] = weather['weather'][0]['main']
|
||||
current_weather['description'] = weather['weather'][0]['description']
|
||||
current_weather['temp'] = weather['temp']
|
||||
current_weather['min_temp'] = r.json()['daily'][0]['temp']['min']
|
||||
current_weather['max_temp'] = r.json()['daily'][0]['temp']['max']
|
||||
current_weather['feels_like'] = weather['feels_like']
|
||||
current_weather['humidity'] = weather['humidity']
|
||||
current_weather['clouds'] = weather['clouds']
|
||||
current_weather['wind_speed'] = weather['wind_speed']
|
||||
current_weather['wind_direction'] = weather['wind_deg']
|
||||
current_weather['visibility'] = weather['visibility']
|
||||
current_weather['uv'] = weather['uvi']
|
||||
current_weather['rain_chance'] = r.json()['hourly'][0]['pop']
|
||||
|
||||
|
||||
url = 'https://api.open-meteo.com/v1/forecast?latitude={}&longitude={}&hourly=apparent_temperature,temperature_2m,relativehumidity_2m,precipitation_probability,weathercode,cloudcover,visibility,windspeed_10m,winddirection_10m,uv_index,is_day&daily=weathercode,temperature_2m_max,temperature_2m_min¤t_weather=true&timezone=UTC'.format(lat, lon)
|
||||
r = requests.get(url).json()
|
||||
|
||||
times = r['hourly']['time']
|
||||
hour_now = datetime.now(pytz.utc).strftime('%Y-%m-%dT%H:00')
|
||||
index_pos = times.index(hour_now)
|
||||
|
||||
main_weather_code = r['hourly']['weathercode'][index_pos]
|
||||
current_weather['main_weather'] = weather_codes[main_weather_code][0]
|
||||
current_weather['description'] = weather_codes[main_weather_code][1]
|
||||
current_weather['temp'] = r['hourly']['temperature_2m'][index_pos]
|
||||
current_weather['min_temp'] = r['daily']['temperature_2m_min'][0]
|
||||
current_weather['max_temp'] = r['daily']['temperature_2m_max'][0]
|
||||
current_weather['feels_like'] = r['hourly']['apparent_temperature'][index_pos]
|
||||
current_weather['humidity'] = r['hourly']['relativehumidity_2m'][index_pos]
|
||||
current_weather['clouds'] = r['hourly']['cloudcover'][index_pos]
|
||||
current_weather['visibility'] = r['hourly']['visibility'][index_pos]
|
||||
current_weather['uv'] = r['hourly']['uv_index'][index_pos]
|
||||
current_weather['rain_chance'] = r['hourly']['precipitation_probability'][index_pos]
|
||||
current_weather['wind_speed'] = r['hourly']['windspeed_10m'][index_pos]
|
||||
current_weather['wind_direction'] = r['hourly']['winddirection_10m'][index_pos]
|
||||
current_weather['is_day'] = r['hourly']['is_day'][index_pos]
|
||||
|
||||
if location in current_locations:
|
||||
current_weathers[location] = current_weather
|
||||
|
||||
|
||||
daily_weather = []
|
||||
daily = r.json()['daily']
|
||||
|
||||
for day in daily:
|
||||
daily = r['daily']
|
||||
|
||||
for i in range(0,7):
|
||||
dct = {}
|
||||
dct['main_weather'] = day['weather'][0]['main']
|
||||
dct['description'] = day['weather'][0]['description']
|
||||
dct['min_temp'] = day['temp']['min']
|
||||
dct['max_temp'] = day['temp']['max']
|
||||
daily_weather_code = daily['weathercode'][i]
|
||||
dct['main_weather'] = weather_codes[daily_weather_code][0]
|
||||
dct['description'] = weather_codes[daily_weather_code][1]
|
||||
dct['min_temp'] = daily['temperature_2m_min'][i]
|
||||
dct['max_temp'] = daily['temperature_2m_max'][i]
|
||||
daily_weather.append(dct)
|
||||
|
||||
#add relevant urrent information to first day in daily
|
||||
daily_weather[0]['temp'] = weather['temp']
|
||||
|
||||
# add relevant urrent information to first day in daily
|
||||
daily_weather[0]['temp'] = current_weather['temp']
|
||||
daily_weather[0]['rain_chance'] = current_weather['rain_chance']
|
||||
daily_weather[0]['humidity'] = current_weather['humidity']
|
||||
daily_weather[0]['wind_speed'] = current_weather['wind_speed']
|
||||
@ -737,22 +742,20 @@ def updateWeather(api_key, logf):
|
||||
daily_weather[0]['wind_speed'] = current_weather['wind_speed']
|
||||
daily_weather[0]['wind_direction'] = current_weather['wind_direction']
|
||||
daily_weather[0]['visibility'] = current_weather['visibility']
|
||||
|
||||
|
||||
if location in daily_locations:
|
||||
daily_weathers[location] = daily_weather
|
||||
|
||||
|
||||
|
||||
all_current_settings['locations'] = current_weathers
|
||||
all_daily_settings['locations'] = daily_weathers
|
||||
f = open( "csv/current_weather.json", 'w+' )
|
||||
json.dump( all_current_settings, f)
|
||||
f = open("csv/current_weather.json", 'w+')
|
||||
json.dump(all_current_settings, f)
|
||||
f.close()
|
||||
|
||||
f = open( "csv/daily_weather.json", 'w+' )
|
||||
json.dump( all_daily_settings, f)
|
||||
|
||||
f = open("csv/daily_weather.json", 'w+')
|
||||
json.dump(all_daily_settings, f)
|
||||
f.close()
|
||||
|
||||
|
||||
except:
|
||||
pass
|
||||
#logf = open('log.txt', "a")
|
||||
|
Loading…
Reference in New Issue
Block a user