在linux下很容易想到使用wine或crossover安装windows版本的百度网盘。但这样仍然会受限速的困扰。使用BaiduPCS-GO的多线程并行下载能有效提高速度,并且其类终端交互方式在linux的使用中对编写自定义脚本更为友好。
目前作者已停止更新,但仍能使用
安装
在其项目github release页下载设备对应平台的版本。解压到任意目录,其中dowload文件夹是下载文件夹,BaiduPCS-GO是执行程序,使用chmod +x BaiduPCS-Go
为其赋权
使用
基本开箱即用,执行其程序。并用help命令查看指令帮助,大多和linux类似,详细介绍省略
可以执行程序进入其界面,也可./BaiduPCS-GO ls
带参数执行单条命令,方便编写脚本
- 由于该软件已被百度云记录,不能直接下载
需要更改appid来获取下载权限(由于百度云保证/apps/baidu_shurufa路径,即自家百度输入法的下载权限和速率,所以可以将文件放到此目录下载),但拥有下载权限的appid又没有根目录权限满速权限:config set -appid=265486
根目录权限:config set -appid=266719
满速目录:/apps/baidu_shurufa下载流程为:
- 更换为根目录权限appid
- 移动下载文件到/apps/baidu_shurufa
- 更换为下载权限appid,下载
- 直接编写脚本
该脚本涵盖了3个我常用的功能,下载,删除,bt磁力下载
- 下载,是我将所有要下载的文件先转移到
/我的资源
文件夹,执行脚本,输入序号即可下载,下载大致流程的上述相同,下载完毕后打开所在路径的文件夹
- 删除,我发现不如直接使用其内置的删除命令,还能使用通配符,所以脚本的删除功能也就是切换权限并跳到
/我的资源
文件夹下,也可以单纯使用该命令快速换权并进入程序
- bt磁力下载,可惜该软件不能显示磁力下载的进度,所以我使用
watch -n
来监测/我的资源
文件夹下的变化,对于很快下载完的文件还好,但是对于下载失败或者磁力速度特别慢的只能去网页上看了
编写脚本后使用
ln -s <脚本绝对路径> ~/.lcoal/bin/baidu-dl
软链接到baidu-dl命令- 下载
baidu-dl
- 删除
baidu-dl del
- bt下载
baidu-dl bt
脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#!/bin/bash SCRIPT_PATH="/home/mopip77/Desktop/BaiduPCS-Go-v3.5.6-linux-amd64" # 程序路径 FILE_STORE_PATH="/我的资源/" # 网盘上下载文件夹路径 TMP_LIST_FILE="/tmp/baidu_pan.tmp" # 临时文件 DOWNLOAD_PATH="/home/mopip77/Desktop/BaiduPCS-Go-v3.5.6-linux-amd64/download/1131301918_Mopip77/apps/baidu_shurufa" # 本机下载的位置(因为都转移到baidu_shurufa下了,所以/apps/baidu_shurufa即为本机的下载根路径) cd $SCRIPT_PATH # 切换权限账号 ./BaiduPCS-Go config set -appid=266719 if [[ $# -eq 1 && $1 == "del" ]] then echo -e "\033[46;30m 使用rm命令删除文件\033[0m:" ./BaiduPCS-Go ls "$FILE_STORE_PATH" ./BaiduPCS-Go cd "$FILE_STORE_PATH" ./BaiduPCS-Go elif [[ $# -eq 1 && $1 == "bt" ]] then # 磁力下载 echo -e "\033[46;30m 输入磁力链接:\033[0m:" read btLink ./BaiduPCS-Go od add -path=$FILE_STORE_PATH "$btLink" watch -n 3 ./BaiduPCS-Go ls "$FILE_STORE_PATH" else # 下载 ./BaiduPCS-Go ls "$FILE_STORE_PATH" > $TMP_LIST_FILE ./BaiduPCS-Go ls "$FILE_STORE_PATH" echo -e "\033[46;30m 输入文件(夹)编号下载: \033[0m" read dlCodes # 记录所有下载文件的名字 index=0 dlFileNames=() for i in ${dlCodes[*]} do # 前五行无用, 也不用sed删了, 直接加一下吧 let num=i+5 dlFileNames[$index]=$(cat $TMP_LIST_FILE | awk 'NR=="'$num'"{print $5}') let index=index+1 done # 转移所有下载文件 ./BaiduPCS-Go cd $FILE_STORE_PATH ./BaiduPCS-Go cp ${dlFileNames[*]} /apps/baidu_shurufa # 下载所有文件 ./BaiduPCS-Go cd /apps/baidu_shurufa/ ./BaiduPCS-Go config set -appid=265486 ./BaiduPCS-Go d ${dlFileNames[*]} # 删除要下载的文件(/app/baidu_shurufa文件夹下的) ./BaiduPCS-Go rm ${dlFileNames[*]} exo-open --launch FileManager $DOWNLOAD_PATH fi
- 下载,是我将所有要下载的文件先转移到