Centos系统下bypy+aria2下载百度网盘实现百度云转存方案

写在最前

博主一直苦恼,因为百度云个人用着非常不错,但是分享和非会员的用户很鸡肋,另外由于博主空间所限,需要将一些不常用的文件转存出去,这个就非常尴尬了,因为百度云的扩容很贵,还不如重新买个SVIP,另外一方面其他人不一定下载的舒服,本人前段时间尝试了使用win系列的VPS将百度云转存到其他网盘,无奈经费超标,只能选了一个比较鸡肋的VPS自己DD了win7系统,勉强跑起了Airexplorer,尴尬的事情还比较多,因为流量和速度都难以达到,速度大概就是5M/S左右吧,国内的VPS大多数都是带宽限制,价格也很难承担,所以博主重新搞了个方案,采用bypy下载到VPS上,并通过rclone或者其他工具上传到GD|OD等网盘,之后再挂载出去给大家下载.时间太晚只写了一半,保证本次不挖坑,有时间绝对写完,项目地址:官方传送门

《Centos系统下bypy+aria2下载百度网盘实现百度云转存方案》

安装过程

以后不再写安装教程了,自己都没搞明白实在不好意思去教育别人

安装软件

老规矩就是先升级下yum

yum -y update

安装下epel库

yum -y install epel-release
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum repolist

安装aria2

#主要作用用于多线程下载
yum -y install aria2

安装screen

#主要作用用于进程守护,你也可以用其他的办法进行
yum -y install screen

centos7默认版本是2.7的版本,所以需要安装下pip-注意系统有的话就不要搞了,支持python2.7的,本步骤不是必须的,其实最简单的方法就是输入pip命令看下返回是否为空

#查看版本
python -v
#返回结果大于2.79使用升级命令即可
pip install -U pip
#返回结果小于2.79
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

使用pip安装bypy:

pip install bypy

配置账户

绑定你的百度网盘账号:

bypy info

返回信息如下

Baidu PCS currently gives totally WRONG MD5 hash for remote files, and I AM NOT GOING TO ADAPT TO IT!
So it if doesn't work, install version '1.6.10' using the following command:
pip install bypy==1.6.10
Version 1.6.10 has a workaround for this.
### Seeking maintainer fo this `bypy` project, if you are interested, please create an issue at github, thanks. ###
----------------------------------------------------------------
百度云盘返回的MD5全错了,鬼知道他们什么时候会改回来!现在代码是按照MD5值是正确的前提来写的,不会改。
所以你发现比较功能等不能正确工作时,请安装 1.6.10 版本:
pip install bypy==1.6.10
1.6.10版有个临时解决方案。
### 寻求这个`bypy`项目维护者,有意的话请去github上建issue,谢谢。###
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#根据返回命令将下面网址复制到浏览器去授权
Please visit:
https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn

《Centos系统下bypy+aria2下载百度网盘实现百度云转存方案》

同意得到下面的一段授权码,复制返回SSH中在以下位置粘贴确认即可

《Centos系统下bypy+aria2下载百度网盘实现百度云转存方案》

And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done
xxxxxxxxxx//这里输入你的确认码
Authorizing, please be patient, it may take upto 300 seconds...
Authorizing with the Heroku server ...
Heroku server failed, authorizing with the Heroku1 server ...
Successfully authorized//这里提示为授权正确,以下为返回信息,可能有点不准
Quota: 6.103TB
Used: 5.299TB

使用方法

首先把你需要下载转存的文件放到以下文件夹内,注意要在客户端上操作,网页版可能看不到这个文件夹

《Centos系统下bypy+aria2下载百度网盘实现百度云转存方案》

列出文件列表

bypy list

返回信息

/apps/bypy ($t $f $s $m $d):
F 3DMine Plus视频教程.rar 1614703782 2020-07-10, 10:53:48 0e06b6ae6mbb3610a49fdcc4abe17008
#这里说明以下
$t-表示啥我现在还没搞明白
$f-表示文件名
$s-表示文件大小
$m-表示最后修改时间
$d-表示文件MD5特征码

直接下载,我这里使用的是同步命令

#首先选择好你VPS准备存放文件的位置,这点将来作为你上传到google或者od的中转位置
cd /home/ggbk
#从百度云同步到VPS当前目录
bypy syncdown -v
#从百度云指定目录同步到VPS
bypy downdir /
#后面几个参数说明一下
运行时添加-v参数,会显示进度详情。
运行时添加-d,会显示一些调试信息。
运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多)

参考图片,说实话速度不咋地,主要我用的VPS也是国外的,如果想对速度有提升,请继续向下看aria2的配置

《Centos系统下bypy+aria2下载百度网盘实现百度云转存方案》

其他命令

#更详细的了解某一个命令:
bypy help <command>
#显示在云盘(程序的)根目录下文件列表:
bypy list
#把当前目录同步到云盘:
bypy syncup
bypy upload
把云盘内容同步到本地来:
bypy syncdown
bypy downdir /
比较本地当前目录和云盘(程序的)根目录(个人认为非常有用):
bypy compare
#命令的参数说明,用法已经在上面示例过了
运行时添加-v参数,会显示进度详情。
运行时添加-d,会显示一些调试信息。
运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多)

调用aria2下载

默认情况下bypy没有调用aria2下载,不用aria2的话下载速度不能最大化,所以这里我们先配置aria2。bypy默认配置的aria2是使用4个连接数下载,这里我们可以修改成最大的16,为了后续使用方便这里直接设置一个环境变量即可:

echo 'export DOWNLOADER_ARGUMENTS="-c -k10M -x16 -s16 --file-allocation=none"' > /etc/profile.d/bypy.sh
chmod +x /etc/profile.d/bypy.sh
source /etc/profile.d/bypy.sh

验证环境变量是否生效,回显有你上面设置的内容说明正常,否则你需要检查或使用别的方式来设置环境变量

echo $DOWNLOADER_ARGUMENTS

现在就可以尝试下载了

bypy --downloader aria2 download 远程文件名 本地路径
bypy --downloader aria2 download 远程目录 本地路径

例如下载一个example.zip或是名为妹子的文件夹到本地的folder目录:

bypy --downloader aria2 download example.zip folder
bypy --downloader aria2 download 妹子 folder

每次要下载文件的时候都要输这么长的命令不太方便,这里可以添加一个别名

nano ~/.bashrc

例如我设置一个dw的别名:

alias dw='bypy --downloader aria2 download '

使其生效:

source ~/.bashrc

那么以后下载文件或者目录的话就可以直接用这样的命令:

dw example.zip folder
dw 妹子 folder

进程守护

下载大文件你不可能总是一直开着终端,有时候还可能因为网络不好导致SSH断开,这里我们可以用screen守护:

screen -S bypy

接着你就可以在这个新的终端内使用bypy下载,按键盘组合键Ctrl+A+D就可以切出这个终端。一些screen常用命令:

screen -ls # 查看当前所有终端
screen -r bypy # 回到之前的终端
screen -X -S bypy quit # 删除一个终端

自动转存

挂载GD及脚本命令,等明天再更新

点赞
  1. 山涧小石说道:

    可以完美解决问题 :biggrin:

发表评论