qbittorrent可通过“下载完成时运行外部程序”实现自动化:一、python脚本追加随机字节修改sha-1哈希以适配115上传;二、bash脚本重命名视频文件供jellyfin刮削;三、js脚本调用api自动打标并暂停指定任务;四、shell命令清理clouddrive临时文件并同步;五、qui工具批量清理低做种比种子。

如果您在 qBittorrent 中已完成种子下载,但希望自动执行重命名、上传、哈希修改、删除临时文件等操作,则可通过其内置的“下载完成时运行外部程序”功能实现。以下是多种可直接部署的自动化方法:
一、使用Python脚本修改文件哈希值以适配115网盘上传
115网盘对重复文件识别极为严格,原始下载文件若已存在于云端,将被拒绝上传;通过向文件末尾追加随机字节可变更SHA-1哈希值,绕过重复校验,同时保持内容完整性。
1、新建文件 change_hash.py,内容如下:
import os import sys import random
file_path = sys.argv[1]
if os.path.isfile(file_path):
with open(file_path, 'ab') as f:
f.write(os.urandom(random.randint(1, 8)))
2、赋予脚本可执行权限(Linux/macOS):
chmod +x /path/to/change_hash.py
3、在 qBittorrent WebUI 设置中,进入设置 → 选项 → 高级 → 下载完成时运行外部程序,填入:
/usr/bin/python3 "/path/to/change_hash.py" "%F"
二、使用Bash脚本自动重命名并归类视频文件供Jellyfin刮削
该方法适用于电视剧/电影资源,通过提取年份、季集信息重命名文件夹与视频,使Jellyfin能准确匹配元数据。
1、新建 auto-rename.sh,内容如下:
#!/bin/bash
TORRENT_NAME="$1"
SAVE_PATH="$2"
cd "$SAVE_PATH"
if [[ -d "$TORRENT_NAME" ]]; then
mv "$TORRENT_NAME" "$(echo "$TORRENT_NAME" | sed -E 's/[^a-zA-Z0-9._u4e00-u9fa5]+/-/g' | sed 's/-+/\-/g' | sed 's/^-\|-$//g')"
fi
2、保存后执行:
chmod +x /path/to/auto-rename.sh
3、在 qBittorrent WebUI 的下载完成时运行外部程序字段填入:
/path/to/auto-rename.sh "%N" "%D"
三、调用JavaScript脚本批量添加标签并暂停指定分类任务
借助 qBittorrent 提供的 Web API,可编写轻量 JavaScript 脚本实现条件化控制,例如为“Other”分类自动打标并暂停,避免干扰主下载队列。
1、准备 run-tag-pause.js,内容如下:
const axios = require('axios');
const TORRENT_HASH = process.argv[2];
const QBIT_URL = 'http://localhost:8080';
const QBIT_USER = 'admin';
const QBIT_PASS = 'adminadmin';
async function main() {
await axios.post(QBIT_URL + '/api/v2/auth/login', `username=${QBIT_USER}&password=${QBIT_PASS}`);
await axios.post(QBIT_URL + '/api/v2/torrents/addTags', { hashes: TORRENT_HASH, tags: ['AutoProcessed'] });
await axios.post(QBIT_URL + '/api/v2/torrents/pause', { hashes: TORRENT_HASH });
}
main();
2、安装依赖并测试:
npm install axios
node run-tag-pause.js "torrent_name" "hash_value"
3、在下载完成时运行外部程序中填入:
node "/path/to/run-tag-pause.js" "%N" "%I"
四、通过Shell命令触发CloudDrive挂载目录同步与清理
当下载目标为 CloudDrive 挂载的 115/阿里云盘等路径时,需确保文件写入完成后立即刷新缓存并清理临时碎片,防止挂载点状态异常或空间占用虚高。
1、创建 sync-and-clean.sh:
#!/bin/bash
DOWNLOAD_DIR="$1"
find "$DOWNLOAD_DIR" -name "*.!qB" -delete 2>/dev/null
find "$DOWNLOAD_DIR" -name ".unwanted" -type d -exec rm -rf {} + 2>/dev/null
sync && echo "Sync completed for $DOWNLOAD_DIR"
2、设置可执行权限:
chmod +x /path/to/sync-and-clean.sh
3、在下载完成时运行外部程序中配置:
/path/to/sync-and-clean.sh "%D"
五、利用qui工具执行高级批量操作(如自动移除低做种比种子)
qui 是专为 qBittorrent 设计的命令行交互工具,支持基于做种时间、分享率、上传量等多维条件筛选并执行动作,适合长期挂机环境下的智能清理。
1、安装 qui:
npm install -g qui
2、编写 cleanup-low-ratio.js:
const { Qui } = require('qui');
const client = new Qui({ host: 'http://localhost:8080', username: 'admin', password: 'adminadmin' });
client.getTorrents({ filter: 'seeding', sort: 'ratio', reverse: true }).then(torrents => {
torrents.slice(10).forEach(t => {
if (t.ratio 3600) {
client.deleteTorrent(t.hash, false);
}
});
});
3、在下载完成时运行外部程序中填入:
node "/path/to/cleanup-low-ratio.js"











