diff --git a/.github/README.md b/.github/README.md
index 277048472..62e5b705f 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -147,6 +147,7 @@
| 🟢 |
| OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | |
| 🟢 |
| overseerr | https://docs.overseerr.dev/ | 管理您的媒体库请求 | |
| 🟢 |
| PageSpy | https://www.pagespy.org/ | 开源调试平台 | |
+| 🟢 |
| 盘搜 (PanSou) | https://so.252035.xyz/ | 高性能的网盘资源搜索API服务 | |
| 🟢 |
| 泡泡(PaoPao) | https://www.paopao.info/ | 清新文艺微社区 | |
| 🟢 |
| PeerBanHelper | https://github.com/PBH-BTN/PeerBanHelper/ | BT 反吸血工具 | |
| 🟢 |
| PhotoPrism | https://www.photoprism.app/ | 面向去中心化网络的人工智能照片应用程序 | |
diff --git a/README.md b/README.md
index a4deb60f2..b31c0e717 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,7 @@
| 🟢 |
| OutLine | https://www.getoutline.com/ | 快速、协作的团队知识库 | |
| 🟢 |
| overseerr | https://docs.overseerr.dev/ | 管理您的媒体库请求 | |
| 🟢 |
| PageSpy | https://www.pagespy.org/ | 开源调试平台 | |
+| 🟢 |
| 盘搜 (PanSou) | https://so.252035.xyz/ | 高性能的网盘资源搜索API服务 | |
| 🟢 |
| 泡泡(PaoPao) | https://www.paopao.info/ | 清新文艺微社区 | |
| 🟢 |
| PeerBanHelper | https://github.com/PBH-BTN/PeerBanHelper/ | BT 反吸血工具 | |
| 🟢 |
| PhotoPrism | https://www.photoprism.app/ | 面向去中心化网络的人工智能照片应用程序 | |
diff --git a/apps/pansou/README.md b/apps/pansou/README.md
new file mode 100644
index 000000000..f82c2afc1
--- /dev/null
+++ b/apps/pansou/README.md
@@ -0,0 +1,52 @@
+# 盘搜 (PanSou)
+
+PanSou是一个高性能的网盘资源搜索API服务,支持TG搜索和自定义插件搜索。系统设计以性能和可扩展性为核心,支持并发搜索、结果智能排序和网盘类型分类。
+
+
+
+
+
+## 特性
+
+### 高性能搜索
+
+并发执行多个TG频道及异步插件搜索,显著提升搜索速度;工作池设计,高效管理并发任务
+
+### 网盘类型分类
+
+自动识别多种网盘链接,按类型归类展示
+
+### 智能排序
+
+基于插件等级、时间新鲜度和优先关键词的多维度综合排序算法
+
+### 异步插件系统
+
+支持通过插件扩展搜索来源,支持"尽快响应,持续处理"的异步搜索模式,解决了某些搜索源响应时间长的问题。详情参考插件开发指南
+
+### 二级缓存
+
+分片内存+分片磁盘缓存机制,大幅提升重复查询速度和并发性能
+
+## 支持的网盘类型
+
+| 网盘名称 | 标识符 |
+|--------|--------|
+| 百度网盘 | baidu |
+| 阿里云盘 | aliyun |
+| 夸克网盘 | quark |
+| 天翼云盘 | tianyi |
+| UC网盘 | uc |
+| 移动云盘 | mobile |
+| 115网盘 | 115 |
+| PikPak | pikpak |
+| 迅雷网盘 | xunlei |
+| 123网盘 | 123 |
+| 磁力链接 | magnet |
+| 电驴链接 | ed2k |
+| 其他 | others |
+
+---
+
+
+
diff --git a/apps/pansou/data.yml b/apps/pansou/data.yml
new file mode 100644
index 000000000..fce2b5c30
--- /dev/null
+++ b/apps/pansou/data.yml
@@ -0,0 +1,17 @@
+additionalProperties:
+ key: pansou
+ name: 盘搜 (PanSou)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 高性能的网盘资源搜索API服务
+ shortDescEn: High-performance web disk resource search API service
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://so.252035.xyz/
+ github: https://github.com/fish2018/pansou/
+ document: https://github.com/fish2018/pansou/
+ architectures:
+ - amd64
+ - arm64
diff --git a/apps/pansou/latest/data.yml b/apps/pansou/latest/data.yml
new file mode 100644
index 000000000..d817bdbd1
--- /dev/null
+++ b/apps/pansou/latest/data.yml
@@ -0,0 +1,78 @@
+additionalProperties:
+ formFields:
+ - default: "/home/pansou"
+ edit: true
+ envKey: PANSOU_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8888
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "tgsearchers4,Aliyun_4K_Movies,bdbdndn11,yunpanx,bsbdbfjfjff,yp123pan,sbsbsnsqq,yunpanxunlei,tianyifc,BaiduCloudDisk,txtyzy,peccxinpd,gotopan,PanjClub,kkxlzy,baicaoZY,MCPH01,MCPH02,MCPH03,bdwpzhpd,ysxb48,jdjdn1111,yggpan,MCPH086,zaihuayun,Q66Share,ucwpzy,shareAliyun,alyp_1,dianyingshare,Quark_Movies,XiangxiuNBB,ydypzyfx,ucquark,xx123pan,yingshifenxiang123,zyfb123,tyypzhpd,tianyirigeng,cloudtianyi,hdhhd21,Lsp115,oneonefivewpfx,qixingzhenren,taoxgzy,Channel_Shares_115,tyysypzypd,vip115hot,wp123zy,yunpan139,yunpan189,yunpanuc,yydf_hzl,leoziyuan,pikpakpan,Q_dongman,yoyokuakeduanju,TG654TG,WFYSFX02,QukanMovie,yeqingjie_GJG666,movielover8888_film3,Baidu_netdisk,D_wusun,FLMdongtianfudi,KaiPanshare,QQZYDAPP,rjyxfx,PikPak_Share_Channel,btzhi,newproductsourcing,cctv1211,duan_ju,QuarkFree,yunpanNB,kkdj001,xxzlzn,pxyunpanxunlei,jxwpzy,kuakedongman,liangxingzhinan,xiangnikanj,solidsexydoll,guoman4K,zdqxm,kduanju,cilidianying,CBduanju,SharePanFilms,dzsgx,BooksRealm,Oscar_4Kmovies,douerpan,baidu_yppan,Q_jilupian,Netdisk_Movies,yunpanquark,ammmziyuan,ciliziyuanku,cili8888,jzmm_123pan"
+ edit: true
+ envKey: CHANNELS
+ labelZh: Telegram搜索频道
+ labelEn: Telegram search channel
+ required: true
+ type: text
+ - default: "labi,zhizhen,shandian,duoduo,muou,wanou,hunhepan,jikepan,panwiki,pansearch,panta,qupansou,hdr4k,pan666,susu,thepiratebay,xuexizhinan,panyq,ouge,huban,cyg,erxiao,miaoso,fox4k,pianku,clmao,wuji,cldi,xiaozhang,libvio,leijing,xb6v,xys,ddys,hdmoli,yuhuage,u3c3,javdb,clxiong,jutoushe,sdso,xiaoji,xdyh,haisou,bixin,djgou,nyaa,xinjuc,aikanzy,qupanshe,xdpan,discourse,yunsou,qqpd,ahhhhfs,nsgame,gying,quark4k,quarksoo,sousou,ash"
+ edit: true
+ envKey: ENABLED_PLUGINS
+ labelZh: 启用插件
+ labelEn: Enable plugins
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: PROXY
+ labelZh: Sock5代理
+ labelEn: Sock5 proxy
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: HTTP_PROXY
+ labelZh: HTTP代理
+ labelEn: HTTP proxy
+ required: false
+ type: text
+ - default: "false"
+ edit: true
+ envKey: AUTH_ENABLED
+ labelZh: 启用认证
+ labelEn: Enable authentication
+ required: true
+ type: select
+ values:
+ - label: 启用
+ value: "true"
+ - label: 禁用
+ value: "false"
+ - default: "admin:pass,user:pass"
+ edit: true
+ envKey: AUTH_USERS
+ labelZh: 账户配置
+ labelEn: Account configuration
+ required: true
+ type: text
+ - default: 24
+ edit: true
+ envKey: AUTH_TOKEN_EXPIRY
+ labelZh: 认证有效期 (小时)
+ labelEn: Authentication validity period (hours)
+ required: true
+ type: number
+ - default: ""
+ edit: true
+ envKey: AUTH_JWT_SECRET
+ labelZh: JWT密钥
+ labelEn: JWT secret
+ required: false
+ type: text
diff --git a/apps/pansou/latest/docker-compose.yml b/apps/pansou/latest/docker-compose.yml
new file mode 100644
index 000000000..b10e76613
--- /dev/null
+++ b/apps/pansou/latest/docker-compose.yml
@@ -0,0 +1,39 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ pansou:
+ image: ghcr.io/fish2018/pansou:latest
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8888
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${PANSOU_ROOT_PATH}/cache:/app/cache
+ environment:
+ - TZ=Asia/Shanghai
+ - PORT=8888
+ - CACHE_ENABLED=true
+ - CACHE_PATH=/app/cache
+ - CACHE_MAX_SIZE=100
+ - CACHE_TTL=60
+ - ASYNC_PLUGIN_ENABLED=true
+ - ASYNC_RESPONSE_TIMEOUT=4
+ - ASYNC_MAX_BACKGROUND_WORKERS=20
+ - ASYNC_MAX_BACKGROUND_TASKS=100
+ - ASYNC_CACHE_TTL_HOURS=1
+ - HTTPS_PROXY=${HTTP_PROXY:-}
+ healthcheck:
+ test: [ "CMD", "wget", "-q", "--spider", "http://localhost:8888/api/health" ]
+ interval: 30s
+ timeout: 5s
+ retries: 3
+ start_period: 10s
diff --git a/apps/pansou/latest/envs/default.env b/apps/pansou/latest/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/pansou/latest/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/pansou/latest/envs/global.env b/apps/pansou/latest/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/pansou/latest/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/pansou/latest/scripts/init.sh b/apps/pansou/latest/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/pansou/latest/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/pansou/latest/scripts/uninstall.sh b/apps/pansou/latest/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/pansou/latest/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/pansou/latest/scripts/upgrade.sh b/apps/pansou/latest/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/pansou/latest/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/pansou/logo.png b/apps/pansou/logo.png
new file mode 100644
index 000000000..2512e2b9c
Binary files /dev/null and b/apps/pansou/logo.png differ