117 lines
3.7 KiB
Python
117 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test Everything3 con búsqueda específica por directorios
|
|
"""
|
|
|
|
import os
|
|
import ctypes
|
|
|
|
|
|
def test_everything3_specific_paths():
|
|
"""Test específico para los directorios objetivo"""
|
|
dll_path = "Everything-SDK3/dll/Everything3_x64.dll"
|
|
dll_path = os.path.abspath(dll_path)
|
|
|
|
print("🔍 Test Everything3 - Búsqueda Específica")
|
|
|
|
# Directorios objetivo
|
|
target_dirs = [
|
|
"C:\\Users\\migue\\Downloads\\TestBackups",
|
|
"C:\\Trabajo\\SIDEL\\05 - E5.007161 - Modifica O&U - SAE346",
|
|
]
|
|
|
|
try:
|
|
# Cargar DLL
|
|
dll = ctypes.WinDLL(dll_path)
|
|
|
|
# Configurar funciones
|
|
dll.Everything3_ConnectW.argtypes = [ctypes.c_wchar_p]
|
|
dll.Everything3_ConnectW.restype = ctypes.c_void_p
|
|
|
|
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_GetResultListCount.argtypes = [ctypes.c_void_p]
|
|
dll.Everything3_GetResultListCount.restype = ctypes.c_size_t
|
|
|
|
dll.Everything3_GetResultFullPathNameW.argtypes = [
|
|
ctypes.c_void_p,
|
|
ctypes.c_size_t,
|
|
ctypes.c_wchar_p,
|
|
ctypes.c_size_t,
|
|
]
|
|
dll.Everything3_GetResultFullPathNameW.restype = ctypes.c_size_t
|
|
|
|
# Conectar
|
|
client = dll.Everything3_ConnectW("1.5a")
|
|
if not client:
|
|
print("❌ No se pudo conectar")
|
|
return 0
|
|
|
|
total_found = 0
|
|
|
|
# Buscar en cada directorio específicamente
|
|
for target_dir in target_dirs:
|
|
print(f"\n📂 Buscando en: {target_dir}")
|
|
|
|
# Crear search state
|
|
search_state = dll.Everything3_CreateSearchState()
|
|
if not search_state:
|
|
continue
|
|
|
|
# Construir query específica para el directorio
|
|
# Usar comillas para manejar espacios en rutas
|
|
query = f'*.s7p path:"{target_dir}"'
|
|
print(f"🔍 Query: {query}")
|
|
|
|
# Establecer texto de búsqueda
|
|
if not dll.Everything3_SetSearchTextW(search_state, query):
|
|
print("❌ No se pudo establecer texto de búsqueda")
|
|
continue
|
|
|
|
# Ejecutar búsqueda
|
|
result_list = dll.Everything3_Search(client, search_state)
|
|
if not result_list:
|
|
print("❌ Búsqueda falló")
|
|
continue
|
|
|
|
# Obtener resultados
|
|
num_results = dll.Everything3_GetResultListCount(result_list)
|
|
print(f"📊 Resultados en este directorio: {num_results}")
|
|
|
|
# Mostrar rutas encontradas
|
|
for i in range(num_results):
|
|
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}")
|
|
|
|
total_found += num_results
|
|
|
|
print(f"\n🏁 Total archivos encontrados: {total_found}")
|
|
print(
|
|
f"📈 ¿Se encontraron los 9 proyectos esperados? {'✅ SÍ' if total_found == 9 else '❌ NO'}"
|
|
)
|
|
|
|
return total_found
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error: {e}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
result = test_everything3_specific_paths()
|