Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

imythu/rflush

Repository files navigation

云母

GitHub Release Docker Image

云母是一套面向 PT 使用场景的 Web 管理工具,包含 RSS 种子下载、PT 刷流任务管理、站点账号数据缓存与账号数据总览导出。

当前仓库、二进制、Docker 镜像与数据库文件名仍沿用 rflush,对外展示的产品名为"云母"。

现在的运行方式不再依赖 rss.yaml。程序启动后会开启一个本地 Web 服务,通过页面管理:

  • 全局下载配置
  • RSS 任务的新增 / 删除 / 暂停 / 启动
  • 任务批量启动 / 暂停 / 删除
  • 删除任务时可选同步删除已下载种子文件
  • 历史下载记录查看
  • PT 站点配置与连接测试
  • PT 站点上传 / 下载量缓存与账号数据总览
  • 站点账号数据支持导出 PNG、复制到剪贴板,便于求邀或资历展示
  • 下载器配置与连接测试
  • 刷流任务的新增 / 编辑 / 删除 / 启动 / 停止 / 立即执行一次
  • 刷流种子列表、删种状态、缓存状态查看

下载逻辑已拆为可复用模块:一次接收一组配置,执行完本轮下载后返回;多个任务可以并发运行,但限流仍按 协议 + 域名(+端口) 全局共享。

功能

  • 多 RSS 订阅,每个订阅独立目录
  • SQLite 持久化配置、下载历史和刷流状态,数据库位于 data/rflush.db
  • 单次执行型下载引擎,可被后端重复并发调用
  • 内置域名级 FIFO 限流器
  • 遇到"请求过于频繁"自动冻结对应域名并等待恢复
  • 历史记录保存重试次数,不保存每次重试细节
  • React 前端页面,适配桌面端与移动端
  • PT 刷流任务支持 cron 调度和手动立即执行
  • PT 刷流支持站点绑定、下载器绑定、选种规则和删种规则
  • 免费种 / H&R 判定支持 RSS 扩展属性和站点详情增强两层来源
  • PT 站点账号数据会写入 SQLite,程序启动后异步刷新一次,之后每小时自动刷新
  • 站点总览按站点并发拉取数据,单个站点失败不会影响其它站点,失败项会保留错误状态

Get Started

方式一:直接运行二进制

从 GitHub Release 下载与你平台匹配的压缩包,解压后直接运行:

# Linux
./rflush

查看启动参数与帮助:

./rflush -h
./rflush --help

支持的启动参数:

  • -H, --host:监听地址,默认 0.0.0.0(支持环境变量 RFLUSH_HOST)
  • -p, --port:监听端口,默认 3000(支持环境变量 RFLUSH_PORT)
  • -d, --data-dir <DIR>:数据目录(数据库和下载输出都写入该目录,支持环境变量 RFLUSH_DATA_DIR)

启动示例:

# 监听本机回环地址
./rflush -H 127.0.0.1 -p 8080
# 指定数据目录
./rflush -d ./runtime-data

默认行为(不传 --data-dir):

  • 监听 http://0.0.0.0:3000
  • 数据库 ./data/rflush.db
  • RSS 下载输出目录仍在当前工作目录

然后在浏览器打开页面,完成以下配置:

  1. 全局下载设置
  2. RSS 任务
  3. PT 站点
  4. 下载器
  5. 刷流任务
  6. 站点账号数据总览与导出

方式二:使用 Docker

镜像发布到:

ghcr.io/imythu/rflush

支持平台:

  • Linux amd64
  • Linux arm64

示例:

docker run --name rflush \
 -p 3000:3000 \
 -v $(pwd)/data:/data \
 ghcr.io/imythu/rflush:latest

镜像内默认环境变量:

  • RFLUSH_HOST=0.0.0.0
  • RFLUSH_PORT=3000
  • RFLUSH_DATA_DIR=/data

因此上面的挂载会把数据库与下载输出统一写到宿主机的 $(pwd)/data

也可以覆盖端口:

docker run --name rflush \
 -e RFLUSH_PORT=8080 \
 -p 8080:8080 \
 -v $(pwd)/data:/data \
 ghcr.io/imythu/rflush:latest

指定版本(版本号见 Releases):

docker run --name rflush \
 -p 3000:3000 \
 -v $(pwd)/data:/data \
 ghcr.io/imythu/rflush:<version>

开发模式

# 终端 1:后端
cargo run
# 终端 2:前端
cd frontend
npm install
npm run dev

PT 刷流说明

当前刷流链路支持:

  • 站点管理:NexusPHPM-Team
  • 下载器:qBittorrent
  • 选种条件:体积、做种人数、促销类型、是否跳过 H&R
  • 删种条件:最小做种时间、H&R 最小做种时间、分享率、上传量、下载超时、平均上传速度、不活跃时间

免费种 / H&R 判定规则:

  • 第一轮:只使用 RSS 已提供的属性做快速过滤
  • 第二轮:对需要补充判定的候选种子请求站点详情页 / API,再做严格过滤

这意味着:

  • RSS 没带 free / H&R 属性的种子,不会在第一轮被提前过滤掉
  • M-Team 这类站点可以依赖详情增强补出免费种信息

