PT ReleaseKit(原 PT-BDtool)用于扫描视频、音频、BDMV 和 ISO,生成截图、MediaInfo、频谱图或 BDInfo,并把结果打包。
更名兼容说明:GitHub 仓库现使用
PT-ReleaseKit。现有bdtool、ptbd-*命令、PTBD_*环境变量、pt-bdtool:*Docker 镜像标签、安装路径、配置目录和旧版PT-BDtool.*源码启动器继续兼容;新 Release 归档与打包程序统一使用PT-ReleaseKit文件名。
当前架构是 Python 模块化核心优先 + Shell 兼容层 + Windows/macOS/Linux 桌面 GUI(本机或远端)+ Docker VPS 本机处理。Docker 是新增部署方式,不会替代现有桌面控制端。
- 视频:
mediainfo.txt、1.png至6.png - 音频:
mediainfo.txt、频谱图.png BDMV/ISO:BDInfo.txt、1.png至6.png- 最终包:通常为
.zip,不可用时回退为.tar.gz - 可选图床上传:在结果 ZIP 内追加
image-host.json、image-host-links.txt和image-host-bbcode.txt
桌面端继续保留,并同时支持两种处理位置:直接处理当前电脑上的媒体,或从个人电脑连接媒体 VPS 执行扫描、生成、回传和清理。没有 VPS 也可以使用本机模式。
从 portable-latest 下载:
- Windows:
PT-ReleaseKit-windows-portable.zip,解压后运行PT-ReleaseKit.exe - macOS:
PT-ReleaseKit-macos-portable.zip,解压后运行PT-ReleaseKit.app - Linux:
PT-ReleaseKit-linux-portable.tar.gz
源码入口仍然可用:
- Windows:
PT-ReleaseKit.bat - macOS:
PT-ReleaseKit.command - Linux:
PT-ReleaseKit.sh或PT-ReleaseKit.desktop - 通用 GUI:
ptbd-gui
旧的 PT-BDtool.bat、PT-BDtool.command、PT-BDtool.sh 和 PT-BDtool.desktop 仍作为兼容入口保留。
源码运行 GUI 至少需要 Python 3 和 Tk。连接诊断和内置远端后端需要 Paramiko;缺少 Paramiko 时,远端扫描和处理会回退到系统 Bash/SSH。发布包由 PyInstaller 构建并包含控制端依赖,不要求普通用户直接运行源码。
便携包不内置 ffmpeg、ffprobe、mediainfo 或 BDInfo。选择“本机电脑”时,当前电脑必须能从 PATH 找到 ffmpeg、ffprobe 和 mediainfo;BDInfo 是处理蓝光原盘的可选工具。可先点“检查本机依赖”,缺少必要工具时程序会停止本机任务并列出缺失项。Docker 镜像则已经包含媒体处理依赖。
三平台桌面冻结版当前对音频生成单曲频谱,不要把它当作组合频谱运行时。需要多轨组合频谱时,请使用 Docker/Web 或源码 CLI,并准备 NumPy 与 Pillow。
只有远端模式需要 SSH。首次连接一台新 VPS 前,请先在系统终端执行 ssh -p 端口 用户@主机,通过可信渠道核对服务器显示的主机密钥指纹后再接受。桌面端会读取 ~/.ssh/known_hosts,并拒绝未知或发生变化的主机密钥,避免把 SSH 密码发送给未经确认的服务器。
首次使用先选择“本机电脑”或“远端 VPS”,再填写本机媒体目录或 SSH 参数以及本机保存目录。正常顺序是保存配置、检查环境、扫描候选、逐项勾选、生成并查看归档;开启自动清理只会删除本次临时工作目录和临时包,不会删除原始媒体。
远端扫描留空“扫描目录”时只遍历 /home。/root、/data、/mnt、/media、/srv 以及其他顶层目录不会再被默认遍历;媒体位于这些位置时,优先把所需路径明确填入“扫描目录”,确实需要时才开启“VPS 全盘扫描”。本机模式只扫描选择的“本机媒体目录”和显式添加的扫描目录,不会扫描整台电脑。
桌面配置和日志位置:
- Linux:
~/.config/ptbd-gui/config.json与同目录的PT-ReleaseKit.log - Windows 便携版:程序旁的
PT-ReleaseKit-config.json - macOS 便携版:
PT-ReleaseKit.app同级目录的PT-ReleaseKit-config.json - Shell 远端模式:
~/.config/ptbd-remote/config.env
升级时不会丢失原有桌面配置:新配置尚不存在时,程序会兼容读取旧的 PT-BDtool-config.json、Windows %APPDATA%/PT-BDtool/gui-config.json 或 macOS Application Support/PT-BDtool/gui-config.json;下次保存会写入新名称。
远端扫描或处理失败时,先检查系统终端能否直接 SSH 登录、VPS 账号是否能读取显式扫描目录,以及日志中是否有依赖或软件源错误。远端自动安装优先支持 Debian、Ubuntu 和 Alpine;其他发行版可能需要手动准备依赖。本机模式失败时先点“检查本机依赖”,再确认所选媒体根目录和保存目录权限。
VPS 禁用 SFTP 子系统时,内置后端会自动回退到 SSH 管道上传和下载,不需要为此开放额外端口。
Docker 应部署在媒体文件所在的 VPS。容器直接读取该 VPS 上的媒体目录并把结果写回宿主机,不再通过 SSH 把媒体搬到另一个处理节点。
Docker 镜像已包含 ffmpeg、ffprobe、mediainfo 和镜像提供的蓝光处理工具,是依赖齐备的 local 模式。它与桌面便携包不同,不要求宿主机另外为容器安装这些媒体工具。
export PTBD_UID=1000
export PTBD_GID=1000
sudo mkdir -p /srv/media /srv/ptbd/output /srv/ptbd/config
sudo chown "$PTBD_UID:$PTBD_GID" /srv/ptbd/output /srv/ptbd/config
PTBD_MEDIA_DIR=/srv/media \
PTBD_OUTPUT_DIR=/srv/ptbd/output \
PTBD_CONFIG_DIR=/srv/ptbd/config \
docker compose up -d --buildCompose 默认只绑定 VPS 回环地址。先在桌面电脑建立 SSH 隧道:
ssh -L 8899:127.0.0.1:8899 user@VPS-IP然后在桌面浏览器访问:
http://127.0.0.1:8899/
挂载规则:
PTBD_MEDIA_DIR→/media,只读PTBD_OUTPUT_DIR→/output,可写,保存生成结果PTBD_CONFIG_DIR→/config,可写,保存配置与运行状态PTBD_UID/PTBD_GID,容器进程使用的非 root 宿主用户 ID,默认1000:1000PTBD_WEB_PORT,宿主回环 Web 端口,默认8899
容器默认以非 root 用户运行、删除全部 Linux capabilities,并启用 no-new-privileges。输出和配置目录必须允许配置的 UID/GID 写入。
完整的部署、升级、反向代理和排障说明见 docs/DOCKER.md。
直接处理一个媒体文件或目录:
./bdtool /path/to/movie.mkv --out /path/to/output扫描并输出 JSON:
./bdtool scan-json --dir /path/to/media检查依赖:
./bdtool doctor
./bdtool statusPython 核心需要 python3、ffmpeg、ffprobe 和 mediainfo;处理蓝光时建议提供 BDInfo。远端安装流程和 Docker 镜像会准备相应运行环境,桌面便携包不会捆绑这些体积较大的系统媒体工具。
单曲频谱不要求额外 Python 图像模块;只有“组合频谱”需要 NumPy 和 Pillow。远端自动安装会按所选模式补齐它们,Docker 镜像则已内置。
仍保留的其他入口:./ptbd 是新手流程,./ptbd-start.sh 是本地菜单,./ptbd-remote.sh 是直接使用 Shell 控制远端 VPS 的兼容流程。
“生成完成后上传截图到图床”默认关闭。开启后需要选择提供方并填写 API Token:
ImgBB:内置官方上传地址,可填写兼容地址覆盖Lsky Pro v2:填写完整上传 API 地址S.EE / SM.MS:默认使用 S.EE,也可用 API 地址切换到兼容的 SM.MS 服务custom:填写返回 JSON 图片链接的 Bearer Token 兼容 API 地址
图床端点默认执行 HTTPS 策略:只有 localhost、127.0.0.1、[::1] 等回环端点可使用明文 HTTP,其他端点必须使用 HTTPS。如果明确接受可信内网中的 Token 和截图被明文传输的风险,可在启动控制端前设置 PTBD_ALLOW_INSECURE_IMAGE_HOST=1;不要对公网 HTTP 端点使用该开关。
桌面 GUI 或 Web 的 remote 图床上传只适用于内置 Python/Paramiko 后端:程序先在 VPS 生成材料并把结果包回传到控制端,再由控制端读取 ZIP 内的截图并上传。图床 Token 不会进入 SSH 命令、远端运行包或发送到媒体 VPS。源码环境缺少 Paramiko 而进入本机 Bash/SSH 的旧 Shell 回退时,材料生成和下载仍可继续,但图床上传会明确跳过;需要远端图床时请安装 Paramiko 或使用便携版。本机处理不经过这个远端 Shell fallback,可以正常执行图床后处理。
Docker local 模式的控制端本身运行在 VPS 容器内,因此其 Token 保存在该部署的 /config/config.json;应继续通过回环监听、SSH 隧道或受保护的反向代理访问。
上传完成后,结果 ZIP 会包含:
image-host.json:提供方、逐图成功/失败状态和公开链接image-host-links.txt:每行一个成功上传的图片链接image-host-bbcode.txt:可直接粘贴的[img]...[/img]文本
上传是非关键后处理。单张或整批上传失败不会删除原材料,也不会把已经成功的材料生成任务改成失败;归档更新使用原子替换,无法安全更新时保留原 ZIP。图床处理只支持常规 ZIP,回退生成的 .tar.gz 仍会保留但不会被改写。
密码和图床 Token 只保存在私有配置中。POSIX 平台的配置文件以 0600 写入,公开 Web 配置响应、普通日志和错误消息只显示“是否已保存”,不会返回 Token 内容。
bdtool 是稳定入口,默认把处理命令交给 python3 -m ptbd_core.cli。Python 包按职责拆分:
scanner.py:媒体发现与类型识别media_tools.py:外部媒体工具调用artifacts.py:截图、MediaInfo、频谱图和 BDInfo 产物pipeline.py:处理流程编排returns.py:打包与回传local_runtime.py:桌面/Web 本机执行环境和路径边界image_hosts.py:回传后的可选图床上传与 ZIP 清单config.py、models.py、jobs.py:共享配置、模型和任务状态
为避免破坏旧用户流程,以下情况仍进入 bdtool-legacy.sh:
bdtool不带参数时打开旧交互菜单- 使用
start、install、--lang或--non-interactive等旧菜单参数 - 显式设置
PTBD_PYTHON_CORE=0 - 找不到 Python 3 时自动回退
需要直接运行兼容实现时:
./bdtool-legacy.shShell 层承担兼容、旧菜单,以及 GUI/Web 缺少 Paramiko 时的远端 fallback;新处理逻辑应优先放入 ptbd_core/。
桌面端分为“工作台”和“连接设置”两个页签。工作台把主要空间留给可滚动候选列表,并继续显示四步进度、任务状态和实时日志;连接参数单独放在设置页。Tk 列表可点击“选择”列或按空格逐项切换,也可使用“只选当前”“全选结果”和“清空勾选”。筛选不会丢失已勾选项,新一轮扫描会清理已经不存在的路径。
首次启动会直接打开“连接设置”,先选择处理位置并填写对应字段:
本机电脑:选择一个本机媒体目录;程序只扫描该目录和显式添加的目录远端 VPS:填写 VPS 地址(例如root@1.2.3.4)、SSH 端口以及密码或已有密钥本机保存目录
其他项怎么理解:
空白 VPS 自动准备运行环境- 开着更省心
- 程序会先尝试远端自动装依赖
- 还不够时才回退上传运行包
额外扫描目录- 不懂就留空
- 远端留空时只扫描
/home /root、/data、/mnt、/media、/srv需要明确填写后才扫描- 本机模式中,这些值作为“本机媒体目录”之外的额外允许根目录
- 显式白名单优先于全盘扫描开关
- 多个根目录可用空格或逗号分隔;含空格、逗号或撇号的单个路径请使用双引号,例如
"/data/PT Movies" "/mnt/O'Brien, Archive"
启用全盘扫描(高级)- 默认关闭
- 只有媒体不在常见目录时再打开
任务结束后清理临时工作目录- 建议开启
- 只清这次生成的结果目录和结果包,不删原始媒体文件
生成完成后上传截图到图床- 默认关闭
- 只有主动开启并配置提供方、API 地址和 Token 后才上传
- remote 模式在结果回传后上传,Token 不会发到媒体 VPS
正常使用顺序就是:
- 选择“本机电脑”或“远端 VPS”并保存配置
- 本机模式先点“检查本机依赖”;远端模式先点“测试连接”
- 返回工作台,点“扫描本机”或“扫描 VPS”
- 遍历目录时查看实时目录、文件、候选计数和当前路径
- 解析候选时查看真实完成比例;
.ts文件探测会显示正在处理的文件 - 在宽幅候选列表逐项勾选,或用“只选当前”快速保留一项,再点“生成所选”
- 等程序在所选位置生成截图和媒体信息;批量任务会逐项继续
- 远端模式会把结果包下载回控制端,本机模式直接写入保存目录
- 如启用图床,回传后查看逐图结果,并可复制 BBCode
- 在日志查看成功/失败汇总;失败项可点“重试失败”
- 完成后可直接点“打开结果目录”;自动清理只处理本次临时文件
优先保存到你在 GUI 里填的“本机保存目录”。
如果你走的是 shell 远端流程:
- 默认优先尝试桌面
- 桌面不可用时会回退到
~/PT-BDtool-downloads
下载回来的通常是:
.zip.tar.gz
也就是说,它默认下载的是结果包,不是自动帮你解压成一堆散文件。
真实位置分三类:
- GUI 配置
- Linux:
~/.config/ptbd-gui/config.json - Windows 便携版: 程序旁边的
PT-ReleaseKit-config.json - macOS 便携版:
PT-ReleaseKit.app同级目录的PT-ReleaseKit-config.json
- Linux:
ptbd新手模式配置~/.config/ptbd/config.env
- shell 远端模式配置
~/.config/ptbd-remote/config.env
- GUI 日志通常在 GUI 配置目录旁边的
PT-ReleaseKit.log - CLI 日志通常在项目或安装目录下的
bdtool-output/logs/
默认会清:
- 这次生成的临时输出目录
- 这次待下载的结果包
默认不会清:
- 你原始的视频文件
- 你原始的音频文件
- 你原始的
BDMV - 你原始的
ISO
先看这几项:
- VPS 地址、端口、密码有没有填错
- 这个账号能不能 SSH 登录
- VPS 网络是不是正常
- VPS 软件源是不是可用
- 日志里是不是提示缺依赖或 SSH 失败
GUI 里可以直接点“打开日志文件”。
源码可启动本机 Web 控制端:
./ptbd-web --host 127.0.0.1 --port 8899 --openWeb 控制端支持两种模式:
remote:桌面或控制端通过 SSH 操作远端 VPSlocal:直接扫描当前主机上指定的媒体根目录;Docker 默认并应保持此模式,扫描根目录使用/media
Web 和 GUI 都支持环境检查、批量逐项处理、成功/失败汇总及失败项重试。候选区会占据工作台的主要空间;每项都有独立复选框,Web 还提供“仅选此项”,不会再强制全选。筛选或翻页不会清空其他已选项。
Web 任务可能结束为 success、partial、error 或 cancelled;页面刷新后会自动恢复当前运行任务的日志和停止操作。local 模式只显示本机媒体与输出路径,不显示无关的 SSH 字段。remote 模式留空扫描目录时也只扫描 /home;需要 /root、/data、/mnt、/media、/srv 时必须明确填写,或主动开启全盘扫描。
Web 与桌面 GUI 使用同一套可选图床配置和结果清单。页面会显示成功链接并提供 BBCode 复制;公开配置和任务状态不会暴露 Token。
直接在 Linux 主机运行 local 模式:
PTBD_WEB_MODE=local \
PTBD_WEB_LOCAL_ROOT=/srv/media \
./ptbd-web --host 127.0.0.1 --port 8899启动后在 Web 配置中把保存目录设为 /srv/ptbd/output。
bash install.sh --offline --no-launch
export PATH="$HOME/.local/bin:$PATH"
hash -r安装后可验证:
bdtool --version
bdtool doctor
ptbd-gui --self-checkinstall.sh 不通过系统包管理器修改宿主机;离线 bundle 可由 scripts/ensure-bundle.py 准备。新名称官方 bundle 必须通过 Release 的 .sha256 sidecar 或显式摘要校验;只有旧文件名资产可使用仓库内固定摘要完成迁移。
使用自定义 bundle 镜像时可配置:
PTBD_BUNDLE_URL:自定义归档地址PTBD_BUNDLE_SHA256:可信 SHA256 摘要,优先级最高PTBD_BUNDLE_CHECKSUM_URL:自定义 sidecar 地址,默认是归档地址加.sha256PTBD_BUNDLE_ALLOW_UNVERIFIED=1:仅在明确接受风险时允许“校验地址不可用”的自定义下载;默认关闭,格式损坏的 sidecar 仍会失败
python3 -m unittest discover -s tests
python3 -m compileall -q ptbd_core ptbd-gui.py ptbd-web.py ptbd_remote_backend.py
xvfb-run -a python3 ptbd-gui.py --ui-smoke-check
./scripts/full-test.sh
docker build -t pt-bdtool:local .更多维护信息: