À propos du projet

PanSou est un service API de recherche de ressources de stockage cloud à hautes performances écrit en Go, dont l'objectif principal est de fournir un backend de recherche auto-hébergeable pour la recherche de ressources de stockage cloud. Il prend en charge à la fois la recherche sur les canaux Telegram et la recherche via des plugins personnalisés, avec pour axes de conception principaux l'exécution concurrente, le tri des résultats et le classement par type de stockage cloud. Capacités principales - Recherche concurrente : exécution simultanée de plusieurs recherches sur canaux TG et de plugins asynchrones, gestion des tâches concurrentes via un pool de workers, réduisant le temps de réponse global. - Classification par type de stockage cloud : identification automatique du stockage cloud auquel appartient un lien et classement par type, prenant en charge Baidu Netdisk, Aliyun Drive, Quark Netdisk, Guangya Cloud Drive, Tianyi Cloud Drive, UC Netdisk, Mobile Cloud Drive, 115, PikPak, Xunlei, 123 Netdisk, liens magnet, liens eDonkey et autres types. - Tri intelligent : tri multidimensionnel complet basé sur le niveau du plugin, la fraîcheur temporelle et les mots-clés prioritaires. - Système de plugins asynchrones : les plugins peuvent d'abord renvoyer rapidement des résultats partiels, puis continuer le traitement en arrière-plan, atténuant le problème de lenteur de réponse de certaines sources de recherche ; les plugins doivent être explicitement activés via ENABLED_PLUGINS. - Cache à deux niveaux : cache mémoire fragmenté plus cache disque, améliorant la vitesse des requêtes répétées et les performances en concurrence ; le TTL du cache, sa taille, le nombre de fragments, etc. sont configurables. - Authentification optionnelle : désactivée par défaut ; une fois activée, les interfaces autres que la connexion et la vérification de santé nécessitent un JWT Token, avec prise en charge de la configuration de plusieurs comptes utilisateurs et du paramétrage de la durée de validité du Token. Aperçu des interfaces - POST/GET /api/search : recherche par mot-clé, avec possibilité de spécifier les canaux, les plugins, le nombre de requêtes concurrentes, la source de données (TG/plugins/tout), le type de stockage cloud, le forçage du rafraîchissement, ainsi que le filtrage par mots-clés include/exclude ; renvoie les résultats bruts et les résultats fusionnés par type de stockage cloud. - POST /api/check/links : vérification par lots de la validité des liens de partage de stockage cloud, avec des états incluant ok, bad, locked, unsupported, uncertain, prenant en charge un proxy au niveau d'une requête individuelle et la mise en cache des résultats de vérification. - POST /api/auth/login, /api/auth/verify, /api/auth/logout : interfaces liées à l'authentification. - GET /api/health : vérification de santé, renvoyant l'état du service, l'activation de l'authentification, les plugins activés et la liste des canaux. Modes de déploiement Deux images Docker sont fournies : une version intégrée frontend-backend et une version API purement backend ; elles peuvent être démarrées en une commande via docker run ou docker-compose ; la compilation depuis les sources est également prise en charge, nécessitant Go 1.18+, avec un proxy SOCKS5/HTTP optionnel pour accéder aux sites Telegram dans les régions restreintes. Le README fournit également des références de configuration pour supervisor et nginx (incluant la limitation de débit et HTTPS). Le projet utilise la licence MIT ; le README déclare qu'il est destiné uniquement à l'étude et à la recherche, et ne doit pas être utilisé à des fins lucratives.