前言

相信大家经常会苦恼于百度云的下载速度,且随着PanDowmload、BaiduExporter等工具的被封,除非开通SVIP,否则就只能忍受万恶的100Kb/s的龟速。

于是我想到了之前所使用的bypy的这个工具,仅需要一台linux主机就可以开启属于你个人的离线下载。

  • Tips:bypy并没有破解百度云,不过搭配Aria2的下载速度也能达到300kb/s+了。

1.Bypy简介

bypy是一个调用百度网盘API的第三方应用,是一个百度云/百度网盘的Python客户端。主要的目的就是在Linux环境下(Windows下应该也可用,但没有仔细测试过)通过命令行来使用百度云盘的2TB的巨大空间。

这里是bypy Github地址

值得一提的是,由于百度PCS API权限限制,程序只能存取百度云端我的应用数据/bypy目录下,我们在使用的时候需要将要下载的文件导入到该目录下就可以了。

2.安装与使用

  • 通过pip来安装:pip install bypy (支持Python 2.7+, 3.3+)

  • 运行

    • 作为独立程序: 运行 bypy (或者python -m bypy,或者python3 -m bypy

      可以看到命令行支持的全部命令和参数。

    • 作为一个包,在代码中使用: import bypy

    简单的图形界面: 运行 bypygui

  • 使用

    显示使用帮助和所有命令(英文):

    1
    bypy

    第一次运行时需要授权,只需跑任何一个命令(比如 bypy info)然后跟着说明(登陆等)来授权即可。授权只需一次,一旦成功,以后不会再出现授权提示.

    更详细的了解某一个命令:

    1
    bypy help <command>

    显示在云盘(程序的)根目录下文件列表:

    1
    bypy list

    把当前目录同步到云盘:

    1
    bypy syncup

    or

    1
    bypy upload

    把云盘内容同步到本地来:

    1
    bypy syncdown

    or

    1
    bypy downdir /

    比较本地当前目录和云盘(程序的)根目录(个人认为非常有用):

    1
    bypy compare

    更多命令和详细解释请见运行bypy的输出。

  • 调试

    • 运行时添加-v参数,会显示进度详情。
    • 运行时添加-d,会显示一些调试信息。
    • 运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多
  • 直接在Python程序中调用

    1
    2
    3
    from bypy import ByPy
    bp=ByPy()
    bp.list() # or whatever instance methods of ByPy class

3.结合Aria2实现离线下载

aria2是一个非常好用的命令行下载工具,可参考我的另一篇博客

你需要用参数--downloader aria2来让bypy调用aria2下载,还可以用--downloader-arguments来设置aria2的参数。

1
2
3
4
5
# 使用如下命令下载dmg映像到当前文件夹
bypy --downloader aria2 downfile macOS10_15.dmg


export DOWNLOADER_ARGUMENTS="-c -k10M -x16 -s16 --file-allocation=none"

之后你需要将离线下载服务器中的数据拖下来,这里有很多种方式,回头我再来补充,反正都比100k/s强太多了~


补充:由于bypy一段时间不用之后会丢失token,你可以使用crontab定时刷新一下。

1
2
3
4
crontab -e 

# 添加如下信息,执行时间为每周三的凌晨6点30分
6 30 * * 3 python -m bypy info