from flask import Flask, render_template, jsonify
import requests

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/pokemon/<name>')
def get_pokemon(name):
    name = name.lower()
    
    # Prima otteniamo i dati base del Pokémon
    url = f'https://pokeapi.co/api/v2/pokemon/{name}'
    res = requests.get(url)
    if res.status_code != 200:
        return jsonify({'error': 'Pokémon non trovato'}), 404

    data = res.json()
    
    # Otteniamo lo sprite animato se disponibile
    sprite = data['sprites']['versions']['generation-v']['black-white']['animated']['front_default']
    if sprite is None:
        sprite = data['sprites']['front_default']
    
    # Otteniamo le statistiche
    stats = [{
        'stat': {'name': stat['stat']['name'].replace('-', ' ')},
        'base_stat': stat['base_stat']
    } for stat in data['stats']]
    
    # Otteniamo le abilità
    abilities = [{
        'ability': {'name': ability['ability']['name'].replace('-', ' ').title()}
    } for ability in data['abilities']]
    
    # Otteniamo le mosse
    moves = [{
        'move': {'name': move['move']['name'].replace('-', ' ').title()}
    } for move in data['moves']]

    result = {
        'name': data['name'].capitalize(),
        'sprite': sprite,
        'types': [t['type']['name'].capitalize() for t in data['types']],
        'height': data['height'],
        'weight': data['weight'],
        'stats': stats,
        'abilities': abilities,
        'moves': moves
    }
    return jsonify(result)

@app.route('/pokemon-list')
def get_pokemon_list():
    url = 'https://pokeapi.co/api/v2/pokemon?limit=1017'
    res = requests.get(url)
    if res.status_code != 200:
        return jsonify({'error': 'Impossibile caricare la lista'}), 500

    data = res.json()
    pokemons = [{'name': p['name'].capitalize(), 'id': idx + 1} for idx, p in enumerate(data['results'])]
    return jsonify(pokemons)

@app.route('/service-worker.js')
def service_worker():
    return app.send_static_file('service-worker.js')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

