Qbittorrent - Api接口使用教程,全自动管理PT资源,速速炼化
嘿,这里是「青柠炸机店」!各位代码大拿、技术大牛们,今天咱们来聊点高阶的、酷炫的!如果你已经掌握了编程的奥秘,那么恭喜你👏,你将解锁一个更NB的玩法——利用你的代码能力,轻松获取PT资源(对于编程高手来说,这简直是小菜一碟!),再结合Qbittorrent强大的API接口,你将能够自主控制资源的下载、管理,实现一系列自动化操作,让你的下载体验飞升到另一个层次!想知道如何用代码玩转Qbittorrent,实现PT资源的全自动炼化吗?耐心的看完这篇教程吧,代码会比较多呦 ‼️
完整Qbittorrent 文章,看这里
Qbittorrent 这篇文章把全部的知识点都拍给你,能否炼化就看你了悄悄的告诉你:三连+关注可以加速炼化→准备好了吗?小飞棍,出发喽.......
开始
安装
Python 安装 QbittorrentUtil 包
pip install qbittorrent-api
API 概览
首先,Web API 端点被组织到八个命名空间中。
验证 (
auth):使用用户名和密码登录Qb。应用 (
Application):连接Qb操作。日志 (
log):获取打印Qb的日志信息。同步数据 (
sync):同步数据。下载设置 (
transfer):控制种子下载速度等。种子管理 (
torrents):获取PT种子的信息,对种子进行新增、删除、获取信息等一系列操作。RSS订阅(
rss):操作RSS订阅。搜索 (
search):可以使用接口需要安装插件,没有机场基本用不了。

其中最常用的就是 Application 和 torrents 两个API,下边来详细介绍下
Application
连接并登录Qb
python代码如下
import qbittorrentapi
# 使用WebUI配置信息实例化一个客户端
conn_info = dict(
host="http://192.168.1.101",
port=6010,
username="admin",
password="123456",
)
qbt_client = qbittorrentapi.Client(**conn_info)
# 客户端会在每次请求时自动保持登录状态,
try:
qbt_client.auth_log_in()
except qbittorrentapi.LoginFailed as e:
print(e)
# 如果客户端不会长期存在,或者短时间内会创建多个客户端,
# 请务必在使用后登出:
qbt_client.auth_log_out()
# 显示qBittorrent的信息
print(f"qBittorrent版本: {qbt_client.app.version}")
print(f"qBittorrent Web API版本: {qbt_client.app.web_api_version}")
for k, v in qbt_client.app.build_info.items():
print(f"{k}: {v}")
代码运行效果:

torrents
qbt_client代码使用上面连接并登录Qb中的内容即可。
种子文件下载
方式一:将 torrent 文件下载到本地后,再使用API进行下载,代码如下:
# torrent 文件存储路径
torrent_file_path = "你电脑中的文件路径[HDHome].Star.Trek.Beyond.2016.BluRay.1080p.AVC.Atmos.TrueHD7.1-HDHome.torrent"
# 将文件添加到Qb进行下载
qbt_client.torrents_add(torrent_files=str(torrent_file_path))
方式二:直接使用 torrent 文件URL进行下载,并对种子的上传和下载进行速度限制,代码如下
# cookie是PT网站的cookie,50 * 1024 是限速50Kb/s的意思
qbt_client.torrents_add(urls="https://hdhome.org/download.php?id=29970",
cookie="",
upload_limit=50 * 1024, download_limit=50 * 1024)
获取种子信息
使用API也可以非常方便的获取到 Qbittorrent 中的种子信息,代码如下:
# 获取全部种子
for torrent in qbt_client.torrents_info():
# 获取种子的信息
print(f"种子名称: {torrent.name}, 下载速度限制: {torrent.dl_limit / 1024} kb/s ")
# 获取种子状态是 - 下载中的,状态见下一节
for torrent in qbt_client.torrents_info(status_filter="downloading"):
print(torrent)
# 获取种子的优先级
print(f"种子名称: {torrent.name}, 下载速度限制: {torrent.dl_limit / 1024} kb/s ")
输出结果:

可以看到,种子的下载速度限制确实是我上面设置的 50Kb/s。
附录:全部返回信息和解释

获取种子状态
获取指定种子的状态,需要使用到种子在Qb中的hash值,每一个种子都有一个唯一的哈希值,获取方式如下️:
for torrent in qbt_client.torrents_info():
# 获取种子的哈希值
print(f"种子HASH值是: {torrent.hash}")
获取到哈希值后,我们就可以对单个种子进行一系列操作了,如果获取种子的状态,比如,某一个种子的哈希值是 c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b 代码如下:
qbt_client.torrents_properties(torrent_hash = 'c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b')
获取到的状态表如下所示:

启动和暂停下载
# 启动指定哈希值的种子的下载
qbt_client.torrents_start(torrent_hashes='c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b')
# 停止指定哈希值的种子的下载
qbt_client.torrents_stop(torrent_hashes='c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b')
# 启动全部下载任务
qbt_client.torrents.start.all()
# 停止全部下载任务
qbt_client.torrents.pause.all()
其它操作
# 删除指定任务和文件
qbt_client.torrents_delete(delete_files=True, torrent_hashes='c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b')
# 删除全部任务
qbt_client.torrents.delete()
# torrent的跟踪器
trackers = self.qbt_client.torrents_trackers(torrent_hash='c9c2f13c6941f74c6f16d4132ee19a6bcd8a824b')
for tracker in trackers:
if tracker.status == 2:
print(f"当前种子下载者数量:{tracker.num_leeches},已完成下载的次数:{tracker.num_downloaded}")
property = self.qbt_client.torrents_properties(torrent_hash=torrent.hash)
print(f"种子的连接数:{property.nb_connections}, 上传量:{bytes_to_gb(property.total_uploaded)}G ,"
f"上传速度:{bytes_to_gb(property.up_speed)} G/s,平均上传速度:{bytes_to_gb(property.up_speed_avg)} G/s")
写在最后
看到这里的应该都是对编程感兴趣的朋友了,创作不易
,来个 三连 + 关注 支持一下呗。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
