diff --git a/main.py b/main.py index 7e87070..958d85c 100755 --- a/main.py +++ b/main.py @@ -12,7 +12,6 @@ from meteo.config import Config YR_NO_URL = "https://api.met.no/weatherapi/locationforecast/2.0/" - def load_args(): """Charge l'action et les paramêtres communs a toutes les actions.""" parser = argparse.ArgumentParser(description="Affiche la météo") @@ -44,25 +43,58 @@ def ask_api(latitude: float, longitude: float, altitude: int) -> dict: return json.loads(response.text) -def display_full(api_response): +def display_full(data): """ Affiche les informations météo complètes """ locale.setlocale(locale.LC_TIME, "fr_FR.utf8") cur_date = datetime.fromisoformat("1970-01-01T00:00:00Z").date() - for time in api_response["properties"]["timeseries"]: - new_date = datetime.fromisoformat(time["time"]) + for infos in data["properties"]["timeseries"]: + new_date = datetime.fromisoformat(infos["time"]) if new_date.date() > cur_date: print(new_date.strftime("%A, %d. %B %Y")) cur_date = new_date.date() - cur_hour = new_date.strftime("%H:%M") - cur_temp = time["data"]["instant"]["details"]["air_temperature"] + time = new_date.strftime("%H:%M") - cur_temp_str = coloring_temperature(cur_temp) + temperature = coloring_temperature( + infos["data"]["instant"]["details"]["air_temperature"] + ) + + wind_speed = infos["data"]["instant"]["details"]["wind_speed"] - cur_humidity = time["data"]["instant"]["details"]["relative_humidity"] - print(f" {cur_hour} : {cur_temp_str}° / {cur_humidity}%") + wind_direction = diplay_wind_direction( + infos["data"]["instant"]["details"]["wind_from_direction"] + ) + + cur_humidity = infos["data"]["instant"]["details"]["relative_humidity"] + print(f" {time} : {temperature}° / {cur_humidity}% / {wind_direction} {wind_speed} m/s") + + +def diplay_wind_direction(degrees: float) -> str: + """ Retourne une fleche indicant la direction du vent""" + if 22.5 <= degrees < 67.5: + return '↗' + + if 67.5 <= degrees < 112.5: + return '→' + + if 112.5 <= degrees < 157.5: + return '↘' + + if 157.5 <= degrees < 202.5: + return '↓' + + if 202.5 <= degrees < 247.5: + return '↙' + + if 247.5 <= degrees < 292.5: + return '←' + + if 292.5 <= degrees < 337.5: + return '↖' + + return '↑' def coloring_temperature(temperature: float) -> str: