一个简单的多线程文件下载工具。
Project description
简介
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
对象
初始化参数:
- goal_path:文件保存路径,默认当前路径
- size:可同时运行的线程数
- session:使用的
Session
对象,或配置对象等 - timeout:连接超时时间
- file_exists:有同名文件名时的处理方式,可选
'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
属性
- goal_path:文件保存路径,可赋值
- retry:下载失败重试次数,可赋值
- interval:下载失败重试间隔,可赋值
- timeout:连接超时时间,可赋值
- file_exists:遇到同名文件时的处理方式,可赋值,可选
'skip'
、'overwrite'
、'rename'
- session:用于连接的
Session
对象 - waiting_list:等待下载的队列
file_exists
属性说明:
skip
:跳过该文件overwrite
:覆盖该文件rename
:以在后面添加序号的方式给新文件重命名
添加下载任务
使用add()
方法添加下载任务。
参数:
- file_url:文件网址
- goal_path:保存路径
- session:用于下载的Session对象,默认使用实例属性的
- rename:重命名的文件名
- file_exists:遇到同名文件时的处理方式,可选
'skip'
,'overwrite'
,'rename'
,默认跟随实例属性 - post_data:post 方式使用的数据
- retry:重试次数,默认跟随实例属性
- interval:重试间隔,默认跟随实例属性
- kwargs:连接参数,与 requests 的参数使用方法一致
返回: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
参数没有显式写在参数里,但直接调用即可。
等待任务结束
有时须要等待任务结束,以便获取结果,可用wait()
方法。
参数:
- mission:任务对象或任务 id
- show:是否显示进度
返回:任务结果和信息组成的两位 tuple。True
表示成功,False
表示失败,None
表示跳过。
d = DownloadKit(r'.\files')
url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png'
mission = d.add(url1)
d.wait(mission)
输出:
url:https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png
文件名:PCfb_5bf082d29588c07f842ccde3f97243ea_4.png
目标路径:D:\files
100% 下载完成 D:\files\PCfb_5bf082d29588c07f842ccde3f97243ea_4.png
Mission
对象
Mission
对象用于管理下载任务。
属性:
- id:任务 id
- data:任务使用的参数,与
add()
方法参数一致 - state:任务状态,有
'waiting'
、'running'
、'done'
三种 - info:任务进行中显示进度百分比,任务结束后显示任务信息
- result:任务结果,
True
表示成功,False
表示失败,None
表示跳过 - file_name:任务文件名
- path:保存路径
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file DownloadKit-0.1.0.tar.gz
.
File metadata
- Download URL: DownloadKit-0.1.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0bcbbb5a55ea7c528fffc3a7ebb0b492671f99948f87aa7efae62e38b3dda26 |
|
MD5 | e038c0943d17e1f50a7ef3052c73ff20 |
|
BLAKE2b-256 | 1ead63d4aac2c4433f97b0c1c54e04eb5508b5ec8d6f6be69fc45d462570d390 |
File details
Details for the file DownloadKit-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: DownloadKit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c943135a4bfe101e672548360fb03de1e4f25576d9e79d635c013fb9ffa65f26 |
|
MD5 | 06a4d947fcd1bc1c8a7df3ac0d14350b |
|
BLAKE2b-256 | f9056a22b2d32a80503c0799fef49820657b448355fb03a390277ef317600ae8 |