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.

48 lines
1.8 KiB

#pip install matplotlib pillow termcolor requests
import requests
import random
import os
from io import BytesIO #pro vytvoření "virtualního souboru" v paměti RAM
import matplotlib.pyplot as plt
from PIL import Image
from termcolor import colored
def nahodny_pokemon():
print("-- Generator nahodhjného pokémona (PokeAPI) ---")
poke_id = random.randint(1,151)
url = f"https://pokeapi.co/api/v2/pokemon/{poke_id}"
print(f"Hledám data pro pokémona ID: {colored(poke_id,"green")}")
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
jmeno = data["name"].capitalize() #první písmeno velké na začátku slova
#obrazek_url = data["sprites"]["front_default"]
obrazek_url = data["sprites"]["other"]["official-artwork"]["front_default"]
print(f"objevil se {colored(jmeno,"green")}!!!")
if obrazek_url:
print(f"stahuji obrazek pro {colored(jmeno,"red")}")
img_response = requests.get(obrazek_url) #požádáme o data
img_response.raise_for_status() #čekáme na odpověd
img_data = BytesIO(img_response.content) #odpověd si uložíme do paměti jako virtualní soubor
img = Image.open(img_data)#virtualní soubor otevřeme jako obrázek
print(f"zobrazuji obrázek pro {colored(jmeno,"blue")}")
plt.figure(figsize=(5,5))
plt.imshow(img)
plt.title(jmeno)
plt.axis("off") #skryje osy
plt.show() #zde se kod zastavi, dokud uživatel nezavře okno
print("Okno zavřeno, pokračuji...")
else:
print("obrazek není k dispozici")
except Exception as e:
print(f"chyba při komunikaci: {e}")
if __name__ == "__main__":
for i in range(3):
nahodny_pokemon()