Added current weather for openweathermap
This commit is contained in:
parent
4f403561ba
commit
5e598f3e4f
1 changed files with 40 additions and 6 deletions
|
@ -15,6 +15,39 @@ def __init__():
|
|||
token = openweathermap_token.read()
|
||||
|
||||
|
||||
class CurrentWeather:
|
||||
sunrise: datetime
|
||||
sunset: datetime
|
||||
temperature: float
|
||||
feels_like: float
|
||||
wind_speed: float
|
||||
rain: float
|
||||
main: str
|
||||
description: str
|
||||
|
||||
def __init__(self, json_data: json):
|
||||
self.sunrise = datetime.fromtimestamp(json_data['sunrise'])
|
||||
self.sunset = datetime.fromtimestamp(json_data['sunset'])
|
||||
self.temperature = json_data['temp']
|
||||
self.feels_like = json_data['feels_like']
|
||||
self.wind_speed = json_data['wind_speed']
|
||||
if 'rain' in json_data:
|
||||
self.rain = json_data['rain']['1h']
|
||||
else:
|
||||
self.rain = -1
|
||||
self.main = json_data['weather'][0]['main']
|
||||
self.description = json_data['weather'][0]['description']
|
||||
|
||||
def __str__(self):
|
||||
string = f"*Now*: {self.main} | {self.temperature:.0f}°C 🧑: {self.feels_like:.0f}°C"
|
||||
if self.rain != -1:
|
||||
string += f" ☔: {self.rain:.0f}mm"
|
||||
|
||||
string += f" 💨: {3.6 * self.wind_speed:.1f}km/h" \
|
||||
f" ☀️: {self.sunrise.strftime('%H:%M')} - {self.sunset.strftime('%H:%M')}"
|
||||
return string
|
||||
|
||||
|
||||
class HourlyWeather:
|
||||
time: datetime
|
||||
temperature: float
|
||||
|
@ -43,7 +76,7 @@ class HourlyWeather:
|
|||
if self.probability_of_precipitation != 0:
|
||||
string += f" ☔: {100 * self.probability_of_precipitation:.0f}% {self.rain}mm"
|
||||
|
||||
string += f" 💨{3.6 * self.wind_speed:.1f}km/h"
|
||||
string += f" 💨: {3.6 * self.wind_speed:.1f}km/h"
|
||||
return string
|
||||
|
||||
|
||||
|
@ -80,17 +113,20 @@ class DailyWeather:
|
|||
|
||||
|
||||
class TotalWeather:
|
||||
current_weather: CurrentWeather
|
||||
hourly_weather = []
|
||||
daily_weather = []
|
||||
|
||||
def __init__(self, json_data: json):
|
||||
for single_daily_weather in json_data['daily'][2:]:
|
||||
self.daily_weather.append(DailyWeather(single_daily_weather))
|
||||
for single_hourly_weather in json_data['hourly']:
|
||||
for single_hourly_weather in json_data['hourly'][1:]:
|
||||
self.hourly_weather.append(HourlyWeather(single_hourly_weather))
|
||||
self.current_weather = CurrentWeather(json_data['current'])
|
||||
|
||||
def __str__(self):
|
||||
string = ""
|
||||
string += (str(self.current_weather) + '\n')
|
||||
short_hourly_weather = self.hourly_weather[:5] + self.hourly_weather[6:20:2] + self.hourly_weather[21::4]
|
||||
day_before = short_hourly_weather[0].time.strftime("%d")
|
||||
for weather in short_hourly_weather:
|
||||
|
@ -123,10 +159,8 @@ class City:
|
|||
|
||||
def query_weather(self):
|
||||
request = requests.get(
|
||||
"http://api.openweathermap.org/data/2.5/onecall?\
|
||||
lang=de&units=metric&exclude=minutely&lat={lat}&lon={lon}&appid={token}".format(
|
||||
lat=self.lat,
|
||||
lon=self.lon, token=token))
|
||||
f"http://api.openweathermap.org/data/2.5/onecall?\
|
||||
lang=de&units=metric&exclude=minutely&lat={self.lat}&lon={self.lon}&appid={token}")
|
||||
if request.status_code != 200:
|
||||
raise ServerCommunicationError
|
||||
self.weather = TotalWeather(request.json())
|
||||
|
|
Loading…
Reference in a new issue