跳到正文

产品 01 · PT 站点订阅、搜索与统计自动化

pt-tools

RSS → 下载器 · 跨站统计 · Web + ChatOps · Go 单二进制

把重复的那几步交出去,把判断留给自己。 在多个 PT 站点上维护账号,日常动作是固定的:翻订阅、看有没有免费种、推给下载器、过一段时间回来清理、月底汇总一下各站的数据。这些步骤本身没有难度,只是需要有人一直盯着。pt-tools 把这些循环接过去,并且每个循环都带着自己的边界条件 —— H&R 保护、磁盘剩余空间下限、免费期结束时的处理策略。

默认行为

不配过滤规则时,RSS 只下免费种

这是订阅路径的默认值,也是最容易被误解的一条。没有启用任何过滤规则的时候,RSS 只会下载免费种子 —— 不是"整个订阅源都拉下来"。想要非免费的内容进入下载队列,必须自己写过滤规则。三种规则可用:

  1. 01关键词匹配 —— 最直接的一种,命中标题里的字符串。
  2. 02通配符 —— 用在剧集、季度、分辨率这类有固定命名结构的场景。
  3. 03正则 —— 前两种表达不了的条件走这条,代价是自己负责它的正确性。

01

它解决什么问题

难点不在单个动作,而在这些动作要在多个站点上长期重复。手工做的时候,出错的地方是固定的几个:免费期结束了没注意到,种子还在跑;磁盘满了才发现清理规则从来没生效;H&R 还没做够时间的种子被顺手删了;月底想看看各站数据,要一个个登进去抄。pt-tools 把这几件事变成配置项,然后按配置执行,出问题时留下记录。

  • 01

    在多个站点维护账号的人

    站点越多,手工翻订阅和抄统计数据的成本越是线性上涨。汇总视图和统一的订阅配置是为这个场景做的。

  • 02

    把下载器跑在服务器上的人

    Web 管理界面加 ChatOps,意味着不必为了暂停一个种子去开 SSH。QQ 或 Telegram 的私聊窗口就是控制台。

  • 03

    磁盘吃紧的人

    自动清理带磁盘剩余空间下限,清理规则和 H&R 保护一起生效 —— 不会为了腾空间删掉还没做满时长的种子。

  • 04

    登录态经常掉的人

    守护登录会话:定期探活,剩余天数不多时提前告警,Web 界面或浏览器扩展一键刷新,而不是等到订阅静默失败了才发现。

02

五个自动化循环

每个循环都有触发条件、动作和一个约束。约束这一列不是补充说明 —— 它是这些循环敢让它自己跑的原因。

  • 01

    RSS 订阅 → 下载器

    按周期解析订阅源,识别其中的免费种子并推送给配置好的下载器;也可以只把 .torrent 存到本地,自己决定什么时候添加。

    约束

    未启用过滤规则时只取免费种。要取非免费内容,得自己写关键词、通配符或正则规则。

  • 02

    跨站点搜索 → 批量推送

    一次查询打到多个站点,结果可以批量下载、批量推送到某个下载器实例,或者整批存成本地文件。

    约束

    推送目标是显式选择的下载器实例,各自带保存目录与添加后的启动策略,不会混进同一个目录。

  • 03

    免费期结束 → 暂停

    监控免费期的截止时间,到点自动暂停对应的种子,避免免费期过后继续产生下载量。

    约束

    未完成的种子是否一并删除,是一个显式开关,默认不删。

  • 04

    做种达标 → 清理

    按做种时长、分享率或无活动时间清理已完成的种子,把空间交还给下一批。

    约束

    H&R 保护优先于清理规则,并且设有磁盘剩余空间下限 —— 空间够时不会为了"整理"而删。

  • 05

    登录态探活 → 提前告警

    定期探测站点侧的活跃状态,剩余天数逐渐减少时提前告警,通过 Web 界面或浏览器扩展一键刷新。

    约束

    刷新是手动确认的动作,不会拿着过期凭据反复重试把账号撞进风控。

03

统计与数据卡片

把各站点分散的数字收进一处,并且能直接导出成一张图。

  • 01

    汇总维度

    上传量、下载量、分享率、魔力值,以及等级进度 —— 按站点分列,也能看到总和。

  • 02

    数据卡片

    把统计渲染成一张卡片图片,用于分享或存档。图片在本机生成,不经过第三方渲染服务。

  • 03

    版本自检

    检查是否有新版本;二进制部署方式下可以一键自升级,容器部署则按镜像标签更新。

