Browse Source

owm extended

master
Jakub Škrabánek 1 month ago
parent
commit
99d1d78aab
  1. 58
      26_owmapi_extended/pocasi.py

58
26_owmapi_extended/pocasi.py

@ -0,0 +1,58 @@
# pip install requests colorama colorterm
import requests
from colorama import Fore, Style, init
#inicializace barev v CMD (terminálu)
init(autoreset=True)
#Klíč získate na https://home.openweathermap.org/api_keys
API_KEY = "cdcbb82b14e8e3e85117686c68e19a5b"
def ziskej_pocasi(mesto):
# & = AltGR + C
url1 = f"https://api.openweathermap.org/data/2.5/weather"
url2 = f"?q={mesto}&appid={API_KEY}&units=metric&lang=cz"
url = url1 + url2
print(f"Otevírám: {url}")
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
return data
except requests.exceptions.HTTPError:
return "Město nebylo nalezeno. Zkontroluj překlepy..."
except Exception as e:
return f"Došlo k chybě: {e}"
if __name__ == "__main__":
print(Fore.CYAN+ "--- OPEN WEATHER MAP ukázka ---")
print("tento program ti zjisti aktualní počasí v libovolném městě (možná i vesnici)")
if API_KEY == "API_KLIC":
print(Fore.RED + "\nPOZOR: Musiíš do proměné API_KEY vložit API klíč z OWM")
exit()
while True:
mesto_input = input(Fore.YELLOW + "\nZadej název města (nebo 'q' pro konec): ")
if mesto_input.lower() in ["q","konec","exit","quit"]:
print("Děkujeme za použítí programu")
break
if mesto_input:
print(f"Zjištuji počasí pro {mesto_input}")
vysledek = ziskej_pocasi(mesto_input)
print("-"*30)
#zjistíme jestli data jsou jako JSON(počasí) nebo jako string(chyba)
if isinstance(vysledek, dict):
#vytahneme data z JSONu
teplota = vysledek["main"]["temp"]
pocitova_teplota = vysledek["main"]["feels_like"]
popis = vysledek["weather"][0]["description"]
vlhkost = vysledek["main"]["humidity"]
print(f"Město: {Fore.GREEN}{vysledek["name"]}")
print(f"Počasí: {Fore.BLUE}{popis.capitalize()}")
print(f"Teplota: {Fore.RED}{teplota}°C")
print(f"Pocitová teplota: {pocitova_teplota}°C")
print(f"Vlhkost vzduchu: {vlhkost}%")
else:
print(Fore.RED + vysledek)
print("-"*30)
Loading…
Cancel
Save