PanPanSo 项目概览

一个把网盘资源聚合成一次搜索的系统

如果你第一次来到 PanPanSo,可以把它理解成一个“统一搜索入口”。 你只需要输入一次关键词,系统就会去多个盘搜站点和 Telegram 公开频道里检索资源, 再把分散的结果整理成按平台分组的列表,例如阿里云盘、夸克和百度网盘。 这一页不会假设你知道项目背景,而是从访客视角说明它是什么、你能得到什么,以及它大概怎么做到。

多来源搜索一次输入分批返回统一整理

01 · 项目认知

如果你第一次看到它,先理解这 3 件事

先不要关心实现细节。对访客来说,更重要的是知道它搜什么、结果从哪里来,以及为什么这样会更省事。

它搜什么

公开分享的网盘资源

比如电影、课程、文档或工具包等与关键词相关的分享链接。

结果从哪里来

多个站点和频道

系统会同时搜索盘搜站点和 Telegram 公开频道,而不是只依赖单一来源。

为什么这样有用

少切换,多拿结果

你不需要一个个平台单独搜,系统会先把分散结果集中起来,再统一展示。

关键词
多个资源来源
统一整理
平台分组结果
说明

你可以把 PanPanSo 理解成一个“搜索组织器”。 它的重点不是自己存储资源,而是把原本分散在不同地方的结果集中检索并整理出来。

02 · 系统如何配合

为了把分散结果变成可读结果,系统做了 4 步分工

这里保留少量必要的技术说明,帮助你理解“为什么它能组织多来源结果”。

页面

页面接收搜索

用户在页面输入关键词,前端负责发起搜索并展示结果。

入口

统一入口收请求

所有搜索都走同一个接口,避免不同来源各自一套调用方式。

调度

调度层组织搜索

系统决定先搜哪些来源、怎样并发执行,以及怎样合并结果。

接入

来源适配层接入站点和频道

不同来源返回格式不同,适配层负责把它们转换成统一结果。

已接入站点

3

盘搜插件来源

优先来源

31

先返回第一批结果

补充来源

20

继续补齐更多结果

返回方式

分批返回

先快后全

缓存

TG 与插件各自缓存

后端把 TG 和插件分成两套 MemoryCache,缓存键会带上 keyword 和来源集合。默认 TTL 来自运行时配置,当前是 15 分钟,forceRefresh 会直接跳过缓存。

插件

统一接口接入不同站点

插件遵循统一的 AsyncSearchPlugin 接口。每个插件自己完成请求、解析和清洗,最后统一返回 SearchResult[];当前会注册 dapanso、pansearch、hunhepan。

来源

先分类,再分批调度

来源先分成插件源和 TG 源,TG 再拆成热池和冷池。前端把插件按 3 个一组、频道按 6 个一组拆批,热池先回首屏,结果不足时再拉冷池补搜。

03 · 一次搜索如何发生

你点击搜索后,系统会按 3 个阶段工作

这里不再细拆每一步,而是直接说明搜索链路最关键的三个阶段: 准备来源、首批返回、后续补全。

01

准备来源

页面先拿到当前可用的插件和频道池,决定这一轮搜索从哪些来源开始。

02

首批返回

系统优先执行更适合首屏的那一批来源,让用户尽快看到第一批平台化结果。

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" }]
  }
}
内部结果插件结果 / TG 结果
统一结果平台分组结果
说明

这里最重要的不是字段细节,而是“统一”这件事: 不管内部来自哪个站点或频道,对外都尽量保持同一种搜索方式和同一种结果结构。 这也是前端可以持续增量合并结果,而不用为每个来源写一套渲染逻辑的原因。

05 · 读完记住什么

看完这页,你应该能直接回答这 3 个问题

它是什么

一个把多个网盘资源来源聚合到一起的搜索系统。

它怎么工作

通过统一入口搜索多个来源,再把分散结果整理成统一结构。

它为什么有用

让你少切换来源、少重复搜索,更快拿到更集中也更清晰的结果。