/Nbdler

python下载器模块

Primary LanguagePythonApache License 2.0Apache-2.0

Nbdler

Build Status Build Status

Nbdler 是使用Python编写的下载器。

特征

  • 支持断点续传。
  • 支持多线程分片下载。
  • 支持多来源地址下载。
  • 支持以子进程模式运行。
  • 具有下载任务管理器。

安装

$ pip install Nbdler

例子

简单下载任务(Downloader)

from nbdler import dlopen, Request

request = Request('https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe', max_thread=32,
                  file_path='./微信安装包.exe')
dl = dlopen(request)
dl.start()

获取实时下载信息

# :::::下载实时信息
# 实时下载速度
dl.realtime_speed()
# 平均下载速度
dl.average_speed()
# 剩余下载长度
dl.remaining_length()
# 剩余估计下载事件
dl.remaining_time()
# 已下载长度
dl.increment_go()
# 已写入文件长度
dl.increment_done()

# :::::下载实体信息(以字典形式返回)
# 文件路径长度等信息
dl.body.file
# 下载源信息
dl.body.url
# 下载配置信息
dl.body.config
# 返回所有实体信息
dl.body.all
# 下载块信息()
# 返回指定索引n的下载块
dl.body.block_mgr[n]
# 返回所有的下载块信息
dl.body.block_mgr.get_all()

下载任务操作/状态

# :::::下载任务操作
# 开始(继续)下载任务
dl.start()
# 暂停下载任务
dl.pause()
# 关闭下载任务,任务成功完成后的关闭处理。
dl.close()
# 配置下载文件信息
dl.config()
# 速度限制为最大n字节每秒
dl.speed_limit(n)
# 阻塞至下载任务运行结束。
dl.join()
# 异常错误敏感的下载任务阻塞。下载异常错误会通过调用这个方法抛出。
dl.trap()

# :::::下载状态
# 下载任务是否运行中
dl.is_alive()
# 下载任务是否已完成
dl.is_finished()

下载管理器(Manager)

from nbdler import Manager, Request

# 设置最大同时下载任务数量n
mgr = Manager(maxsize=n)
request1 = Request('https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe', max_thread=32,
                   file_path='./微信安装包1.exe')
request2 = Request('https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe', max_thread=32,
                   file_path='./微信安装包2.exe')

id1 = mgr.putrequest(request1)
id2 = mgr.putrequest(request2)
mgr.start()

获取当前运行中的下载任务实时信息

# :::::下载实时信息
# 实时下载速度
mgr.realtime_speed()
# 平均下载速度
mgr.average_speed()
# 剩余下载长度
mgr.remaining_length()
# 剩余估计下载事件
mgr.remaining_time()
# 已下载长度
mgr.increment_go()
# 已写入文件长度
mgr.increment_done()
# 以字典形式获取以上所有实时信息
mgr.realtime_info()

# :::::下载实体信息(以字典形式返回)
# 文件路径长度等信息
mgr.body.file
# 下载源信息
mgr.body.url
# 下载配置信息
mgr.body.config
# 返回所有实体信息
mgr.body.all
# 以字典形式获取以上所有实体信息
mgr.body_info()
# 下载块信息()
# 返回指定索引n的下载块
mgr.body.block_mgr[n]
# 返回所有的下载块信息
mgr.body.block_mgr.get_all()

获取指定任务ID的信息

# 返回任务ID为n的任务的实时速度。
mgr[n].realtime_speed()
# 返回任务ID为n和m的实时速度总和。
mgr[n, m].realtime_speed()
# 返回所有下载任务的实时速度
mgr[-2].realtime_speed()

下载管理器的运行队列信息

# :::::运行队列
# 已入列待下载任务ID列表
mgr.queue.enqueued
# 运行中的任务ID列表
mgr.queue.running
# 已结束的任务ID列表
mgr.queue.dequeued
# 处于未确定队列的任务ID列表(正在dlopen打开过程中)
mgr.queue.unsettled

# :::::状态队列
# 已就绪的任务ID列表
mgr.queue.ready
# 已暂停的任务ID列表
mgr.queue.paused
# 正在dlopen打开下载任务的ID列表
mgr.queue.opening
# 已开始的下载任务ID列表
mgr.queue.started
# 发生错误并且已结束的任务ID列表
mgr.queue.error
# 已完成下载的任务ID列表
mgr.queue.finished

许可证

Apache-2.0

更新日志

2.0.0

  • 重构

1.0.1

  • 修复一些bug。

0.9.9

  • 重构。
  • 添加多进程下载支持。

0.0.1

  • 上传代码。