106 lines
3.5 KiB
Python
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()
|