#!/usr/bin/env python3
"""
Test de Everything3 API Corregido
Prueba el API corregido de Everything3 para encontrar los 9 proyectos S7P
"""

import os
import sys
import json
import logging

# Configurar logging
logging.basicConfig(
    level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)

# Agregar src al path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))

from utils.everything3_official_corrected_wrapper import (
    create_everything3_official_searcher,
)


def load_config():
    """Cargar configuración"""
    try:
        with open("config.json", "r") as f:
            return json.load(f)
    except Exception as e:
        logger.error(f"Error cargando config: {e}")
        return None


def test_everything3_corrected():
    """Probar Everything3 API corregido"""
    print("🔍 Probando Everything3 API Corregido")
    print("=" * 50)

    # Cargar configuración
    config = load_config()
    if not config:
        print("❌ No se pudo cargar la configuración")
        return

    # Obtener ruta de DLL
    everything_config = config.get("everything_api", {})
    dll_path = everything_config.get("dll_path")
    if not dll_path:
        print("❌ No se encontró ruta de DLL en configuración")
        return

    # Convertir a ruta absoluta
    if not os.path.isabs(dll_path):
        dll_path = os.path.abspath(dll_path)

    print(f"📁 DLL Path: {dll_path}")
    print(f"📁 DLL Exists: {os.path.exists(dll_path)}")

    # Crear searcher
    searcher = create_everything3_official_searcher(dll_path)
    if not searcher:
        print("❌ No se pudo crear searcher Everything3")
        return

    print("✅ Searcher creado exitosamente")

    # Diagnóstico
    diagnosis = searcher.get_everything_diagnosis()
    print("\n🔧 Diagnóstico:")
    for key, value in diagnosis.items():
        print(f"  {key}: {value}")

    # Obtener directorios de búsqueda
    search_directories = [
        obs_dir["path"]
        for obs_dir in config.get("observation_directories", [])
        if obs_dir.get("enabled", True)
    ]
    print(f"\n📂 Directorios de búsqueda: {len(search_directories)}")
    for directory in search_directories:
        print(f"  - {directory}")

    # Buscar archivos S7P
    print("\n🔍 Buscando archivos .s7p...")
    s7p_files = searcher.search_s7p_files(search_directories)

    print(f"\n📊 Resultados:")
    print(f"  Archivos encontrados: {len(s7p_files)}")

    if s7p_files:
        print("  Archivos:")
        for i, file_path in enumerate(s7p_files, 1):
            print(f"    {i}. {file_path}")
    else:
        print("  ❌ No se encontraron archivos .s7p")

    print(
        f"\n📈 ¿Se encontraron los 9 proyectos esperados? {'✅ SÍ' if len(s7p_files) == 9 else '❌ NO'}"
    )

    return s7p_files


if __name__ == "__main__":
    try:
        result = test_everything3_corrected()
        print(
            f"\n🏁 Prueba completada. Archivos encontrados: {len(result) if result else 0}"
        )
    except Exception as e:
        logger.error(f"Error en prueba: {e}")
        print(f"❌ Error en prueba: {e}")
