如何编写批处理/脚本文件来查询qBittorrent查看它是否正在下载某些内容?
根据结果,我想执行进一步的命令。
答案1
下面是两段代码(一段用于 Windows,一段用于 Linux),它们使用qBittorrent v4.1(或更高版本)API根据是否正在下载内容返回消息。
视窗
@echo off
rem Remove existing cookie jar
del /F %temp%\cookies.txt 2>nul
rem Login to qBittorrent
curl -s -b %temp%\cookies.txt -c %temp%\cookies.txt --header "Referer: http://localhost:8080" --data "username=admin&password=secret" http://localhost:8080/api/v2/auth/login >nul
rem Get list of downloading torrents
curl -s -b %temp%\cookies.txt -c %temp%\cookies.txt --header "Referer: http://localhost:8080" "http://localhost:8080/api/v2/torrents/info" | jq | findstr """state""" | findstr /R "stalledDL downloading metaDL" >nul
if errorlevel 0 (
echo Something downloading
) else (
echo Nothing downloading
)
rem Remove used cookie jar
del /F %temp%\cookies.txt 2>nul
Linux
#!/bin/bash
# Remove existing cookie jar
rm -f ~/.cookies.txt
# Login to qbittorrent
curl -s -b ~/.cookies.txt -c ~/.cookies.txt --header "Referer: http://localhost:8080" --data "username=admin&password=secret" http://localhost:8080/api/v2/auth/login >/dev/null 2>&1
# Get list of downloading torrents
if [[ $(curl -s -b ~/.cookies.txt -c ~/.cookies.txt --header "Referer: http://localhost:8080" "http://localhost:8080/api/v2/torrents/info" | jq . | grep "state" | egrep "(stalledDL|downloading|metaDL)") ]]; then
echo "Something downloading"
else
echo "Nothing downloading"
fi
# Remove used cookie jar
rm -f ~/.cookies.txt
关于两个版本需要注意的几点
- 您需要在 qBittorrent 中启用 Web UI 并设置用户名和密码。
- 代码中有用户名
admin
和密码secret
,你需要更改它们 - 该代码连接到
localhost:8080
,您需要将其所有实例更改为正确的计算机名称/IP 和端口号 - 我们创建一个 cookie jar(称为
cookies.txt
)来保存 SID。成功登录后会提供给我们这个 SID,执行其他命令时必须发送它。一旦我们完成操作,就会删除 cookie jar。 - 没有错误处理,如果出现故障,它可能会(也可能错误地)报告“正在下载某些内容”
- 此代码考虑了
stalledDL
和downloading
metaDL
以便下载。您可以通过查看记录的各种状态来更改此设置这里。 jq
从 qBittorrent API 获取 JSON 输出并以更易于读取/解析的方式对其进行格式化。
针对 Windows 版本的一些要点
- 如果你没有运行 Windows 10,那么你需要安装卷曲
- 您需要下载杰奇,将其重命名为 just
jq.exe
并将其放在与此脚本相同的文件夹中 - 我个人将它放在其中,C:\Windows\System32
以便它可以在任何文件夹中工作 jq
至关重要,因为 qBittorrent 的输出可能包含非常长的行,findstr
无法处理(并引发错误)。
Linux 版本特有的一些要点
- 代码使用了 curl,它通常是默认可用的。如果没有,那么在 Debian 上你可以使用
sudo apt-get install curl
- 您需要安装
jq
才能使用此功能,它在大多数存储库中都可用。在 Debian 上,这是sudo apt-get install jq
- 如果你觉得
jq
在技术上不需要,egrep
可以修改以过滤状态和值