PanSou 网盘搜索API

PanSou是一个高性能的网盘资源搜索API服务,支持TG搜索和自定义插件搜索。系统设计以性能和可扩展性为核心,支持并发搜索、结果智能排序和网盘类型分类。

项目地址:https://github.com/fish2018/pansou

特性(详见系统设计文档)

  • 高性能搜索:并发执行多个TG频道及异步插件搜索,显著提升搜索速度;工作池设计,高效管理并发任务
  • 网盘类型分类:自动识别多种网盘链接,按类型归类展示
  • 智能排序:基于插件等级、时间新鲜度和优先关键词的多维度综合排序算法
  • 异步插件系统:支持通过插件扩展搜索来源,支持"尽快响应,持续处理"的异步搜索模式,解决了某些搜索源响应时间长的问题。详情参考插件开发指南
  • 二级缓存:分片内存+分片磁盘缓存机制,大幅提升重复查询速度和并发性能

支持的网盘类型

百度网盘 (baidu)、阿里云盘 (aliyun)、夸克网盘 (quark)、天翼云盘 (tianyi)、UC网盘 (uc)、移动云盘 (mobile)、115网盘 (115)、PikPak (pikpak)、迅雷网盘 (xunlei)、123网盘 (123)、磁力链接 (magnet)、电驴链接 (ed2k)、其他 (others)

预览

请添加图片描述
请添加图片描述
请添加图片描述

快速开始

在 Github 上先Fork me on GitHub本项目,并点上 Star !!!

使用Docker部署

前后端集成版
直接使用Docker命令

一键启动,开箱即用,无需任何配置

docker run -d --name pansou -p 80:80 ghcr.io/fish2018/pansou-web
使用Docker Compose(推荐)
# 下载配置文件
curl -o docker-compose.yml https://raw.githubusercontent.com/fish2018/pansou-web/refs/heads/main/docker-compose.yml# 启动服务
docker-compose up -d# 查看日志
docker-compose logs -f
纯后端API
直接使用Docker命令
docker run -d --name pansou -p 8888:8888 -v pansou-cache:/app/cache -e CHANNELS="tgsearchers2,xxx" ghcr.io/fish2018/pansou:latest
使用Docker Compose(推荐)
# 下载配置文件
curl -o docker-compose.yml  https://raw.githubusercontent.com/fish2018/pansou/refs/heads/main/docker-compose.yml# 启动服务
docker-compose up -d# 访问服务
http://localhost:8888

从源码安装

环境要求
  • Go 1.18+
  • 可选:SOCKS5代理(用于访问受限地区的Telegram站点)
  1. 克隆仓库
git clone https://github.com/fish2018/pansou.git
cd pansou
  1. 配置环境变量(可选)
🚀 基础配置
环境变量描述默认值说明
PORT服务端口8888修改服务监听端口
PROXYSOCKS5代理如:socks5://127.0.0.1:1080
CHANNELS默认搜索的TG频道tgsearchers2多个频道用逗号分隔
🔧 高级配置(默认值即可)
点击展开高级配置选项(通常不需要修改)
环境变量描述默认值
CONCURRENCY并发搜索数自动计算
CACHE_TTL缓存有效期(分钟)60
CACHE_MAX_SIZE最大缓存大小(MB)100
PLUGIN_TIMEOUT插件超时时间(秒)30
ASYNC_RESPONSE_TIMEOUT快速响应超时(秒)4
ASYNC_LOG_ENABLED异步插件详细日志true
CACHE_PATH缓存文件路径./cache
SHARD_COUNT缓存分片数量8
CACHE_WRITE_STRATEGY缓存写入策略(immediate/hybrid)hybrid
ENABLE_COMPRESSION是否启用压缩false
MIN_SIZE_TO_COMPRESS最小压缩阈值(字节)1024
GC_PERCENTGo GC触发百分比100
ASYNC_MAX_BACKGROUND_WORKERS最大后台工作者数量CPU核心数×5
ASYNC_MAX_BACKGROUND_TASKS最大后台任务数量工作者数×5
ASYNC_CACHE_TTL_HOURS异步缓存有效期(小时)1
HTTP_READ_TIMEOUTHTTP读取超时(秒)自动计算
HTTP_WRITE_TIMEOUTHTTP写入超时(秒)自动计算
HTTP_IDLE_TIMEOUTHTTP空闲超时(秒)120
HTTP_MAX_CONNSHTTP最大连接数自动计算
  1. 构建
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -extldflags '-static'" -o pansou .
  1. 运行
./pansou

其他配置参考

