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
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()
|