用python实现bt下载_GitHub - Freedom-Blue/Python_Download: python实现的类IDM高速下载程序...

本文介绍如何使用Python的多线程和Request库实现一个不限速的下载工具,类似IDM。通过创建下载类,设置下载链接、线程数和文件名,实现多线程文件下载,提高下载速度。
摘要由CSDN通过智能技术生成

1.前言

很久没写博客了。某天在b站上面看到的使用python的多线程文件IO操作机制,突发奇想来实现下

人们总有这样的困扰,使用有名的工具下载大文件的时候,总会限速(比如某度云),使用迅雷下载BT文件的时候又不得不被广告困扰。使用IDM这种无限制下载软件的时候 ,又会弹出各种注册弹窗的问题。故笔者这里使用python的多线程文件IO下载,百行代码左右实现一个快速下载工具。

2.环境

win10

python3.6

Pycharm2017

3.效果

使用python实现的类IDM下载器,具有不限制网速(取决于网速带宽),以及多线程下载的特点。

68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f32303230303730343030323635323832312e676966

4.实现步骤

4.1 导包

实现这个功能主要用到的是python中的Request库,以及线程处理库,基于python对文件IO操作的友好性,使用较少的代码实现了上述下载的功能。

import os

import time

import sys

from requests import get,head

from concurrent.futures import ThreadPoolExecutor,wait

如果运行出错。可能需要安装相关包

4.2 初始化

新定义一个下载类,对其进行初始化,声明下载链接,线程数以及另存为的文件名

def __init__(self, url, nums, file):

self.url = url # url链接

self.num = nums # 线程数

self.name = file # 文件名字

self.getSize = 0 # 大小

self.info = {

'main': {

'progress': 0,# 主线程状态

'speed': ''# 下载速度

},

'sub': {

'progress': [0 for i in range(nums)], # 子线程状态

'stat': [1 for i in range(nums)] # 下载状态

}

}

r = head(self.url)

# 状态码显示302则迭代寻找文件

while r.status_code == 302:

self.url = r.headers['Location']

print("此url已重定向至{}".format(self.url))

r = head(self.url)

self.size = in

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值