V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
PeterD
V2EX  ›  分享创造

Aget:一个类似于 aria2 的异步下载工具

  •  
  •   PeterD ·
    PeterDing · 2016-12-19 10:39:35 +08:00 · 5511 次点击
    这是一个创建于 2679 天前的主题,其中的信息可能已经有所发展或是发生改变。

    github 地址

    Aget 将下载请求分成多个小块,依次用异步下载。

    安装

    需要 Python >= 3.5

    pip3 install aget
    

    用法

    aget https://cdn.v2ex.co/site/[email protected]
    
    # 指定下载路径
    aget https://cdn.v2ex.co/site/[email protected] -o v2ex.png
    
    # 指定请求头
    aget https://cdn.v2ex.co/site/[email protected] -H "User-Agent: Mozilla/5.0" -H "Accept-Encoding: gzip"
    
    # 指定并发数量 (无限制)
    aget https://cdn.v2ex.co/site/[email protected] -s 10
    
    # 指定请求块大小
    aget https://cdn.v2ex.co/site/[email protected] -k 10k
    

    参数

    -o OUT, --out OUT             # 下载路径
    -H HEADER, --header HEADER    # 请求头
    -X METHOD, --method METHOD    # 请求方法
    -d DATA, --data DATA          # 请求 data
    -t TIMEOUT, --timeout TIMEOUT # timeout
    -s CONCURRENCY, --concurrency CONCURRENCY   # 并发数
    -k CHUCK_SIZE, --chuck_size CHUCK_SIZE      # 请求块大小
    

    ! Enjoy

    18 条回复    2016-12-26 11:32:05 +08:00
    cevincheung
        1
    cevincheung  
       2016-12-19 10:56:02 +08:00
    unable to find vcvarsall.bat
    PeterD
        2
    PeterD  
    OP
       2016-12-19 11:40:58 +08:00
    @cevincheung 现在只支持 *UNIX 类系统。。。
    fffflyfish
        3
    fffflyfish  
       2016-12-19 11:57:16 +08:00
    哇哦,好东西,已 star ,但是我在 mac 下载墙外的东西的时候就会莫名的停下,然后 command+Z/C 都不管用,无法中断
    fffflyfish
        4
    fffflyfish  
       2016-12-19 12:51:16 +08:00
    oh,sorry ,应该是 ctrl+z ,可以强行中断
    tigerstudent
        5
    tigerstudent  
       2016-12-19 13:51:52 +08:00
    请问支持断点续传吗?
    前段时间遇到一个 159GB 的文件要下载,还要登录验证的,无法用迅雷下载,很是困扰。
    PeterD
        6
    PeterD  
    OP
       2016-12-19 14:00:34 +08:00
    @tigerstudent 默认支持断点续传
    pandachow
        7
    pandachow  
       2016-12-19 16:27:24 +08:00
    求支持 py2.7.*
    Tink
        8
    Tink  
       2016-12-19 16:39:00 +08:00
    性能如何呀
    PeterD
        9
    PeterD  
    OP
       2016-12-19 17:32:34 +08:00
    @Tink
    性能要看你开多少并发数
    用 baidu 盘非会员测试,开 -s 30 -k 200k 可以跑到 3~4M/s
    PeterD
        10
    PeterD  
    OP
       2016-12-19 17:33:58 +08:00
    @pandachow py2.7 好像不能用 asyncio 库。这样就 py2.7 无缘了
    hadoop
        11
    hadoop  
       2016-12-19 17:43:38 +08:00
    跟 axel 区别是啥
    PeterD
        12
    PeterD  
    OP
       2016-12-19 20:14:33 +08:00
    @hadoop 并发的形式与 axel 没太多差别都是单线程,有差别的是块区的下载次序。

    举个栗子:

    开 3 个并发时, axel 是平均分段下载的(我尝试 axel 后推测的)

    |=====> ======> ======> |

    aget 是依据块大小(-k )依次来下载的

    |==> ===> ==> |

    如果下载的是视频文件,用 mpv 播放下载的临时文件就不会跳段。
    PeterD
        13
    PeterD  
    OP
       2016-12-19 20:17:17 +08:00
    |=====>------======>-------======>-------|
    |==>-===>-==>---------------------------------|
    Tuccuay
        14
    Tuccuay  
       2016-12-19 23:11:53 +08:00
    度盘 -s 100 拖了个 2G 的文件然后:

    ppwangs
        15
    ppwangs  
       2016-12-20 15:58:24 +08:00
    star 一个有空学习下。
    PeterD
        16
    PeterD  
    OP
       2016-12-25 19:39:12 +08:00
    @Tuccuay 搞错了分块函数的一个位,让最后一个字节不能下载。
    现在已经修复。
    qfdk
        17
    qfdk  
       2016-12-26 07:01:52 +08:00
    给楼主发个赞!!!要是可以显示百分比就最好了
    PeterD
        18
    PeterD  
    OP
       2016-12-26 11:32:05 +08:00
    @qfdk 加了个百分比,试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1946 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:16 · PVG 00:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.