Sobre el proyecto

PanSou es un servicio API de búsqueda de recursos de almacenamiento en la nube de alto rendimiento escrito en Go, cuyo objetivo principal es proporcionar un backend de búsqueda autoalojado para la recuperación de recursos de almacenamiento en la nube. Admite tanto la búsqueda en canales de Telegram como la búsqueda mediante plugins personalizados, y se centra en la ejecución concurrente, la ordenación de resultados y la clasificación por tipo de servicio de almacenamiento. Capacidades principales - Búsqueda concurrente: ejecuta simultáneamente búsquedas en múltiples canales de TG y plugins asíncronos, gestionando las tareas concurrentes mediante un pool de trabajadores para reducir el tiempo de respuesta global. - Clasificación por tipo de almacenamiento: identifica automáticamente el servicio al que pertenece cada enlace y lo clasifica por tipo, compatible con Baidu Netdisk, Aliyun Drive, Quark Netdisk, Guangya Cloud Drive, Tianyi Cloud Drive, UC Netdisk, Mobile Cloud Drive, 115, PikPak, Xunlei, 123 Netdisk, enlaces magnet, enlaces eDonkey y otros tipos. - Ordenación inteligente: ordenación integral multidimensional basada en el nivel del plugin, la frescura temporal y las palabras clave prioritarias. - Sistema de plugins asíncronos: los plugins pueden devolver primero resultados parciales de forma rápida y seguir procesando en segundo plano, lo que mitiga el problema de las fuentes de búsqueda lentas; los plugins deben habilitarse explícitamente mediante ENABLED_PLUGINS. - Caché de dos niveles: caché en memoria fragmentada más caché en disco, que mejora la velocidad de consultas repetidas y el rendimiento concurrente; el TTL, el tamaño y el número de fragmentos de la caché son configurables. - Autenticación opcional: desactivada por defecto; al activarla, las interfaces distintas de inicio de sesión y comprobación de estado requieren un token JWT, con soporte para configuración de múltiples cuentas de usuario y ajuste del periodo de validez del token. Resumen de interfaces - POST/GET /api/search: busca por palabra clave; permite especificar canales, plugins, número de concurrencias, origen de datos (TG/plugins/todos), tipo de almacenamiento, si se fuerza la actualización, y filtrado de palabras clave include/exclude; devuelve resultados originales y resultados fusionados por tipo de almacenamiento. - POST /api/check/links: comprueba en lote si los enlaces compartidos de almacenamiento son válidos; los estados incluyen ok, bad, locked, unsupported, uncertain; admite proxy a nivel de solicitud individual y caché de resultados de comprobación. - POST /api/auth/login, /api/auth/verify, /api/auth/logout: interfaces relacionadas con la autenticación. - GET /api/health: comprobación de estado; devuelve el estado del servicio, el interruptor de autenticación, los plugins habilitados y la lista de canales. Modos de despliegue Se ofrecen dos imágenes Docker: la versión integrada de frontend y backend, y la versión de API puramente backend; pueden iniciarse con un solo comando mediante docker run o docker-compose. También se admite la compilación desde el código fuente, que requiere Go 1.18+, y opcionalmente un proxy SOCKS5/HTTP para acceder a sitios de Telegram en regiones restringidas. El README también incluye referencias de configuración para supervisor y nginx (con limitación de tasa y HTTPS). El proyecto utiliza la licencia MIT; el README declara que es solo para aprendizaje e investigación y que no debe utilizarse con fines lucrativos.