AutoBackups/test_everything3_functions.py

106 lines
3.5 KiB
Python

#!/usr/bin/env python3
"""
Test disponibilidad de funciones Everything3
"""
import ctypes
import os
import sys
from pathlib import Path
# Agregar el directorio src al path
current_dir = Path(__file__).parent
src_dir = current_dir / "src"
sys.path.insert(0, str(src_dir))
def test_everything3_functions():
"""Test which Everything3 functions are available"""
dll_path = "Everything-SDK3/dll/Everything3_x64.dll"
if not os.path.exists(dll_path):
print(f"❌ DLL no encontrada: {dll_path}")
return
print(f"✅ DLL encontrada: {dll_path}")
try:
dll = ctypes.WinDLL(dll_path)
print("✅ DLL cargada exitosamente")
# Lista de funciones a probar
functions_to_test = [
"Everything3_ConnectW",
"Everything3_Disconnect",
"Everything3_IsDBLoaded",
"Everything3_Search",
"Everything3_GetResults",
"Everything3_GetResultPropertyValueAsString",
"Everything3_GetLastError",
"Everything3_SetSearchTextW",
"Everything3_QueryW",
"Everything3_GetNumResults",
"Everything3_GetResultFullPathNameW",
]
available_functions = []
missing_functions = []
for func_name in functions_to_test:
try:
func = getattr(dll, func_name)
available_functions.append(func_name)
print(f"{func_name} - Disponible")
except AttributeError:
missing_functions.append(func_name)
print(f"{func_name} - No disponible")
print(f"\n📊 Resumen:")
print(f"✅ Funciones disponibles: {len(available_functions)}")
print(f"❌ Funciones faltantes: {len(missing_functions)}")
if missing_functions:
print(f"\n🚫 Funciones faltantes:")
for func in missing_functions:
print(f" - {func}")
# Intentar una conexión básica si está disponible
if "Everything3_ConnectW" in available_functions:
print(f"\n🔍 Probando conexión básica...")
try:
dll.Everything3_ConnectW.argtypes = [ctypes.c_wchar_p]
dll.Everything3_ConnectW.restype = ctypes.c_void_p
client = dll.Everything3_ConnectW("1.5a")
if client and client != 0:
print("✅ Conexión exitosa")
# Probar si la DB está cargada
if "Everything3_IsDBLoaded" in available_functions:
dll.Everything3_IsDBLoaded.argtypes = [ctypes.c_void_p]
dll.Everything3_IsDBLoaded.restype = ctypes.c_bool
db_loaded = dll.Everything3_IsDBLoaded(client)
print(f"📋 DB cargada: {db_loaded}")
# Desconectar si está disponible
if "Everything3_Disconnect" in available_functions:
dll.Everything3_Disconnect.argtypes = [ctypes.c_void_p]
dll.Everything3_Disconnect.restype = None
dll.Everything3_Disconnect(client)
print("✅ Desconectado")
else:
print("❌ Falló la conexión")
except Exception as e:
print(f"❌ Error en conexión básica: {e}")
except Exception as e:
print(f"❌ Error cargando DLL: {e}")
if __name__ == "__main__":
test_everything3_functions()