157 lines
5.0 KiB
Python
157 lines
5.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test Simple Everything3 API
|
|
Test básico del API Everything3 corregido
|
|
"""
|
|
|
|
import os
|
|
import ctypes
|
|
|
|
|
|
def test_simple_everything3():
|
|
"""Test simple del API Everything3"""
|
|
dll_path = "Everything-SDK3/dll/Everything3_x64.dll"
|
|
dll_path = os.path.abspath(dll_path)
|
|
|
|
print("🔍 Test Simple Everything3 API")
|
|
print(f"📁 DLL: {dll_path}")
|
|
|
|
try:
|
|
# Cargar DLL
|
|
dll = ctypes.WinDLL(dll_path)
|
|
print("✅ DLL cargada")
|
|
|
|
# Configurar funciones básicas
|
|
dll.Everything3_ConnectW.argtypes = [ctypes.c_wchar_p]
|
|
dll.Everything3_ConnectW.restype = ctypes.c_void_p
|
|
|
|
dll.Everything3_IsDBLoaded.argtypes = [ctypes.c_void_p]
|
|
dll.Everything3_IsDBLoaded.restype = ctypes.c_bool
|
|
|
|
dll.Everything3_CreateSearchState.argtypes = []
|
|
dll.Everything3_CreateSearchState.restype = ctypes.c_void_p
|
|
|
|
dll.Everything3_SetSearchTextW.argtypes = [ctypes.c_void_p, ctypes.c_wchar_p]
|
|
dll.Everything3_SetSearchTextW.restype = ctypes.c_bool
|
|
|
|
dll.Everything3_Search.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
|
|
dll.Everything3_Search.restype = ctypes.c_void_p
|
|
|
|
dll.Everything3_GetResultFullPathNameW.argtypes = [
|
|
ctypes.c_void_p, # result_list
|
|
ctypes.c_size_t, # result_index
|
|
ctypes.c_wchar_p, # buf
|
|
ctypes.c_size_t, # buf_size_in_wchars
|
|
]
|
|
dll.Everything3_GetResultFullPathNameW.restype = ctypes.c_size_t
|
|
|
|
dll.Everything3_GetResultListCount.argtypes = [ctypes.c_void_p]
|
|
dll.Everything3_GetResultListCount.restype = ctypes.c_size_t
|
|
|
|
dll.Everything3_GetLastError.argtypes = []
|
|
dll.Everything3_GetLastError.restype = ctypes.c_uint32
|
|
|
|
# Conectar
|
|
print("🔌 Conectando...")
|
|
client = dll.Everything3_ConnectW("1.5a")
|
|
|
|
if not client:
|
|
error = dll.Everything3_GetLastError()
|
|
print(f"❌ Error conectando: {error}")
|
|
return 0
|
|
|
|
print("✅ Conectado")
|
|
|
|
# Verificar DB
|
|
db_loaded = dll.Everything3_IsDBLoaded(client)
|
|
print(f"📊 DB Loaded: {db_loaded}")
|
|
|
|
# Crear search state
|
|
print("🔍 Creando search state...")
|
|
search_state = dll.Everything3_CreateSearchState()
|
|
|
|
if not search_state:
|
|
print("❌ No se pudo crear search state")
|
|
return 0
|
|
|
|
print("✅ Search state creado")
|
|
|
|
# Buscar archivos .s7p
|
|
query = "*.s7p"
|
|
print(f"🔍 Buscando: {query}")
|
|
|
|
# Establecer texto de búsqueda
|
|
if not dll.Everything3_SetSearchTextW(search_state, query):
|
|
print("❌ No se pudo establecer texto de búsqueda")
|
|
return 0
|
|
|
|
print("✅ Texto de búsqueda establecido")
|
|
|
|
# Ejecutar búsqueda
|
|
print("🚀 Ejecutando búsqueda...")
|
|
result_list = dll.Everything3_Search(client, search_state)
|
|
|
|
if not result_list:
|
|
error = dll.Everything3_GetLastError()
|
|
print(f"❌ Error en búsqueda: {error}")
|
|
return 0
|
|
|
|
print("✅ Búsqueda ejecutada")
|
|
|
|
# Obtener número de resultados
|
|
num_results = dll.Everything3_GetResultListCount(result_list)
|
|
print(f"📊 Resultados encontrados: {num_results}")
|
|
|
|
# Definir directorios de interés
|
|
target_dirs = [
|
|
"C:\\Users\\migue\\Downloads\\TestBackups",
|
|
"C:/Trabajo/SIDEL/05 - E5.007161 - Modifica O&U - SAE346",
|
|
]
|
|
|
|
# Obtener algunas rutas para verificar
|
|
print("📝 Primeras 10 rutas encontradas:")
|
|
for i in range(min(num_results, 10)):
|
|
buf_size = 32768
|
|
buf = ctypes.create_unicode_buffer(buf_size)
|
|
|
|
chars_copied = dll.Everything3_GetResultFullPathNameW(
|
|
result_list, i, buf, buf_size
|
|
)
|
|
|
|
if chars_copied > 0:
|
|
file_path = buf.value
|
|
print(f" {i+1}. {file_path}")
|
|
|
|
# Buscar archivos en directorios objetivo
|
|
matching_files = []
|
|
for i in range(min(num_results, 100)): # Revisar las primeras 100
|
|
buf_size = 32768
|
|
buf = ctypes.create_unicode_buffer(buf_size)
|
|
|
|
chars_copied = dll.Everything3_GetResultFullPathNameW(
|
|
result_list, i, buf, buf_size
|
|
)
|
|
|
|
if chars_copied > 0:
|
|
file_path = buf.value
|
|
# Verificar si está en alguno de los directorios objetivo
|
|
for target_dir in target_dirs:
|
|
if file_path.lower().startswith(target_dir.lower()):
|
|
matching_files.append(file_path)
|
|
break
|
|
|
|
print(f"📂 Archivos en directorios objetivo: {len(matching_files)}")
|
|
for file_path in matching_files:
|
|
print(f" - {file_path}")
|
|
|
|
return len(matching_files)
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error: {e}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
result = test_simple_everything3()
|
|
print(f"🏁 Test completado. Resultados: {result}")
|