AutoBackups/test_everything3_specific.py

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()