04

ChatOps · 从 v0.31 起

把控制台搬进聊天窗口,这样在手机上也能暂停一个种子。两条通道做过端到端验证,另外两条只是"能发出去",下面分开标注 —— 这个区别在真要靠它值班的时候很重要。

  • 01

    QQ · OneBot

    NapCat 反向 WebSocket · 私聊指令

    已端到端验证

    通过 NapCat 以反向 WebSocket 接入,指令在私聊里下发。这条通道的收发链路做过完整验证。

  • 02

    Telegram · Bot API

    BotFather 长轮询 · 私聊指令 · 支持代理

    已端到端验证

    BotFather 建 Bot,长轮询收消息,私聊下发指令,支持走代理。这条通道的收发链路同样做过完整验证。

  • 03

    企业微信群机器人

    群机器人 webhook

    实验性 · 未端到端验证

    代码在,但没有做过端到端验证。当成实验特性用,不要把值班告警只挂在它上面。

  • 04

    自定义 Webhook

    HMAC-SHA256 签名

    实验性 · 未端到端验证

    推送到你自己的接收端,请求带 HMAC-SHA256 签名。同样没有做过端到端验证。

13 条内置指令

/help
列出可用指令
/status
运行状态
/version
当前版本
/tasks
任务列表
/sites
站点列表
/torrents
种子列表
/pause
暂停
/resume
恢复
/delete
删除
/bind
绑定账号
/unbind
解绑
/addrss
新增订阅
/delrss
删除订阅

权限与凭据

管理员白名单
只有名单内的账号能下发指令,其他消息一概不处理。
绑定码有效期
五档可选:5 分钟、1 小时、1 天、30 天、永久。默认取短的那一端。
静态加密
凭据以 AES-GCM 加密落盘,不以明文存放。
Webhook 签名
出站 webhook 带 HMAC 签名,接收端可以校验来源。
审计日志
指令与执行结果留有记录,事后可以回查是谁在什么时候做了什么。

05

部署

两种部署形态:容器,或者单个二进制。二进制没有运行时依赖 —— Go 编译产物,放到 PATH 上就能跑。

容器

# 拉镜像

$ docker pull sunerpy/pt-tools

# 挂载配置与数据目录

$ docker run -d -v ./config:/app/config -p 8080:8080 sunerpy/pt-tools

二进制

# 从发布页取对应平台的压缩包,解压后放到 PATH 上

$ pt-tools --help

# 查看当前版本与是否有更新

$ pt-tools version

代理走标准环境变量:HTTP_PROXY、HTTPS_PROXY、ALL_PROXY,例外走 NO_PROXY。二进制部署支持一键自升级;容器部署按镜像标签更新。端口与数据目录以你自己的部署为准,上面的命令是形状示例,不是唯一写法。

06

技术栈

选型都服务于同一件事:一个进程、一份配置、装在自己机器上。

语言
Go 1.25+。发布产物是单个可执行文件,不带运行时依赖。
界面
Web 管理界面,加 QQ / Telegram 两条 ChatOps 通道。
下载器
多实例,每个实例独立配置保存目录与添加后的启动策略。
网络
遵循 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY。
分发
Docker 镜像 sunerpy/pt-tools,以及 Linux 与 Windows 的二进制。
许可
MIT。

07

它不做什么

边界写在前面,比事后解释有用。

  • 01

    不替你判断规则

    各站点的规则、H&R 要求、免费策略都不一样,工具按你写的配置执行,不会替你判断某个操作在某个站点上是否恰当。配置写错的后果落在你的账号上。

  • 02

    不是下载器

    它编排下载器,不实现下载。种子的实际下载与做种由你自己的下载器完成。

  • 03

    不是索引器

    搜索走各站点自己的接口,能搜到什么取决于你在那些站点的权限。它不维护自己的种子库。

  • 04

    两条通知通道未经验证

    企业微信群机器人和自定义 webhook 属于实验特性,没有做过端到端验证。需要可靠告警时用 QQ 或 Telegram。

  • 05

    成本是你自己的机器

    没有托管版本,没有账号体系。它跑在你的机器上,站点凭据也存在那里 —— 这既是设计取向,也意味着备份和安全是你自己的事。

获取

拉一个镜像,或者取一个二进制

Docker 镜像和各平台二进制都在下面。MIT 许可的个人项目,issue 和 PR 都在同一个仓库里。