点击展开 supervisor 配置参考
[program:pansou]
environment=PORT=8888,CHANNELS="tgsearchers2,yunpanxunlei,tianyifc,BaiduCloudDisk,txtyzy,peccxinpd,gotopan,xingqiump4,yunpanqk,PanjClub,kkxlzy,baicaoZY,MCPH01,share_aliyun,bdwpzhpd,ysxb48,jdjdn1111,yggpan,MCPH086,zaihuayun,Q66Share,NewAliPan,ypquark,Oscar_4Kmovies,ucwpzy,alyp_TV,alyp_4K_Movies,shareAliyun,alyp_1,dianyingshare,Quark_Movies,XiangxiuNBB,NewQuark,ydypzyfx,kuakeyun,ucquark,xx123pan,yingshifenxiang123,zyfb123,tyypzhpd,tianyirigeng,cloudtianyi,hdhhd21,Lsp115,oneonefivewpfx,Maidanglaocom,qixingzhenren,taoxgzy,tgsearchers115,Channel_Shares_115,tyysypzypd,vip115hot,wp123zy,yunpan139,yunpan189,yunpanuc,yydf_hzl,alyp_Animation,alyp_JLP,leoziyuan"
command=/home/work/pansou/pansou
directory=/home/work/pansou
autostart=true
autorestart=true
startsecs=5
startretries=3
exitcodes=0
stopwaitsecs=10
stopasgroup=true
killasgroup=true
点击展开 nginx 配置参考
server {listen 80;server_name pansou.252035.xyz;# 将 HTTP 重定向到 HTTPSreturn 301 https://$host$request_uri;
}limit_req_zone $binary_remote_addr zone=api_limit:10m rate=60r/m;server {listen 443 ssl http2;server_name pansou.252035.xyz;access_log /home/work/logs/pansou.log;# 证书和密钥路径ssl_certificate /etc/letsencrypt/live/252035.xyz/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/252035.xyz/privkey.pem;# 增强 SSL 安全性ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;ssl_prefer_server_ciphers on;# 后端代理,应用限流location / {# 应用限流规则limit_req zone=api_limit burst=10 nodelay;# 当超过限制时返回 429 状态码limit_req_status 429;proxy_pass http://127.0.0.1:8888;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

API文档

搜索API

搜索网盘资源。

接口地址/api/search
请求方法POSTGET
Content-Typeapplication/json(POST方法)

POST请求参数

参数名类型必填描述
kwstring搜索关键词
channelsstring[]搜索的频道列表,不提供则使用默认配置
concnumber并发搜索数量,不提供则自动设置为频道数+插件数+10
refreshboolean强制刷新,不使用缓存,便于调试和获取最新数据
resstring结果类型:all(返回所有结果)、results(仅返回results)、merge(仅返回merged_by_type),默认为merge
srcstring数据来源类型:all(默认,全部来源)、tg(仅Telegram)、plugin(仅插件)
pluginsstring[]指定搜索的插件列表,不指定则搜索全部插件
cloud_typesstring[]指定返回的网盘类型列表,支持:baidu、aliyun、quark、tianyi、uc、mobile、115、pikpak、xunlei、123、magnet、ed2k,不指定则返回所有类型
extobject扩展参数,用于传递给插件的自定义参数,如{“title_en”:“English Title”, “is_all”:true}

GET请求参数

参数名类型必填描述
kwstring搜索关键词
channelsstring搜索的频道列表,使用英文逗号分隔多个频道,不提供则使用默认配置
concnumber并发搜索数量,不提供则自动设置为频道数+插件数+10
refreshboolean强制刷新,设置为"true"表示不使用缓存
resstring结果类型:all(返回所有结果)、results(仅返回results)、merge(仅返回merged_by_type),默认为merge
srcstring数据来源类型:all(默认,全部来源)、tg(仅Telegram)、plugin(仅插件)
pluginsstring指定搜索的插件列表,使用英文逗号分隔多个插件名,不指定则搜索全部插件
cloud_typesstring指定返回的网盘类型列表,使用英文逗号分隔多个类型,支持:baidu、aliyun、quark、tianyi、uc、mobile、115、pikpak、xunlei、123、magnet、ed2k,不指定则返回所有类型
extstringJSON格式的扩展参数,用于传递给插件的自定义参数,如{“title_en”:“English Title”, “is_all”:true}

POST请求示例

{"kw": "速度与激情","channels": ["tgsearchers2", "xxx"],"conc": 2,"refresh": true,"res": "merge","src": "all","plugins": ["jikepan"],"cloud_types": ["baidu", "quark"],"ext": {"title_en": "Fast and Furious","is_all": true}
}

GET请求示例

GET /api/search?kw=速度与激情&channels=tgsearchers2,xxx&conc=2&refresh=true&res=merge&src=tg&cloud_types=baidu,quark&ext={"title_en":"Fast and Furious","is_all":true}

成功响应

{"total": 15,"results": [{"message_id": "12345","unique_id": "channel-12345","channel": "tgsearchers2","datetime": "2023-06-10T14:23:45Z","title": "速度与激情全集1-10","content": "速度与激情系列全集,1080P高清...","links": [{"type": "baidu","url": "https://pan.baidu.com/s/1abcdef","password": "1234"}],"tags": ["电影", "合集"],"images": ["https://cdn1.cdn-telegram.org/file/xxx.jpg"]},// 更多结果...],"merged_by_type": {"baidu": [{"url": "https://pan.baidu.com/s/1abcdef","password": "1234","note": "速度与激情全集1-10","datetime": "2023-06-10T14:23:45Z","source": "tg:频道名称","images": ["https://cdn1.cdn-telegram.org/file/xxx.jpg"]},// 更多百度网盘链接...],"quark": [{"url": "https://pan.quark.cn/s/xxxx","password": "","note": "凡人修仙传","datetime": "2023-06-10T15:30:22Z","source": "plugin:插件名","images": []}],"aliyun": [// 阿里云盘链接...]// 更多网盘类型...}
}

字段说明

  • source: 数据来源标识
    • tg:频道名称: 来自Telegram频道
    • plugin:插件名: 来自指定插件
    • unknown: 未知来源
  • images: TG消息中的图片链接数组(可选字段)
    • 仅在来源为Telegram频道且消息包含图片时出现

错误响应

{"code": 400,"message": "关键词不能为空"
}

健康检查

检查API服务是否正常运行。

接口地址/api/health
请求方法GET

成功响应

{"channels": ["tgsearchers2"],"plugin_count": 16,"plugins": ["pansearch","panta", "qupansou","hunhepan","jikepan","pan666","panyq","susu","xuexizhinan","hdr4k","labi","shandian","duoduo","muou","wanou","ouge","zhizhen","huban"],"plugins_enabled": true,"status": "ok"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93054.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93054.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93054.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java爬虫实战

本人目前在做鱼皮的《智能协同云图库》,涉及到了以图搜图图片爬取,虽然以前有爬过图片,但是用的都是别人现成的代码,不怎么去理解为什么要这样做,这次有在尝试理解每一个步骤。本人基础极差,属于一点基础也…

深入详解C语言的循环结构:while循环、do-while循环、for循环,结合实例,讲透C语言的循环结构

🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题、C/C干货分享&学习过程记录 🍉学习方向:C/C方向 ⭐️人生格言:为天地立心&#…

北京-4年功能测试2年空窗-报培训班学测开-第七十四天-线下面试-聊的很满意但可能有风险-等信吧

今天没去教室,因为下午有个线下面试。其实是可以去教室的,但我实在太焦虑了,我觉得去了教室我心情会更不好,什么都干不下去,所以我选择不去早上依旧是带着满满焦虑起来的,会觉得自己的一切都不令自己满意&a…

在ubuntu服务器下安装cuda和cudnn(笔记)

目录 0 引言 1 相关环境查询 2 安装cuda 2.1 下载并安装 2.2 安装选项配置 2.3 验证安装 3 安装cudnn 3.1 下载 3.2 解压 3.3 删除旧版本 cuDNN 3.4 复制新文件到 CUDA 目录 3.5 设置文件权限 3.6 创建软链接 3.7 验证安装 0 引言 我在使用服务器的cuda11.8的时…

docker安装centos

docker库地址https://hub.docker.com/ 尝试使用centos7试了几次超时 换了个版本就可以了 docker pull centos:centos7.9.2009有时候需要更新资源地址 可以使用 vim /etc/docker/daemon.json配置其他资源地址 {"registry-mirrors": ["http://hub-mirror.c.163…

内容索引之word转md工具 - markitdown

切分文档构建RAG库过程中,langchain、llamaindex更期望处理latex、md类带有显式结构文档。 langchain、llamaindex切分word,有可能将段落中间截断,导致切分后的块语义不完整。 所以,需要先将word转化为md格式,然后再…

MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核

上海合合信息科技股份有限公司(以下简称为合合信息)是一家深耕人工智能、OCR(光学字符识别)及商业大数据技术领域的科技企业。该公司拥有领先的智能文字识别技术,其名片全能王(CamCard)、扫描全…

MyBatis 核心入门:从概念到实战,一篇掌握简单增删改查

目录 一、什么是 MyBatis?为什么要用它? 二、MyBatis 核心概念(通俗理解) 1.SqlSessionFactory 2.SqlSession 3.Mapper接口 4.映射文件(XML) 三、手把手搭建第一个 MyBatis 项目 1. 准备工作 2. 核心配置文…

数据结构初阶(12)排序算法—插入排序(插入、希尔)(动图演示)

2. 常见排序算法的实现2.0 十大排序算法2.1 插入排序 2.1.1 基本思想直接插入排序是一种简单的插入排序法:基本思想把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中。直到所有的记录插入完为止,得到一个新的有序序列 。 比 挪 (…

MySQL优化常用的几个方法

本实例是对慢sql从2万优化到5千优化方法的汇总。 首先贴上优化效果:1、更新数据时使用ID更新;2、"分页/轮询"查询时先获取符合数据要求主键的最大和最小ID,然后WHERE条件增加ID步增查询;3、检查SQL是否命中WHERE条件&am…

深入解析 AUTOSAR:汽车软件开发的革命性架构

引言在汽车智能化、网联化、电动化浪潮席卷全球的今天,汽车电子系统的复杂性与日俱增。传统“烟囱式”的 ECU 开发模式(各供应商独立开发软硬件)带来了巨大的兼容性、复用性和维护成本挑战。AUTOSAR(AUTomotive Open System ARchi…

计算机视觉(opencv)实战一——图像本质、数字矩阵、RGB + 图片基本操作(灰度、裁剪、替换等)

OpenCV 入门教程: OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、机器学习等领域。 在 Python 中,cv2 是 OpenCV 的主要接口模块。本文将带你一步步掌握 cv2…

《探索C++ set与multiset容器:深入有序唯一性集合的实现与应用》

前引:在STL的关联式容器中,set以其严格的元素唯一性和自动排序特性成为处理有序数据的核心工具。其底层基于红黑树(Red-Black Tree)实现,保证了O(log n)的查找、插入与删除复杂度!本文将从底层原理切入&…

各测试平台功能对比分析(ITP,Postman,Apifox,MeterSphere)

对比ITP与Postman,Apifox,MeterSphere 功能特性ITPPostmanApifoxMeterSphere接口测试✅ 可视化接口调试,支持多种请求方式✅ 支持✅ 支持✅ 支持场景测试✅ 多接口串联测试,支持前后置脚本✅ Collections功能✅ 支持✅ 支持定时任务✅ 基于Celery的定时…

开源日志log4cplus—如何将 string类型转为tstring类型,又如何将char*类型转换为tstring类型?

文章目录🔧 一、理解 log4cplus::tstring 的本质⚙️ 二、std::string 转 tstring 的三种方法✅ 1. 使用内置宏 LOG4CPLUS_STRING_TO_TSTRING(推荐)✅ 2. 手动条件编译转换(精细控制)✅ 3. 多字节模式下的直接赋值⚙️…

深度学习之CNN网络简介

CNN网络简单介绍 1.概述 卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理具有网格状结构数据的深度学习模型。 ​ CNN网络主要有三部分构成:卷积层、池化层和全连接层构成,其中卷积层负责提取图像中…

【微实验】基频提取的MATLAB实现(优化版)

前情提要: 【超详细】科普:别再只会用自相关!YIN 和 PYIN 如何破解音频隐藏密码?-CSDN博客 【微实验】妈妈我的MATLAB会识别声音的基频了!-CSDN博客 今天用MATLAB把算法封装成函数,然后调用对比结果。 …

开发 npm 包【详细教程】(含发布 npm 包,版本号升级,修改包后重新发布等)

1. 给 npm 包取个【唯一】的名字! npm 包命名规范 只能包含小写字母(a-z)、数字(0-9)、连字符(-) 和 下划线(_),不能包含空格、大写字母、标点符号&#xff…

Secure 第三天作业

实验需求:1.参考以上拓扑所示,完成以下需求:1) 配置各设备 IP 地址2) 配置 ZBFW,Inside-1 和 nside-2 属于内部 Zone,Outside-1 属于外部 Zonezone security insidezone security outsidezone-p…

Linux应用层-5.计算机网络(菜鸟学习笔记)

计算机网络的核心是连接与通信,从底层的物理信号到上层的应用服务,各层协议协同工作---------------------------------------------------------------------------------------一.计算机网络分类(按范围)1•个人区域网&#xff…