3分钟搞定百度网盘批量转存与自动下载:BaiduPCS-Go脚本实战指南
你是否还在为手动处理大量百度网盘分享链接而头疼?每次转存文件都需要复制链接、输入提取码、等待转存完成,再手动点击下载按钮?现在,这些重复劳动可以通过BaiduPCS-Go脚本来自动化完成。本文将详细介绍如何编写和使用批量转存与自动下载脚本,让你轻松管理百度网盘资源。
为什么选择BaiduPCS-Go脚本?
BaiduPCS-Go是一款基于命令行的百度网盘客户端,支持多种高级功能,如文件管理、分享链接转存、离线下载等。通过编写脚本来调用BaiduPCS-Go的命令,可以实现自动化操作,大大提高工作效率。
主要优势:
- 支持批量处理多个分享链接
- 自动输入提取码,无需人工干预
- 转存完成后可自动触发下载
- 支持自定义下载参数,如并发数、保存路径等
- 完全基于命令行,可集成到其他自动化工作流中
准备工作
在开始编写脚本之前,需要确保你已经正确安装和配置了BaiduPCS-Go。
安装BaiduPCS-Go
- 从项目仓库克隆或下载最新版本的BaiduPCS-Go:
git clone https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go.git
- 根据你的操作系统,编译或直接使用预编译的可执行文件。详细编译说明请参考项目文档中的编译/交叉编译说明。
登录百度账号
使用以下命令登录百度账号,支持多种登录方式:
# 使用BDUSS和STOKEN登录(推荐)
BaiduPCS-Go login -bduss=<你的BDUSS> -stoken=<你的STOKEN>
# 或使用Cookies登录
BaiduPCS-Go login -cookies=<你的Cookies>
关于如何获取BDUSS和STOKEN,请参考项目文档中的登录百度帐号部分。
批量转存脚本编写
单个链接转存命令
BaiduPCS-Go提供了transfer命令用于转存分享链接,基本语法如下:
BaiduPCS-Go transfer <分享链接> <提取码>
例如:
BaiduPCS-Go transfer https://pan.baidu.com/s/12L_ZZVNxz5f_2CccoyyVrW edv4
批量转存脚本
下面是一个简单的批量转存脚本,它可以读取包含多个分享链接和提取码的文本文件,并逐个进行转存。
#!/bin/bash
# 批量转存脚本
# 用法: ./batch_transfer.sh links.txt
# 检查参数
if [ $# -ne 1 ]; then
echo "用法: $0 <链接文件>"
exit 1
fi
# 读取链接文件并处理
while IFS= read -r line; do
# 跳过空行和注释行
if [ -z "$line" ] || [[ "$line" =~ ^# ]]; then
continue
fi
# 分割链接和提取码(假设格式为"链接 提取码")
LINK=$(echo "$line" | awk '{print $1}')
CODE=$(echo "$line" | awk '{print $2}')
echo "正在转存: $LINK"
# 调用BaiduPCS-Go进行转存
BaiduPCS-Go transfer "$LINK" "$CODE"
# 检查转存是否成功
if [ $? -eq 0 ]; then
echo "转存成功: $LINK"
else
echo "转存失败: $LINK" >> transfer_failed.txt
fi
# 添加延迟,避免请求过于频繁
sleep 2
done < "$1"
echo "批量转存完成,失败的链接已保存到transfer_failed.txt"
链接文件格式
链接文件应包含多个分享链接及其对应的提取码,每行一个链接,格式如下:
https://pan.baidu.com/s/12L_ZZVNxz5f_2CccoyyVrW edv4
https://pan.baidu.com/s/3jF3kL2mN5pQ7rT9sU0vX2yZ4 edf5
# 这是一条注释,会被忽略
https://pan.baidu.com/s/5hJ6kM7nO8pQ9rS0tU1vW2xY3 abc7
自动下载脚本编写
基本下载命令
BaiduPCS-Go提供了download(或简写为d)命令用于下载文件,基本语法如下:
BaiduPCS-Go download <网盘文件路径> [可选参数]
例如:
# 下载单个文件
BaiduPCS-Go d /我的资源/视频.mp4
# 下载整个目录
BaiduPCS-Go d /我的资源
# 设置下载并发数和保存路径
BaiduPCS-Go d -p 5 --saveto /home/user/downloads /我的资源
自动下载脚本
下面的脚本可以监控指定的网盘目录,当有新文件转存到该目录时,自动开始下载。
#!/bin/bash
# 自动下载脚本
# 监控指定目录,当有新文件时自动下载
# 配置
WATCH_DIR="/我的资源/自动下载" # 要监控的网盘目录
LOCAL_SAVE_DIR="/home/user/downloads" # 本地保存目录
CHECK_INTERVAL=300 # 检查间隔(秒)
LOG_FILE="auto_download.log"
# 确保日志文件存在
touch $LOG_FILE
echo "[$(date)] 自动下载脚本启动,监控目录: $WATCH_DIR" >> $LOG_FILE
# 获取初始文件列表
initial_files=$(BaiduPCS-Go ls -l "$WATCH_DIR" | awk '{print $9}' | grep -v '^$')
while true; do
# 获取当前文件列表
current_files=$(BaiduPCS-Go ls -l "$WATCH_DIR" | awk '{print $9}' | grep -v '^$')
# 找出新增的文件
new_files=$(comm -13 <(echo "$initial_files" | sort) <(echo "$current_files" | sort))
if [ -n "$new_files" ]; then
echo "[$(date)] 发现新文件: $new_files" >> $LOG_FILE
# 下载新增文件
for file in $new_files; do
file_path="$WATCH_DIR/$file"
echo "[$(date)] 开始下载: $file_path" >> $LOG_FILE
# 执行下载命令
BaiduPCS-Go download --saveto "$LOCAL_SAVE_DIR" "$file_path"
# 检查下载是否成功
if [ $? -eq 0 ]; then
echo "[$(date)] 下载成功: $file_path" >> $LOG_FILE
# 可选:下载成功后删除网盘文件
# BaiduPCS-Go rm "$file_path"
else
echo "[$(date)] 下载失败: $file_path" >> $LOG_FILE
fi
done
# 更新初始文件列表
initial_files=$current_files
fi
# 等待下一次检查
sleep $CHECK_INTERVAL
done
自定义下载参数
你可以根据需要修改下载命令,添加自定义参数。例如:
# 设置下载并发数为8,覆盖已存在文件
BaiduPCS-Go download -p 8 --ow --saveto "$LOCAL_SAVE_DIR" "$file_path"
# 使用locate模式下载,设置最大重试次数
BaiduPCS-Go download --mode locate --retry 3 --saveto "$LOCAL_SAVE_DIR" "$file_path"
更多下载参数可通过BaiduPCS-Go download -h命令查看,或参考项目文档中的下载文件/目录部分。
结合批量转存与自动下载
将前面介绍的批量转存脚本和自动下载脚本结合起来,可以实现从分享链接到本地文件的全自动化流程。
工作流程
- 使用批量转存脚本将多个分享链接转存到网盘的指定目录(如
/我的资源/自动下载) - 自动下载脚本监控该目录,当发现新文件时自动开始下载
- 下载完成后可选择删除网盘文件以节省空间
组合脚本示例
#!/bin/bash
# 批量转存并自动下载组合脚本
# 配置
LINKS_FILE="links.txt" # 包含分享链接的文件
WATCH_DIR="/我的资源/自动下载" # 转存目标目录
TRANSFER_SCRIPT="./batch_transfer.sh"
DOWNLOAD_SCRIPT="./auto_download.sh"
# 1. 切换到监控目录
BaiduPCS-Go cd "$WATCH_DIR"
# 2. 执行批量转存
echo "开始批量转存..."
$TRANSFER_SCRIPT $LINKS_FILE
# 3. 启动自动下载监控
echo "启动自动下载监控..."
$DOWNLOAD_SCRIPT &
# 记录PID,以便后续停止
DOWNLOAD_PID=$!
echo "自动下载进程PID: $DOWNLOAD_PID"
echo $DOWNLOAD_PID > download_pid.txt
# 4. 等待所有下载完成(这里设置超时时间为24小时)
echo "等待下载完成..."
timeout 86400 tail -f auto_download.log
# 5. 停止自动下载监控
echo "停止自动下载监控..."
kill $DOWNLOAD_PID
rm download_pid.txt
echo "所有操作完成!"
高级配置与优化
配置下载参数
BaiduPCS-Go允许通过配置命令修改默认的下载参数,如并发数、缓存大小等。例如:
# 显示当前配置
BaiduPCS-Go config
# 设置下载最大并发量为10
BaiduPCS-Go config set -max_parallel 10
# 设置下载缓存大小为64MB
BaiduPCS-Go config set -cache_size 64MB
# 设置默认下载保存路径
BaiduPCS-Go config set -savedir /home/user/downloads
详细的配置说明请参考项目文档中的显示和修改程序配置项部分。
处理特殊情况
在实际使用中,可能会遇到各种特殊情况,如网络中断、提取码错误、文件已被删除等。以下是一些处理这些情况的建议:
- 网络中断:在脚本中添加重试机制,当检测到网络错误时自动重试。
- 提取码错误:将提取码错误的链接保存到单独的文件,以便手动处理。
- 文件已被删除:跳过此类链接并记录日志。
- 下载速度慢:调整并发数或使用不同的下载模式(如
locate模式)。
性能优化
为了获得更好的性能,可以考虑以下优化措施:
- 合理设置并发数:普通用户建议设置较低的并发数(如1-2),SVIP用户可适当提高(如10-20)。
- 分散请求时间:在批量操作中添加适当的延迟,避免因请求过于频繁而被限制。
- 选择合适的下载模式:根据文件大小和网络情况选择合适的下载模式(
pcs、stream或locate)。 - 定期清理缓存:定期清理下载缓存可以释放磁盘空间,提高性能。
常见问题与解决方法
转存失败的常见原因
- 提取码错误:请检查链接对应的提取码是否正确。
- 链接已失效:分享链接可能已被取消或过期。
- 文件已被删除:原分享者可能已删除文件。
- 请求过于频繁:百度网盘可能会限制频繁的转存请求,建议增加请求间隔。
下载速度慢的解决方法
- 调整并发数:根据你的网络状况和账号类型(普通用户/SVIP)调整合适的并发数。
- 更换下载模式:尝试使用不同的下载模式,如:
# 使用locate模式下载 BaiduPCS-Go d --mode locate /我的资源/文件.zip - 检查网络连接:确保你的网络连接稳定。
- 避开高峰期:尝试在非高峰时段下载大文件。
脚本运行权限问题
如果遇到"权限不足"的错误,请确保脚本具有可执行权限:
chmod +x batch_transfer.sh auto_download.sh
总结与展望
通过本文介绍的方法,你可以轻松实现百度网盘分享链接的批量转存和自动下载。这些脚本可以根据你的具体需求进行修改和扩展,例如添加邮件通知功能、集成到NAS系统中,或者与其他自动化工具结合使用。
BaiduPCS-Go项目仍在持续开发中,未来可能会添加更多有用的功能。建议定期查看项目的版本更新部分,以获取最新的功能和改进信息。
如果你有任何问题或建议,欢迎通过项目的交流反馈渠道提出。祝你使用愉快!
相关资源
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



