同步操作将从 g1879/DownloadKit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
DownloadKit 是一个基于 python 的简洁易用的多线程文件下载工具。
使用简单,只要不断往里添加下载任务,它会按顺序自行下载完成并返回结果。
Session
对象,便于保持登录状态pip install DownloadKit
from DownloadKit import DownloadKit
from DownloadKit import DownloadKit
# 创建下载器对象
d = DownloadKit(r'.\files')
# 添加多个任务
url1 = 'https://gitee.com/static/images/logo.svg?t=158106664'
url2 = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
d.add(url1)
d.add(url2)
DownloadKit
对象初始化参数:
Session
对象,或配置对象等'skip'
,'overwrite'
,'rename'
session 参数说明:
该参数可接收一个现成的Session
对象,也可以接收SessionOptions
、MixPage
、Drission
对象,生成或使用其中的Session
对象。 若不传入以上对象,程序会自行生成一个。如果当前环境安装了
DrissionPage,程序会读取其 ini 配置文件生成,如果没有,则生成一个空Session
对象。
SessionOptions
、MixPage
、Drission
对象用法见: [DrissionPage](DrissionPage (gitee.io))
直接创建:
d = DownloadKit()
接收Session
对象
from requests import Session
session = Session()
d = DownloadKit(session=session)
接收SessionOptions
对象
from DrissionPage.config import SessionOptions
so = SessionOptions()
d = DownloadKit(session=so)
接收MixPage
对象
from DrissionPage import MixPage
page = MixPage('s')
d = DownloadKit(session=page)
接收Drission
对象
from DrissionPage import MixPage
page = MixPage('s')
d = DownloadKit(session=page.drission)
DownloadKit
属性'skip'
、'overwrite'
、'rename'
Session
对象file_exists
属性说明:
skip
:跳过该文件overwrite
:覆盖该文件rename
:以在后面添加序号的方式给新文件重命名block_size
属性说明:
该属性可接收int
和str
形式,接收int
时以字节为单位;
接收str
时格式有:'10b'
、'10k'
、'10m'
、'10g'
四种。不区分大小写。
可使用以下属性进行配置:
d = DownloadKit()
# 设置线程数,只能在没有任务在运行的时候进行
d.roads = 20
# 大文件分块大小,默认 20MB
d.block_size = '50M'
# 设置保存路径,设置后每个任务会使用这个路径,也可添加任务时单独设置
d.goal_path = r'D:\tmp'
# 设置重试次数,初始为3
d.retry = 5
# 设置失败重试间隔,初始为5
d.interval = 2
# 设置存在文件名冲突时的处理方式,可选 'skip', 'overwrite', 'rename'
d.file_exists = 'skip'
使用add()
方法添加下载任务。
参数:
'skip'
,'overwrite'
,'rename'
,默认跟随实例属性返回:Mission
对象
使用add()
方法返回的Mission
对象可便于后续查看任务状态和进度。
from DownloadKit import DownloadKit
d = DownloadKit()
url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
mission = d.add(url)
可以给Session
对象添加整体参数,或每个任务设置独立的参数。
整体参数:
from requests import Session
from DownloadKit import DownloadKit
session = Session()
session.headers={'xxxx': 'xxxx'}
d = DownloadKit(session=session)
更简便的方法是使用SessionOptions
。该对象可使用保存在配置文件里的参数,免得每次在代码里设置复杂的headers
等参数,方便易用。详见:[DrissionPage](🔧 Session 启动配置 (gitee.io))
from DrissionPage.config import SessionOptions
from DownloadKit import DownloadKit
so = SessionOptions().set_proxies({'http': 'http://127.0.0.1'})
d = DownloadKit(session=so)
任务独立设置参数:
from DownloadKit import DownloadKit
d = DownloadKit()
url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
proxies = {'http': 'http://127.0.0.1'}
d.add(url, proxies=proxies)
任务可以用 get 或 post 方式,默认使用 get 方式,添加任务时,传入data
或json
参数即可使用 post 方式。
url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
# 使用 get 方式
d.add(url)
# 使用 post 方式
data = {'xxx': 'xxx'}
d.add(url, json=data)
# 或
d.add(url, data=data)
Tips: json
参数没有显式写在参数里,但直接调用即可。
show()
方法可实时显示所有线程下载过程。
注意: 若使用 pyCharm 运行,须在运行配置里勾选“模拟输出控制台中的终端”才能正常显示输出。
参数:
True
时即使任务全部结束,也会保持显示,可按回车结束显示返回:None
d = DownloadKit(r'.\files', size=3)
url = 'https://example.com/file/abc.zip'
mission = d.add(url)
d.show()
输出:
等待任务数:0
线程0:M1 D:\files\abc.zip
线程1:M1 D:\files\abc.zip
线程2:空闲
有时须要等待任务结束,以便获取结果,可用DownloadKit
对象或Mission
对象的wait()
方法。
当传入任务时,等待该任务结束并返回结果。不传入参数时等待所有任务结束,与show()
方法一致。
DownloadKit
对象的wait()
方法:
参数:
id
,为None
时等待所有任务结束返回:
'success'
表示成功,False
表示失败,'skip'
表示跳过。成功和跳过时信息为文件绝对路径,失败时信息为失败原因None
Mission
对象的wait()
方法
参数:
返回:返回任务结果和信息组成的两位 tuple。其中任务结果'success'
表示成功,False
表示失败,'skip'
表示跳过。成功和跳过时信息为文件绝对路径,失败时信息为失败原因
d = DownloadKit(r'.\files')
url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
mission = d.add(url)
d.wait(mission)
# 或
mission.wait()
输出:
url:https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png
文件名:PCfb_5bf082d29588c07f842ccde3f97243ea_4.png
目标路径:D:\files
100% 下载完成 D:\files\PCfb_5bf082d29588c07f842ccde3f97243ea_4.png
Tips: Mission
对象也有wait()
方法,作用与上述的一致。
mission = d.add(url)
mission.wait()
Mission
对象用于管理下载任务,可查看该任务执行情况。
Mission
对象属性:
'waiting'
、'running'
、'done'
三种'success'
表示成功,False
表示失败,'skip'
表示跳过mission = page.download.add(url)
print(mission.state)
输出:
running
使用Mission
对象的cancel()
方法,取消会删除该任务已下载的文件。
mission.cancel()
使用DownloadKit
对象的get_failed_missions()
方法,可获取下载失败的任务。可以把失败的任务保存到文件,支持 txt、xlsx、txt、csv 四种格式。
参数:
None
表示不保存返回:Mission
对象组成的列表
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。