Compare commits
2 Commits
a7d085e607
...
cb610ae248
Author | SHA1 | Date | |
---|---|---|---|
cb610ae248 | |||
76aa1195ef |
66
main.py
66
main.py
@@ -7,11 +7,12 @@ import argparse
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
from sty import fg, bg, ef, rs
|
||||
from sty import fg
|
||||
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")
|
||||
@@ -63,15 +64,24 @@ def display_full(data):
|
||||
|
||||
wind_speed = infos["data"]["instant"]["details"]["wind_speed"]
|
||||
|
||||
wind_direction = diplay_wind_direction(
|
||||
wind_dir = display_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")
|
||||
icon_str = ''
|
||||
if "next_12_hours" in infos["data"]:
|
||||
icon_str = infos["data"]["next_12_hours"]["summary"]["symbol_code"]
|
||||
if "next_6_hours" in infos["data"]:
|
||||
icon_str = infos["data"]["next_6_hours"]["summary"]["symbol_code"]
|
||||
if "next_1_hours" in infos["data"]:
|
||||
icon_str = infos["data"]["next_1_hours"]["summary"]["symbol_code"]
|
||||
icon = display_icon(icon_str)
|
||||
|
||||
humidity = infos["data"]["instant"]["details"]["relative_humidity"]
|
||||
print(f" {time} : {icon} {temperature}° / {humidity}% / {wind_dir} {wind_speed} m/s")
|
||||
|
||||
|
||||
def diplay_wind_direction(degrees: float) -> str:
|
||||
def display_wind_direction(degrees: float) -> str:
|
||||
""" Retourne une fleche indicant la direction du vent"""
|
||||
if 22.5 <= degrees < 67.5:
|
||||
return '↙'
|
||||
@@ -97,27 +107,41 @@ def diplay_wind_direction(degrees: float) -> str:
|
||||
return '↓'
|
||||
|
||||
|
||||
def display_icon(string: str) -> str:
|
||||
""" """
|
||||
# https://www.nerdfonts.com/cheat-sheet
|
||||
t = {
|
||||
'clearsky_day': fg.yellow + '' + fg.rs,
|
||||
'clearsky_night': '',
|
||||
'cloudy': '',
|
||||
'fog': '',
|
||||
'lightrain': '',
|
||||
'heavyrain': '',
|
||||
'partlycloudy_night': '',
|
||||
'partlycloudy_day': '',
|
||||
'rain': '',
|
||||
'lightrainshowers_night': '',
|
||||
'lightrainshowers_day':'',
|
||||
'fair_day': fg.yellow + '' + fg.rs,
|
||||
'fair_night': '',
|
||||
}
|
||||
|
||||
if string in t:
|
||||
return t[string]
|
||||
|
||||
return string
|
||||
|
||||
def coloring_temperature(temperature: float) -> str:
|
||||
""" A partir de la température retourne une chaine de caractères colorisée """
|
||||
if temperature >= 40.0:
|
||||
return fg.magenta + str(temperature) + fg.rs
|
||||
|
||||
if temperature >= 30.0:
|
||||
return fg.red + str(temperature) + fg.rs
|
||||
temp_limit = [40, 30, 25, 20, 10, 0]
|
||||
color = [fg.magenta, fg.red, fg(255, 150, 50), fg.yellow, '', fg.cyan]
|
||||
|
||||
if temperature >= 25.0:
|
||||
return fg(255, 150, 50) + str(temperature) + fg.rs
|
||||
for key, limit in enumerate(temp_limit):
|
||||
if temperature >= limit:
|
||||
return color[key] + str(temperature) + fg.rs
|
||||
|
||||
if temperature >= 20.0:
|
||||
return fg.yellow + str(temperature) + fg.rs
|
||||
|
||||
if temperature >= 10.0:
|
||||
return str(temperature)
|
||||
|
||||
if temperature >= 0.0:
|
||||
return fg.cyan + str(temperature) + fg.rs
|
||||
|
||||
return fg.blue + str(cur_temp) + fg.rs
|
||||
return fg.blue + str(temperature) + fg.rs
|
||||
|
||||
|
||||
def main():
|
||||
|
Reference in New Issue
Block a user