import requests
from bs4 import BeautifulSoup
from fpdf import FPDF
import warnings

# warnings.filterwarnings('info', 'Dimensions for page format A5 were fixed in release 2.8.5')

def get_all_pokemons():
    url = f'https://pokemondb.net/pokedex/game/lets-go-pikachu-eevee'
    response = requests.get(url)

    page = BeautifulSoup(response.content, 'html.parser')

    pokemon_list = []
    card_list = page.find('div', class_='infocard-list')
    card_data = card_list.find_all('span', class_='infocard-lg-data')

    # print(card_data[0])
    for data in card_data:
        pokemon_name = data.find('a').get_text()
        pokemon_no = data.find('small').get_text()

        pokemon_name = pokemon_name.replace('♀', '-f')
        pokemon_name = pokemon_name.replace('♂', '-m')
        pokemon_name = pokemon_name.replace('\'', '')
        pokemon_name = pokemon_name.replace('. ', '-')

        pokemon = (pokemon_name, pokemon_no)
        pokemon_list.append(pokemon)
        
    return pokemon_list

def get_pokemon_info(pokemon_name):

    url = f'https://pokeapi.co/api/v2/pokemon/{pokemon_name}'
    response = requests.get(url)
    return response.json()

def get_pokemon_image(pokemon_info):
    link = pokemon_info['sprites']['front_default']
    return link

def get_pokemon_types(pokemon_info):
    types = []
    for type_info in pokemon_info['types']:
        type = type_info['type']['name']
        types.append(type)
    return types

pokemons = get_all_pokemons()

pdf = FPDF()

for pokemon in pokemons[:10]:
    try:
        pokemon_info = get_pokemon_info(pokemon[0])
        img_url = get_pokemon_image(pokemon_info)
        img_data = requests.get(img_url).content
        pokemon_types = get_pokemon_types(pokemon_info)
    except:
        print(pokemon[0])
    else:
        pdf.add_page(format='A5')
        pdf.set_font('times', size=16)
        pdf.text(x=5, y=10, text=f'#{pokemon[1]} {pokemon[0]}')
        pdf.image(img_data, x=30, y=10, w=100, h=100)
        pdf.set_font('times', size=12)
        type_text = ''.join(str(type) for type in pokemon_types)
        pdf.text(x=50, y=120, text=f'Type: {type_text}')


pdf.output('pokedex.pdf')

# print(pokemons[:10])