You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.2 KiB
65 lines
2.2 KiB
#pip install matplotlib pillow requests termcolor
|
|
import requests
|
|
import random
|
|
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 ---")
|
|
poke_id = random.randint(1,151)
|
|
url = f"https://pokeapi.co/api/v2/pokemon/{poke_id}"
|
|
print(f"Začínám hledat pokemona s id:{colored(poke_id,"blue")}")
|
|
try:
|
|
#odeslání požadavku
|
|
response = requests.get(url)
|
|
response.raise_for_status()
|
|
|
|
#zpracování dat
|
|
data = response.json()
|
|
|
|
#zpracujeme detaily (pokeapi vrací decimety a hektogramy)
|
|
jmeno = data["name"].capitalize()
|
|
vaha_kg = data["weight"] / 10
|
|
vyska_m = data["height"] / 10
|
|
#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
|
|
print(f"Objevil se {colored(jmeno,"green")}")
|
|
print("-----------------------------------------")
|
|
print(f"Typ: {typy}")
|
|
print(f"Výška: {vyska_m} m")
|
|
print(f"Váha: {vaha_kg} kg")
|
|
print(f"Obrázek: {obrazek_url}")
|
|
|
|
#Stažení a zobrazení obrázku
|
|
if obrazek_url:
|
|
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(f"chyba: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
nahodny_pokemon()
|
|
|