# ptool **Repository Path**: qiqi_chen/ptool ## Basic Information - **Project Name**: ptool - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-30 - **Last Updated**: 2025-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ptool 自用的 PT ([Private trackers][]) 网站和 [BitTorrent][] 客户端辅助工具([Github](https://github.com/sagan/ptool))。提供全自动刷流(brush)、自动辅种(使用 IYUU 或 Reseed 等接口)、BT 客户端控制等功能。 TOC - [ptool](#ptool) - [主要特性](#主要特性) - [下载](#下载) - [快速开始(刷流)](#快速开始刷流) - [配置文件](#配置文件) - [程序功能](#程序功能) - [刷流 (brush)](#刷流-brush) - [自动辅种 (iyuu)](#自动辅种-iyuu) - [IYUU 配置](#iyuu-配置) - [使用 IYUU 辅种](#使用-iyuu-辅种) - [自动辅种 (reseed)](#自动辅种-reseed) - [Reseed 配置](#reseed-配置) - [使用 Reseed 辅种](#使用-reseed-辅种) - [方式 1](#方式-1) - [方式 2](#方式-2) - [其它功能](#其它功能) - [BT 客户端控制命令集](#bt-客户端控制命令集) - [读取/修改 BT 客户端配置 (clientctl)](#读取修改-bt-客户端配置-clientctl) - [显示信息 / 暂停 / 恢复 / 删除 / 强制汇报 / 强制检测 Hash 客户端里种子 (show / pause / resume / delete / reannounce / recheck)](#显示信息--暂停--恢复--删除--强制汇报--强制检测-hash-客户端里种子-show--pause--resume--delete--reannounce--recheck) - [管理 BT 客户端里的的种子分类 / 标签 / Trackers 等(getcategories / createcategory / deletecategories / setcategory / gettags / createtags / deletetags / addtags / removetags / renametag / edittracker / addtrackers / removetrackers / setsavepath / modifytorrent / checktag)](#管理-bt-客户端里的的种子分类--标签--trackers-等getcategories--createcategory--deletecategories--setcategory--gettags--createtags--deletetags--addtags--removetags--renametag--edittracker--addtrackers--removetrackers--setsavepath--modifytorrent--checktag) - [导出客户端种子 (export)](#导出客户端种子-export) - [显示 BT 客户端或 PT 站点状态 (status)](#显示-bt-客户端或-pt-站点状态-status) - [显示刷流任务流量统计 (stats)](#显示刷流任务流量统计-stats) - [添加种子到 BT 客户端 (add)](#添加种子到-bt-客户端-add) - [下载站点的种子](#下载站点的种子) - [搜索 PT 站点种子 (search)](#搜索-pt-站点种子-search) - [批量下载种子 (batchdl)](#批量下载种子-batchdl) - [全站动态保种 (dynamicseeding) (试验性功能)](#全站动态保种-dynamicseeding-试验性功能) - [发布(上传)种子 (publish)](#发布上传种子-publish) - [metadata.nfo 元文件](#metadatanfo-元文件) - [支持的站点](#支持的站点) - [显示种子文件信息 (parsetorrent)](#显示种子文件信息-parsetorrent) - [校验种子文件与硬盘内容是否一致 (verifytorrent)](#校验种子文件与硬盘内容是否一致-verifytorrent) - [制作种子 (maketorrent)](#制作种子-maketorrent) - [编辑种子文件 (edittorrent)](#编辑种子文件-edittorrent) - [拆包下载 (partialdownload)](#拆包下载-partialdownload) - [手动添加辅种种子到客户端 (xseedadd)](#手动添加辅种种子到客户端-xseedadd) - [查找下载目录里的未做种文件 (findalone)](#查找下载目录里的未做种文件-findalone) - [标记 BT 客户端里 Tracker 状态异常的种子 (markinvalidtracker)](#标记-bt-客户端里-tracker-状态异常的种子-markinvalidtracker) - [修改本地 BT 客户端里的种子内容文件保存路径 (movesavepath)](#修改本地-bt-客户端里的种子内容文件保存路径-movesavepath) - [转移种子做种客户端 (transfertorrent)](#转移种子做种客户端-transfertorrent) - [硬链接辅助工具 (hardlink)](#硬链接辅助工具-hardlink) - [创建目录硬链接 (cp)](#创建目录硬链接-cp) - [种子文件定向硬链 (torrent)](#种子文件定向硬链-torrent) - [同步 Cookies \& 导入站点 (cookiecloud)](#同步-cookies--导入站点-cookiecloud) - [测试 CookieCloud 服务 (status)](#测试-cookiecloud-服务-status) - [同步站点 Cookies (sync)](#同步站点-cookies-sync) - [导入站点 (import)](#导入站点-import) - [查看 CookieCloud 里的网站 Cookie (get)](#查看-cookiecloud-里的网站-cookie-get) - [查看内置支持站点信息 (sites)](#查看内置支持站点信息-sites) - [其它说明](#其它说明) - [交互式终端 (shell)](#交互式终端-shell) - [站点种子信息显示](#站点种子信息显示) - [站点分组 (group) 功能](#站点分组-group-功能) - [命令别名 (Alias) 功能](#命令别名-alias-功能) - [模仿浏览器 (impersonate)](#模仿浏览器-impersonate) ## 主要特性 - 使用 Go 开发的纯 CLI 程序。单文件可执行程序,没有外部依赖。支持 Windows / Linux、x64 / arm64 等多种环境、架构。 - 无状态(stateless):程序自身不保存任何状态、不在后台持续运行。“刷流”等任务需要使用 cron job 等方式定时运行本程序。 - 使用简单。只需 5 分钟时间,配置 BitTorrent 客户端地址、PT 网站地址和 cookie 即可开始全自动刷流。 - 目前支持的 BitTorrent 客户端: qBittorrent v4.1+ / Transmission (<= v3.0)。 - 推荐使用 qBittorrent。Transmission 客户端未充分测试。 - 目前支持的 PT 站点:绝大部分使用 nexusphp 的网站;M-Team(馒头)。 - 测试过支持的站点:U2、冬樱、红叶、聆音、铂金家、若干不可说的站点等。 - 未列出的大部分 np 站点应该也支持。除了个别魔改 np 很厉害的站点可能有问题。 - 支持通过 [CookieCloud][] 自动同步站点 cookie 或导入站点。 - 刷流功能(brush): - 不依赖 RSS。直接抓取站点页面上最新的种子。 - 无需配置选种规则。自动跳过非免费的和有 HR 的种子;自动筛选适合刷流的种子。 - 无需配置删种规则。自动删除已无刷流价值的种子;自动删除免费时间到期并且尚未下载完成的种子;硬盘空间不足时也会自动删种。 - 其它 PT 站点功能:搜索种子、批量下载种子、发布种子。 - BitTorrent 客户端控制功能:提供完整的管理、控制 BitTorrent 客户端的功能。 - Torrent 文件 / BitTorrent 协议相关的各种辅助功能。部分命令为[松鼠党][]特别优化,支持与 [rclone][] 整合(例如:`verifytorrent`命令能够直接检测 .torrent 种子的内容文件在 rclone 云存储上是否存在)。 - 自动模仿浏览器访问 PT 站点,能够绕过大多数站点的 CF 盾 (impersonate 特性)。 ## 下载 - [开发版本](https://ci.appveyor.com/project/sagan/ptool/build/artifacts) (根据 master 分支最新代码自动构建) - [稳定版本](https://github.com/sagan/ptool/releases) ## 快速开始(刷流) 将本程序的可执行文件 ptool (Linux) 或 ptool.exe (Windows) 放到任意目录(推荐放到 PATH 路径里),运行 `ptool config create` 创建本程序使用的 ptool.toml 配置文件。创建的文件位于当前系统用户主目录的 `.config/ptool/` 路径下。编辑这个文件配置 BT 客户端和 PT 站点信息: ```toml [[clients]] name = "local" type = "qbittorrent" # 客户端类型。目前主要支持 qBittorrent v4.1+。需要启用 Web UI url = "http://localhost:8080/" # qBittorrent web UI 地址 username = "admin" # QB Web UI 用户名 password = "adminadmin" # QB Web UI 密码 [[sites]] type = "keepfrds" cookie = "cookie_here" # 浏览器 F12 获取的网站 cookie ``` 然后运行 `ptool brush local keepfrds` 即可执行刷流任务。程序会从 keepfrds 站点获取最新的种子、根据一定规则筛选出适合的种子添加到 local 这个 BT 客户端里,同时自动从 BT 客户端里删除(已经没有上传的)旧的刷流种子。刷流任务添加到客户端里的种子会放到 `_brush` 分类(Category)里。程序只会对这个分类里的种子进行管理或删除等操作。 使用 Linux cron job / Windows 计划任务 (taskschd.msc) 等方式定时执行上面的刷流任务命令(例如每隔 10 分钟执行一次)即可。 ## 配置文件 程序支持使用 toml 或 yaml 格式的配置文件(`ptool.toml` 或 `ptool.yaml`),推荐使用前者。 将 ptool.toml 配置文件放到当前操作系统用户主目录下的 ".config/ptool/" 路径下(推荐): - Linux: `~/.config/ptool/ptool.toml` - Windows: `%USERPROFILE%\.config\ptool\ptool.toml` 如果临时测试,也可以将 ptool.toml 配置文件直接放到程序启动时的当前目录(cwd)下。 配置文件里可以使用 `[[clients]]` 和 `[[sites]]` 区块添加任意多个 BT 客户端和站点。 `[[sites]]` 区块有两种配置方式: ```toml # 方式 1(推荐):直接使用站点 ID 或 alias 作为类型(type)。无需手动输入站点 url。 [[sites]] #name = "keepfrds" # (可选)手动指定站点名称。如果不指定,默认使用其 type 作为 name type = "keepfrds" cookie = "cookie_here" # 浏览器 F12 获取的网站 cookie # 方式 2:使用通用的 nexusphp 等站点架构类型,需要手动指定站点名称(name)、站点 url 和其他参数。 [[sites]] name = "keepfrds" type = "nexusphp" # 通用站点架构类型。可选值: nexusphp|gazellepw|unit3d|tnode|discuz|mtorrent url = "https://pt.keepfrds.com/" # 站点首页 URL cookie = "cookie_here" # 浏览器 F12 获取的网站 cookie ``` 推荐使用“方式 1”。程序内置了对大部分国内 NexusPHP PT 站点的支持。站点 type 通常为 PT 网站域名的主体部分(不含次级域名和 TLD 部分),例如 BTSCHOOL ( https://pt.btschool.club/ )的站点 type 是 btschool。部分 PT 网站也可以使用别名(alias)配置,例如 M-TEAM ( https://kp.m-team.cc/ )在本程序配置文件里的 type 设为 "m-team" 或 "mteam" 均可。运行 `ptool sites` 查看所有本程序内置支持的 PT 站点列表。本程序没有内置支持的 PT 站点必须通过“方式 2”配置。 (注:部分非 NP 架构站点本程序目前只支持自动辅种、查看站点状态,暂不支持刷流、搜索站点种子等功能) 注:新版 M-Team(馒头)不使用 Cookie 鉴权;其配置方式参考`ptool.example.toml` 示例配置文件里说明。 配置好站点后,使用 `ptool status -t` 测试(``参数为站点的 name)。如果配置正确且 Cookie 有效,会显示站点当前登录用户的状态信息和网站最新种子列表。 程序支持自动与浏览器同步站点 Cookies 或导入站点信息。详细信息请参考本文档 "cookiecloud" 命令说明部分。 参考程序代码 config/ 目录下的 `ptool.example.toml` 示例配置文件了解常用配置项信息。 查看程序代码 [config/config.go](https://github.com/sagan/ptool/blob/master/config/config.go) 文件里的 type ConfigStruct struct 获取全部可配置项信息。 # 程序功能 所有功能通过启动程序时传入的第一个”命令“参数区分: ``` ptool args... [flags] ``` 所有可用的 `` 包括: - brush : 自动刷流。 - iyuu : 使用 [IYUU][] 接口自动辅种。 - reseed : 使用 [Reseed][] 接口自动辅种。 - batchdl : 批量下载站点的种子。 - status : 显示 BT 客户端或 PT 站点当前状态信息。 - stats : 显示刷流任务流量统计。 - search : 在某个站点搜索指定关键词的种子。 - dynamicseeding : 全站动态保种。 - add : 将种子添加到 BT 客户端。 - dltorrent : 下载站点的种子(.torrent 文件)。 - publish : 发布(上传)种子到站点。 - BT 客户端控制命令集: clientctl / show / pause / resume / delete / reannounce / recheck / getcategories / createcategory / deletecategories / setcategory / gettags / createtags / deletetags / addtags / removetags / renametag / edittracker / addtrackers / removetrackers / setsavepath / setsharelimits / checktag / export 。 - parsetorrent : 显示种子(.torrent)文件信息。 - verifytorrent : 测试种子(.torrent)文件与硬盘上的文件内容一致。 - maketorrent : 制作种子(.torrent)文件。 - edittorrent : 编辑(修改)种子(.torrent)文件内容。 - partialdownload : 拆包下载。 - xseedadd : 手动添加辅种种子到客户端。 - findalone : 查找下载目录里的未做种文件。 - markinvalidtracker : 标记 BT 客户端里 Tracker 状态异常的种子。 - movesavepath : 修改本地 BT 客户端里的种子内容文件保存路径。 - transfertorrent : 转移种子做种客户端。 - hardlink : 硬链接辅助工具。 - cookiecloud : 使用 [CookieCloud][] 同步站点的 Cookies 或导入站点。 - sites : 显示本程序内置支持的所有 PT 站点列表。 - config : 显示当前 ptool.toml 配置文件信息。 - shell : 进入交互式终端环境。 - version : 显示本程序版本信息。 运行 `ptool` 查看程序支持的所有命令列表;运行 `ptool -h` 查看指定命令的参数格式和使用说明。本程序目前仍位于 0.x.x 版本的开发阶段,各个命令、命令参数名称或格式、配置文件配置项等可能会经常变动。 全局参数(flags): - --config string : 手动指定使用的 ptool.toml 配置文件路径。 - -v, -vv, -vvv : verbose。输出更多的日志信息(v 出现的次数越多,输出的日志越详细)。 ## 刷流 (brush) ``` ptool brush ... [flags] ``` 刷流任务从指定的站点获取最新种子,选择适当的种子加入 BT 客户端;并自动从客户端中删除旧的(已没有上传速度的)刷流任务种子及其文件。刷流任务的目标是使 BT 客户端的上传速度达到软件中设置的上传速度上限(如果客户端里没有设置上传速度上限,本程序默认使用 10MiB/s 这个值),如果当前 BT 客户端的上传速度已经达到或接近了上限(不管上传是否来源于刷流任务添加的种子),程序不会添加任何新种子。 参数 - `` : 配置文件里定义的 BT 客户端 name。 - `` : 配置文件里定义的 PT 站点 name。 可以提供多个 `` 参数。程序会按随机顺序从提供的 `` 列表里的各站点获取最新种子、筛选一定数量的合适的种子添加到 BT 客户端。可以将同一个站点名重复出现多次以增加其权重,使刷流任务添加该站点种子的几率更大。如果提供的所有站点里都没有找到合适的刷流种子,程序也不会添加种子到客户端。 示例 ``` # 使用 local 这个 BT 客户端,刷流 mteam 站点 ptool brush local mteam ``` 选种(选择新种子添加到 BT 客户端)规则: - 不会选择有以下任意特征的种子:不免费、存在 HnR 考查、免费时间临近截止。 - 部分站点存在“付费”种子(下载或汇报时会扣除积分),这类种子也不会被选择。 - 发布时间过久的种子也不会被选择。 - 种子的当前做种、下载人数,种子大小等因素也都会考虑。 删种(删除 BT 客户端里旧的刷流种子)规则: - 未下载完成的种子免费时间临近截止时,删除种子或停止下载(只上传模式)。 - 硬盘剩余可用空间不足(默认保留 5GiB)时,开始删除没有上传速度的种子。 - 未下载完成的种子,如果长时间没有上传速度或上传/下载速度比例过低,也可能被删除。 刷流任务添加到客户端里的种子会放到 `_brush` 分类(category)里。程序只会对这个分类里的种子进行管理或删除等操作。不会干扰 BT 客户端里其它正常的下载任务。如果需要永久保留某个刷流任务添加的种子(防止其被自动删除),在 BT 客户端里更改其分类即可。 其它说明: - No-Add 模式:如果 BT 客户端里当前存在 `_noadd` 这个标签(tag),刷流任务不会添加任何新种子到客户端。 ## 自动辅种 (iyuu) iyuu 命令通过 [IYUU 接口][] 提供自动辅种(cross seed)功能。本功能直接访问 IYUU 的服务器,本机上不需要安装 / 运行 IYUU 客户端。 ### IYUU 配置 如果是第一次使用 "IYUU",首先需要在 [IYUU 网站][] 上微信扫码申请 IYUU 令牌(token)。在 ptool.toml 配置文件里配置 IYUU token: ``` iyuuToken = "IYUU0011223344..." ``` 然后使用 IYUU 支持的任意合作站点的 uid 和 passkey 激活和绑定(bind) IYUU token,命令格式如下: ``` ptool iyuu bind --site zhuque --uid 123456 --passkey 0123456789abcdef ``` 所有参数均必须提供 - --site : 用于验证的 PT 站点名。可以使用 `ptool iyuu sites -b` 命令查询 IYUU 支持的合作站点列表。 - --uid : 对应 PT 站点的用户 uid(数字)。在 PT 网站的个人页面获取。 - --passkey : 对应 PT 站点的用户 passkey。在 PT 网站的个人页面获取。 其他说明: - 使用 `ptool iyuu sites` 查看 IYUU 支持的所有可辅种站点列表。 - 使用 `ptool iyuu status` 查询当前 IYUU token 的激活和绑定状态。 ### 使用 IYUU 辅种 ``` ptool iyuu xseed ... ``` 可以提供多个 client。程序会获取这些 client 里正在做种的种子信息,通过 IYUU 接口查询可以辅种的种子并将其自动添加到对应客户端里。注意只有在本程序的 ptool.toml 配置文件里添加的站点的种子才会被辅种。 iyuu xseed 子命令支持很多可选参数。运行 `ptool iyuu xseed -h` 查看所有可选参数使用说明。 添加的辅种种子默认跳过客户端 hash 校验并立即开始做种。本程序会对客户端里目标种子和 IYUU 接口返回的候选辅种种子的文件列表进行比较(文件路径、大小),只有完全一致才会添加辅种种子。添加的辅种种子会打上 `_xseed` 标签。 ## 自动辅种 (reseed) reseed 命令使用 [Reseed][] 提供的接口自动辅种。 ### Reseed 配置 首先在 [Reseed 官网][] 注册(需要使用指定 PT 站点验证),然后在 ptool.toml 配置文件里配置 Reseed 的用户信息: ``` reseedUsername = 'username' reseedPassword = 'password' ``` ### 使用 Reseed 辅种 Reseed 的辅种原理是扫描本地硬盘的“下载文件夹” (QB 的 save path)生成其中所有内容的元信息索引(文件名 & 大小),然后上传索引到服务器并自动找到匹配内容元信息的站点种子: reseed 命令设计有两种使用方式: #### 方式 1 ``` ptool reseed match --download "D:\Downloads" ptool xseedadd local "C:\Users\\.config\ptool\reseed\*.torrent" ``` 首先扫描 D:\Downloads 里的文件,通过 Reseed 查询匹配的站点种子,将找到的所有 .torrent 种子文件下载到本地(下载文件默认保存路径:ptool.toml 配置文件所在目录的 "reseed" 子文件夹里)。注意只有在本程序的 ptool.toml 配置文件里添加的站点的种子才会被下载。 然后使用 ptool xseedadd 命令将所有下载的 Reseed 辅种种子添加到本地 BT 客户端。 这种方式下,BitTorrent 客户端与运行 ptool 程序环境的文件系统可以不一致(e.g. BitTorrent 客户端运行在 Docker 里,而 ptool 运行在宿主机里)。 #### 方式 2 ``` ptool reseed match --download --use-comment-meta "D:\Downloads" ptool verifytorrent --check --rename-fail --use-comment-meta "C:\Users\root\.config\ptool\reseed\*.torrent" ptool add local --use-comment-meta --skip-check "C:\Users\\.config\ptool\reseed\*.torrent" ``` 这种方式仅能用于对运行在本机上(文件系统与运行 ptool 程序的环境相同)的 BT 客户端自动辅种。指定了 --use-comment-meta 参数,在下载种子时将其内容在硬盘上的保存路径(save path) 写入 .torrent 文件的 comment 字段。 (可选)然后使用 "ptool verifytorrent" 命令手动校验这些种子与硬盘上文件是否匹配,将校验失败的种子重命名为 ".torrent.fail"。 最后使用 "ptool add" 命令并同样指定 --use-comment-meta 参数,直接将种子添加到 BT 客户端并从种子 comment 字段读取并应用保存路径。这种方式添加的种子在客户端里无需存在已有的内容完全相同的种子。 ### 其它功能 ``` # 查看 Reseed 账号状态 ptool reseed status # 查看 Reseed 支持的所有可辅种 PT 站点列表 ptool reseed sites ``` ## BT 客户端控制命令集 提供了一系列管理、控制 BT 客户端的命令。 ### 读取/修改 BT 客户端配置 (clientctl) ``` ptool clientctl [