最近因为一些需求,爬了一个带有magnet磁力链接的网站(如果有对怎么爬感兴趣可以说一声,这个文章基本只是为了当成自己的学习记录用哒,也会基于爬完的数据库开始做下一步),大致的结构是每个影片有自己的名字和他人分享的一系列magnet链接,需要批量下载这些磁力链接到本地然后归档。作为一个业余程序员当然不能直接一个一个手动下载了。于是就考虑用python来简化这个工作。
经过测试发现这一系列magnet中有的是连接不上的(用qbittorrent会一直卡在检索元数据的位置),但是对于同一个影片显然我只需要找到一个可用的资源,也就是获得一个下载最快的magnet就可以。每次进行手动比对、调整保存的路径非常麻烦,于是就通过python-qbittorrent来解决这个问题~
python-qbittorrent库的pypi和文档都是英文的,这一页的底部点击Read the docs可以直接跳转到官方文档。啃了半天才看懂,基本过程如下:
首先安装python-qbittorrent库:用经典的pip安装就可以,也可以在pycharm里面找到并安装。
pip install python-qbittorrent
之后是安装对应系统版本的qbittorrent软件,我写代码用的电脑是mac,所以去搜mac的qbittorrent安装即可,随后需要对软件进行一些设置。
必要设置:点击qbittorrent上面菜单栏的齿轮,找到首选项里面的Web用户界面,如果需要远程则根据ip地址和服务器域名相应设置,我暂时不需要,则只需要设置下面的本地验证,可以选择账号密码,默认是admin/admin,也可以选择对于本地主机上的客户端跳过验证。
之后为了个人的功能的实现,在连接选项卡中设置了全局最大连接数和每torrent最大连接数为100。
使用的时候定义了一个函数如下:
from qbittorrent import Client
def connect_to_qbit():
qb = Client('http://127.0.0.1:8080/', verify=False)
qb.login('我的用户名', '我的密码')
# not required when 'Bypass from localhost' setting is active.
# defaults to admin:admin.
# to use defaults, just do qb.login()
torrents = qb.torrents()
return qb, torrents
对于这里的qb和torrents的理解:qb事实上是Client的连接,而torrents是执行torrents=qb.torrents()的时候,qbittorrent客户端内存在的所有任务构成的元组。元组内的每一个元素是一个字典,对应着一个任务的相关信息,个人认为比较关键的信息如下: