1 changed files with 68 additions and 0 deletions
@ -0,0 +1,68 @@ |
|||||
|
#pip install requests colorama termcolor |
||||
|
import requests |
||||
|
from colorama import Fore, Style, init |
||||
|
import json |
||||
|
|
||||
|
#inicializace barev z colorama |
||||
|
init(autoreset=True) |
||||
|
|
||||
|
# klíč najdete na https://home.openweathermap.org/api_keys |
||||
|
API_KEY = "cdcbb82b14e8e3e85117686c68e19a5b" |
||||
|
|
||||
|
def ziskej_pocasi(mesto): |
||||
|
""" |
||||
|
Funkce pošle požadavek a vrátí slovník (json) s informacemi |
||||
|
""" |
||||
|
#& = AltGR + C |
||||
|
url1 = "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"Chyba: {e}" |
||||
|
|
||||
|
#podmínka jestli je skript spuštěný jako samostatný skript a ne jako knihovna |
||||
|
if __name__ == "__main__": |
||||
|
print(Fore.CYAN + "--- OpenWeatherMap bot ---") |
||||
|
print("Tento bot ti zjistí aktualní počasí v libovolném městě (možná i vesnici) na světě") |
||||
|
|
||||
|
if API_KEY == "API_KLIC": |
||||
|
print(Fore.RED + "\nPOZOR: Musíš do proměnné API_KEY vložit svůj klíč!!!") |
||||
|
exit() |
||||
|
|
||||
|
while True: |
||||
|
mesto_input = input(Fore.YELLOW + "\nZadej název města (nebo 'q' pro konec): ").strip() |
||||
|
|
||||
|
if mesto_input.lower() in ["q","konec","exit","quit"]: |
||||
|
print("Děkujeme za použití bota") |
||||
|
break |
||||
|
|
||||
|
if mesto_input: |
||||
|
print(f"Zjištuji počasí pro {mesto_input}") |
||||
|
vysledek = ziskej_pocasi(mesto_input) |
||||
|
print("-"*30) |
||||
|
|
||||
|
#pokud vysledek je slovník (čitelný JSON v pythonu) tak máme data o počasí |
||||
|
if isinstance(vysledek,dict): |
||||
|
# nezapomenout na `import json` |
||||
|
# print(json.dumps(vysledek,indent=4,ensure_ascii=False)) |
||||
|
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}") |
||||
|
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…
Reference in new issue