BT 种子预览台(DSL)

搜索 / 解析 / 预览 BT 种子内容,并一键投递到本机下载工具(qBittorrent / Transmission / aria2)的 Web 控制台。

功能特性

  • 多源聚合搜索:同时搜索多个公开磁力站并自动按 infoHash 去重、按做种数排序。
    • The Pirate Bay(apibay)
    • Nyaa
    • SolidTorrents
    • 磁力搜索(cilisousuo.cc)
  • 种子内容预览:通过 WebTorrent 的 DHT / Tracker 解析磁力链,取得文件清单、总大小、做种/下载人数(无需真正下载文件)。
  • 一键投递:把选中的磁力链直接发给本机 BT 客户端开始下载,并记录投递历史。
  • 可配置:搜索代理、超时、启用哪些搜索源、BT 客户端地址都可在「设置」页或 .env 中调整。

技术栈

  • 前端/全栈:Nuxt 4(Vue 3 + Nitro 服务端)
  • 数据库:MongoDB(搜索历史、投递记录、配置持久化;不连库时回落到 .env 默认值)
  • 关键依赖:webtorrent(种子解析)、mongodb、parse-torrent、undici(带代理的 fetch)、fast-xml-parser

环境要求

  • Node.js ≥ 18(推荐 20 LTS)
  • MongoDB(可选;不安装也能跑,只是配置和历史记录不会持久化)

快速开始(本地开发)

# 1. 安装依赖
npm install

# 2. 配置环境变量(可选,见下文「配置项」)
cp .env.example .env

# 3. 启动开发服务器
npm run dev

打开 http://localhost:3000 即可。

构建并本地预览生产版本:

npm run build
npm run preview

配置项

所有配置都可写入 .env(项目根目录),未设置时使用括号内默认值。

变量 说明 默认
MONGODB_URI MongoDB 连接串 mongodb://127.0.0.1:27017
MONGODB_DB 数据库名 torrent_console
SEARCH_PROXY 访问搜索源时使用的 HTTP 代理(如 http://127.0.0.1:7890),留空直连 空
SEARCH_TIMEOUT 单次搜索源请求超时(毫秒) 12000
METADATA_TIMEOUT 磁力链元数据解析超时(毫秒) 30000
APIBAY_BASE The Pirate Bay 接口地址 https://apibay.org
NYAA_BASE Nyaa 地址 https://nyaa.si
CILISOUSUO_BASE 磁力搜索(cilisousuo)地址 https://cilisousuo.cc

这些项也可在「设置」页通过 UI 修改(保存后写入 MongoDB 的 settings 集合,优先级高于 .env)。

搜索源说明

cilisousuo.cc 的列表页只暴露名称、大小和详情页短链,不含 infoHash,因此该源会逐条抓取详情页补全磁力链(单次搜索最多取前 24 条、5 路并发)。若服务端网络连不上该站,请在「设置」里配置 SEARCH_PROXY。

部署

方式一:Docker(推荐)

已提供 Dockerfile 与 docker-compose.yml(自带 MongoDB):

# 构建并启动(后台)
docker compose up -d --build

# 查看日志
docker compose logs -f app

访问 http://<服务器IP>:3000 。

仅构建镜像单独运行:

docker build -t bt-preview .
docker run -d --name bt-preview -p 3000:3000 \
  -e MONGODB_URI=mongodb://mongo:27017 \
  bt-preview

方式二:直接运行(Node 服务器)

# 生产构建,产物在 .output/
npm run build

# 用任意进程管理器跑起来(以 PM2 为例)
npm install -g pm2
pm2 start .output/server/index.mjs --name bt-preview
pm2 save

关键运行环境变量:

HOST=0.0.0.0   # 监听地址
PORT=3000      # 监听端口
MONGODB_URI=mongodb://127.0.0.1:27017

方式三:反向代理(Nginx 示例)

server {
    listen 80;
    server_name your.domain;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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;
    }
}

常见问题

  • 搜索源"打不开" / 搜不到结果:公开磁力站在部分网络下被墙。在「设置」里填一个可用的 HTTP 代理(SEARCH_PROXY),保存后重试。
  • MongoDB 未连接提示:不影响基础搜索;只是配置和历史不会持久化。安装并启动 MongoDB,或设置 MONGODB_URI 指向可用的实例即可。
  • 磁力解析不可用:WebTorrent 依赖 Node 网络环境(DHT/UDP)。在受限网络下可能只能显示 infoHash,拿不到文件清单,属正常现象。

目录结构

app/            前端页面与组件(Nuxt pages / components / composables)
server/
  api/         Nitro 接口(search / torrent / clients / history / downloads ...)
  utils/
    search/    各搜索源实现(apibay / nyaa / solidtorrents / cilisousuo)
    mongo.ts   MongoDB 连接与索引
    appconfig.ts  配置读写与默认值
    torrent.ts    磁力链 / 种子解析工具
S
Description
No description provided
https://bt-one-orpin.vercel.app
Readme
233 KiB
Languages
TypeScript 57.8%
Vue 33.5%
CSS 7.8%
JavaScript 0.5%
Dockerfile 0.4%