它搜什么
公开分享的网盘资源
比如电影、课程、文档或工具包等与关键词相关的分享链接。
PanPanSo 项目概览
如果你第一次来到 PanPanSo,可以把它理解成一个“统一搜索入口”。 你只需要输入一次关键词,系统就会去多个盘搜站点和 Telegram 公开频道里检索资源, 再把分散的结果整理成按平台分组的列表,例如阿里云盘、夸克和百度网盘。 这一页不会假设你知道项目背景,而是从访客视角说明它是什么、你能得到什么,以及它大概怎么做到。
01 · 项目认知
先不要关心实现细节。对访客来说,更重要的是知道它搜什么、结果从哪里来,以及为什么这样会更省事。
它搜什么
比如电影、课程、文档或工具包等与关键词相关的分享链接。
结果从哪里来
系统会同时搜索盘搜站点和 Telegram 公开频道,而不是只依赖单一来源。
为什么这样有用
你不需要一个个平台单独搜,系统会先把分散结果集中起来,再统一展示。
你可以把 PanPanSo 理解成一个“搜索组织器”。 它的重点不是自己存储资源,而是把原本分散在不同地方的结果集中检索并整理出来。
02 · 系统如何配合
这里保留少量必要的技术说明,帮助你理解“为什么它能组织多来源结果”。
页面
用户在页面输入关键词,前端负责发起搜索并展示结果。
入口
所有搜索都走同一个接口,避免不同来源各自一套调用方式。
调度
系统决定先搜哪些来源、怎样并发执行,以及怎样合并结果。
接入
不同来源返回格式不同,适配层负责把它们转换成统一结果。
已接入站点
3
盘搜插件来源
优先来源
31
先返回第一批结果
补充来源
20
继续补齐更多结果
返回方式
分批返回
先快后全
缓存
后端把 TG 和插件分成两套 MemoryCache,缓存键会带上 keyword 和来源集合。默认 TTL 来自运行时配置,当前是 15 分钟,forceRefresh 会直接跳过缓存。
插件
插件遵循统一的 AsyncSearchPlugin 接口。每个插件自己完成请求、解析和清洗,最后统一返回 SearchResult[];当前会注册 dapanso、pansearch、hunhepan。
来源
来源先分成插件源和 TG 源,TG 再拆成热池和冷池。前端把插件按 3 个一组、频道按 6 个一组拆批,热池先回首屏,结果不足时再拉冷池补搜。
03 · 一次搜索如何发生
这里不再细拆每一步,而是直接说明搜索链路最关键的三个阶段: 准备来源、首批返回、后续补全。
页面先拿到当前可用的插件和频道池,决定这一轮搜索从哪些来源开始。
系统优先执行更适合首屏的那一批来源,让用户尽快看到第一批平台化结果。
剩余批次和冷池来源继续在后台补搜,结果再持续合并回统一结果模型。
前端会把插件按 3 个一组、频道按 6 个一组拆批处理,让快的来源先出结果。
如果首批结果还不够,系统会继续拉起冷池频道补充搜索,默认门槛是 24 条结果。
TG 和插件搜索会并行执行,过程中还会做超时保护、缓存命中和结果去重归并。
04 · 结果长什么样
这两个例子只用来说明系统边界: 你怎么发起搜索,系统最后会返回什么样的结果。
搜索请求
GET /api/search?kw=流浪地球&src=all&res=merged_by_type
{
"kw": "流浪地球",
"src": "all",
"plugins": ["多个盘搜站点"],
"channels": ["多个 Telegram 公开频道"],
"res": "merged_by_type"
}搜索结果
{
"total": 42,
"merged_by_type": {
"quark": [{ "url": "...", "note": "资源标题" }],
"aliyun": [{ "url": "...", "note": "资源标题" }],
"baidu": [{ "url": "...", "password": "1234" }]
}
}这里最重要的不是字段细节,而是“统一”这件事: 不管内部来自哪个站点或频道,对外都尽量保持同一种搜索方式和同一种结果结构。 这也是前端可以持续增量合并结果,而不用为每个来源写一套渲染逻辑的原因。
05 · 读完记住什么
一个把多个网盘资源来源聚合到一起的搜索系统。
通过统一入口搜索多个来源,再把分散结果整理成统一结构。
让你少切换来源、少重复搜索,更快拿到更集中也更清晰的结果。