一款用于自动清理 PT/BT 下载目录中未做种(冗余)文件的工具。它会通过 API 连接下载客户端(qBittorrent/Transmission),获取所有当前正在做种的文件列表,并与本地下载目录进行比对,自动删除那些不在做种列表中的文件和空文件夹,帮助你释放磁盘空间。
借鉴蜂巢论坛PT工具:找到硬盘里没有被做种的文件 文章中的Python代码
在此基础上添加:扫描结果通知、定时执行、自动删除、Docker封装
在你的机器上创建配置目录并复制配置模板:
# 创建目录
mkdir -p /opt/void/config
# 复制配置模板
cp config/config-examples.yaml /opt/void/config/config.yaml
# 编辑配置
nano /opt/void/config/config.yaml
使用 Docker Compose 启动(推荐):
version: '3.8'
services:
Void:
image: hescc/void:latest
container_name: void
network_mode: host
restart: unless-stopped
environment:
- TZ=Asia/Shanghai # 设置容器时区为上海
volumes:
# 格式为 [宿主机路径]:[容器内路径]
# 1. 配置文件挂载
# 作用:将宿主机的配置持久化。修改 /opt/config 下的文件即可调整程序行为,
# 容器重启或更新镜像后,配置不会丢失。
- /opt/config:/app/config
# 2. 数据目录挂载
# 作用:这是程序扫描和清理的目标目录。
# 程序会在容器内的 /data 路径下查找未做种的文件。
# 请确保此路径与你在配置文件中设置的路径一致。
- /data:/data
docker-compose up -d
或者使用 Docker CLI:
docker run -d \
--name void \
--restart always \
-e TZ=Asia/Shanghai \
-v /opt/config:/app/config \
-v /data:/data \
hescc/void:latest
# =================================================================
# 全局设置:执行频率、通知配置、文件大小阈值、排除路径等
# =================================================================
check_interval: 60 # 任务执行频率(分钟),默认执行频率为:60分钟。例如:60:每小时执行一次;720:每12小时执行一次,1440:每天执行一次
enable_auto_remove: False # 是否启用自动删除,True,False表示禁用(禁用只发送检查通知)
notification_type: "wecom" # 通知类型:email、webhook、wecom(企业微信)
checkfile_size: 0 # 文件大小阈值(MB),仅删除大于等于该值的未做种文件。设置为0则不限制文件大小。例如:50表示50MB, 0表示不限制
excluded_paths: [] # 排除路径列表,不支持通配符需要填写完整路径;默认无设置排除目录
# 排除路径列表配置示例
# excluded_paths:
# - "/data/important/"
# - "/data/movies/exclude_this_folder/"
email:
smtp_host: "smtp.example.com" # SMTP服务器地址
smtp_port: 465 # 端口 (SSL一般为465)
username: "[email protected]" # 发件人邮箱地址
password: "xxxxxxx" # 邮箱授权码
to: "[email protected]" # 收件人地址
webhook:
url: "https://example.com/webhook" # Webhook URL
# 企业微信 Webhook 通知配置
# 使用方法:设置 notification_type: "wecom"
wecom:
key: "437e9174-xxxx-4b4b-xxxx-852d0f1fa1ea" # 企业微信机器人 Webhook URL
# =================================================================
# PT下载器配置,支持多个PT下载器
# =================================================================
services:
- name: "QB02"
type: "qbittorrent"
host: "127.0.0.1"
port: 8080
username: "admin"
password: "example"
path_mapping:
- "/data": "/data"
#### 示例配置(更多下载器)
# Linux 环境示例
# - name: "TR01" # 服务名称
# type: "transmission" # 服务类型: qbittorrent 或 transmission
# host: "127.0.0.1" # PT下载器服务地址,确保容器内能访问
# port: 9091 # 服务端口
# username: "admin" # 登录用户名
# password: "admin" # 登录密码
# path_mapping: # 路径映射关系
# - "/downloads": "/data" # 格式:"宿主机路径": "下载器内的保存路径"
# Windows 环境示例
# - name: "QB-Windows"
# type: "qbittorrent"
# host: "10.10.0.100"
# port: 8080
# username: "admin"
# password: "password"
# path_mapping:
# - "T:\\": "/download" # Windows 路径必须使用双反斜杠 "\\"
# - "D:\\Media": "/media" # 支持配置多个映射关系
# 完整格式示例(兼容旧版本)
# - name: "QB03"
# type: "qbittorrent"
# host: "192.168.1.100"
# path_mapping:
# - remote: "/data" # 下载器内的路径
# local: "/mnt/data" # 宿主机实际路径
邮件通知

MoviePilot通知转发

企业微信通知

本项目使用 uv 进行依赖管理。
git clone https://github.com/Hesccc/void.git
uv sync
uv run main.py
config.yml 中的 path_mapping 正确。PT客户端看到的下载路径 必须能准确映射到 本工具容器内挂载的路径,否则会导致误删或找不到文件。checkfile_size 或在测试环境运行,确认日志输出符合预期后再投入生产使用。Content type
Image
Digest
sha256:ae79305de…
Size
99.1 MB
Last updated
4 months ago
docker pull hescc/void