From d764d9f1f25710423ca7449d583250f57a001fa9 Mon Sep 17 00:00:00 2001 From: KubMakCZ Date: Wed, 4 Feb 2026 12:20:50 +0100 Subject: [PATCH] api app --- 23_pokemon_requests/chuck_norris_jokes.py | 21 +++++++++++++ 23_pokemon_requests/dad_jokes.py | 27 +++++++++++++++++ 23_pokemon_requests/main.py | 30 +++++++++++++++++++ .../{pokemon.py => pokemon_lib.py} | 17 +++++++++-- 23_pokemon_requests/poznamky.txt | 5 ++++ 5 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 23_pokemon_requests/chuck_norris_jokes.py create mode 100644 23_pokemon_requests/dad_jokes.py create mode 100644 23_pokemon_requests/main.py rename 23_pokemon_requests/{pokemon.py => pokemon_lib.py} (76%) create mode 100644 23_pokemon_requests/poznamky.txt diff --git a/23_pokemon_requests/chuck_norris_jokes.py b/23_pokemon_requests/chuck_norris_jokes.py new file mode 100644 index 0000000..7f057bc --- /dev/null +++ b/23_pokemon_requests/chuck_norris_jokes.py @@ -0,0 +1,21 @@ +import requests +from termcolor import colored + +def get_cnj(): + print("---Náhodný vtip o Chucku Norrisovi---") + url = "https://api.chucknorris.io/jokes/random" + + try: + #odelsaní jednoduchého GET požadavku + response = requests.get(url) + #kontrola žda požadavek proběhl úspěšně + response.raise_for_status() + data = response.json() + print(f"\n{colored(data['value'],"yellow")}") + #vtip = data["value"] + #print(f"{vtip}") + except Exception as e: + print(f"chyba:{e}") + +if __name__ == "__main__": + get_cnj() \ No newline at end of file diff --git a/23_pokemon_requests/dad_jokes.py b/23_pokemon_requests/dad_jokes.py new file mode 100644 index 0000000..ab664e6 --- /dev/null +++ b/23_pokemon_requests/dad_jokes.py @@ -0,0 +1,27 @@ +import requests +from termcolor import colored + + +def get_dad_joke(): + print("---Náhodný vtip (icanhazdadjoke.com)---") + url = "https://icanhazdadjoke.com/" + + headers = { + "Accept": "application/json", + "User-Agent" : "Python example for students" + } + + try: + #odelsaní jednoduchého GET požadavku + response = requests.get(url, headers=headers) + #kontrola žda požadavek proběhl úspěšně + response.raise_for_status() + data = response.json() + print(f"\n{colored(data['joke'],"green")}") + #vtip = data["joke"] + #print(f"{vtip}") + except Exception as e: + print(f"chyba:{e}") + +if __name__ == "__main__": + get_dad_joke() \ No newline at end of file diff --git a/23_pokemon_requests/main.py b/23_pokemon_requests/main.py new file mode 100644 index 0000000..b4cca87 --- /dev/null +++ b/23_pokemon_requests/main.py @@ -0,0 +1,30 @@ +#import pokemon_lib +from pokemon_lib import nahodny_pokemon +from chuck_norris_jokes import get_cnj +from dad_jokes import get_dad_joke + +print("Vítej v apilakci pro demonstraci API rozhraní") + +while True: + print("\n--------------------") + print("Vyber si možnost:") + print("1) zobraz náhodného pokémona") + print("2) zobraz náhodný dad joke") + print("3) zobraz náhodný vtip o Chucku norrisovi") + print("4) konec") + vyber = input("Napiš tvůj výber 1/2/3/4:") + pocet_opakovani = int(input("Kolik chceš opakování (zadej čislo):")) + + if(vyber == "1"): + for i in range(pocet_opakovani): + nahodny_pokemon() + elif (vyber == "2"): + for i in range(pocet_opakovani): + get_dad_joke() + elif(vyber == "3"): + for i in range(pocet_opakovani): + get_cnj() + elif(vyber == "4"): + break + else: + print("Špatný výběr") \ No newline at end of file diff --git a/23_pokemon_requests/pokemon.py b/23_pokemon_requests/pokemon_lib.py similarity index 76% rename from 23_pokemon_requests/pokemon.py rename to 23_pokemon_requests/pokemon_lib.py index 97a6750..7a7e248 100644 --- a/23_pokemon_requests/pokemon.py +++ b/23_pokemon_requests/pokemon_lib.py @@ -5,6 +5,7 @@ import os from io import BytesIO #modul pro vytvoření virtualního souboru v RAM from PIL import Image from termcolor import colored +import matplotlib.pyplot as plt def nahodny_pokemon(): print("--- Generátor náhodného Pokémona ---") @@ -23,7 +24,8 @@ def nahodny_pokemon(): jmeno = data["name"].capitalize() vaha_kg = data["weight"] / 10 vyska_m = data["height"] / 10 - obrazek_url = data["sprites"]["front_default"] + #obrazek_url = data["sprites"]["front_default"] + obrazek_url = data["sprites"]["other"]["official-artwork"]["front_default"] typy = [t["type"]["name" ] for t in data["types"]] #výpis @@ -39,14 +41,25 @@ def nahodny_pokemon(): print(f"Stahuji obrázek pro {jmeno}...") img_response = requests.get(obrazek_url) img_response.raise_for_status() + #načtení obrázku do paměti a otevření z paměti (Bez ukládání na disk) image_data = BytesIO(img_response.content) img = Image.open(image_data) print(f"Zobrazuji obrázek. Zavřete okno pro pokračování..") + + #zobrazení pomocí Matplitlib + plt.figure(figsize=(5,5)) + plt.imshow(img) + plt.title(jmeno) + plt.axis("off") + plt.show() + print("okno zavřeno, pokračuji") + else: + print("\n Obrázek není k dispozici") except Exception as e: - print("chyba: {e}") + print(f"chyba: {e}") if __name__ == "__main__": nahodny_pokemon() diff --git a/23_pokemon_requests/poznamky.txt b/23_pokemon_requests/poznamky.txt new file mode 100644 index 0000000..b089945 --- /dev/null +++ b/23_pokemon_requests/poznamky.txt @@ -0,0 +1,5 @@ +mkdir 23_pokemon_requests +cd 23_pokemon_requests +python -m venv .venv +.venv\Scripts\activate +(.venv) pip install matplotlib pillow requests \ No newline at end of file