刷流种子列表页面当前展示:

  • 种子ID:站点详情页 ID
  • 信息Hash:.torrent 文件中的真实 infohash
  • 状态:优先显示下载器中的实时状态;如果下载器里仍存在,不会继续显示为 removed

使用说明

直接运行

./rflush

默认监听:

  • 后端 / 页面:http://0.0.0.0:3000

首次启动会自动创建:

  • data/rflush.db:配置与历史数据库(未指定 --data-dir 时)
  • 各 RSS 对应下载目录:默认在当前目录;指定 --data-dir 后写入该目录

使用流程

  1. 打开 http://<服务器IP>:3000
  2. 在"任务设置"中保存下载参数
  3. 在"任务管理"中添加 RSS 任务,可选择是否自动启动
  4. 在任务页执行单个或批量启动 / 暂停 / 删除
  5. 在"下载历史"或任务弹窗中查看结果
  6. 在"站点管理"和"下载器"中完成 PT 配置
  7. 在"刷流任务"中创建任务,可按计划执行或点击"立即执行一次"
  8. 在"站点管理"的"总览"中查看账号数据,并按需复制或下载图片

前后端开发模式

开发时前后端分开启动:

后端

cargo run

前端

cd frontend
npm install
npm run dev

前端开发服务器默认是 http://127.0.0.1:5173,会请求后端 http://127.0.0.1:3000/api/*

打包

前端开发阶段与后端分离;发布阶段前端构建产物会放进 frontend/dist,然后由 Rust 可执行文件内置并对外提供。

本地手动构建:

cd frontend
npm install
npm run build
cd ..
cargo build --release

GitHub Release 发布产物:

  • 二进制:
    • Linux amd64 / arm64
    • Windows amd64 / arm64
  • Docker 镜像:
    • Linux amd64
    • Linux arm64

发布流程:

  1. 先构建前端
  2. 再构建各平台后端
  3. 前端资源内嵌到最终单文件二进制
  4. 发布 GitHub Release
  5. 推送 GHCR 镜像

合并种子文件

把当前目录下所有一级子目录中的 .torrent 文件复制到 merge/:

# Windows
.\merge.ps1
# Linux / macOS
chmod +x merge.sh
./merge.sh

脚本会:

  • 自动跳过 merge/src/target/frontend/data/ 等非下载目录
  • 只复制 .torrent 文件
  • 同名文件自动跳过,不覆盖已有文件

数据库

SQLite 数据库位于:

默认: ./data/rflush.db
指定 --data-dir 后: <data-dir>/rflush.db

其中包含:

  • global_settings:任务设置
  • rss_subscriptions:RSS 任务
  • download_runs:每次批量执行的概要
  • download_records:每个种子的最终下载记录,包含种子文件是否已删除标记
  • sites:PT 站点配置
  • site_stats:PT 站点账号数据缓存,包含 UID、用户名、上传量、下载量、分享率与最近刷新状态
  • downloaders:下载器配置
  • brush_tasks:刷流任务配置
  • brush_task_torrents:刷流任务下的种子记录
  • task_stats_snapshots:刷流任务统计快照
  • torrent_traffic:种子级流量快照

后端接口

主要 API:

  • GET /api/settings
  • PUT /api/settings
  • GET /api/rss
  • POST /api/rss
  • DELETE /api/rss/:id
  • POST /api/tasks/:id/start
  • POST /api/tasks/:id/pause
  • POST /api/tasks/:id/delete
  • GET /api/tasks/:id/records
  • POST /api/tasks/start
  • POST /api/tasks/pause
  • POST /api/tasks/delete
  • POST /api/tasks/start-all
  • POST /api/tasks/pause-all
  • POST /api/tasks/delete-all
  • GET /api/history
  • POST /api/jobs/run-all
  • POST /api/jobs/run/:id
  • GET /api/sites
  • POST /api/sites
  • PUT /api/sites/:id
  • DELETE /api/sites/:id
  • POST /api/sites/:id/test
  • GET /api/sites/:id/stats
  • GET /api/sites/stats-overview
  • GET /api/downloaders
  • POST /api/downloaders
  • PUT /api/downloaders/:id
  • DELETE /api/downloaders/:id
  • POST /api/downloaders/:id/test
  • GET /api/brush-tasks
  • POST /api/brush-tasks
  • GET /api/brush-tasks/:id
  • PUT /api/brush-tasks/:id
  • DELETE /api/brush-tasks/:id
  • POST /api/brush-tasks/:id/start
  • POST /api/brush-tasks/:id/stop
  • POST /api/brush-tasks/:id/run
  • GET /api/brush-tasks/:id/torrents
  • GET /api/stats/overview
  • GET /api/stats/trend

About

低内存占用的 PT 刷流工具,支持 M-Team(馒头)与 NexusPHP 站点,提供 Web 管理、任务调度与自动删种策略。Lightweight PT seeding automation tool with low memory footprint, supporting M-Team and NexusPHP trackers with Web UI, scheduling, and auto-cleanup rules.

Topics

Resources

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /