基于 BaiduPCS-Py 的百度网盘文件下载工具,支持批量下载、进度显示和断点续传。
pip3 install BaiduPCS-Py
首先编辑 config.py 文件,配置百度网盘和MinIO信息:
# 百度网盘配置
BAIDU_CONFIG = {
'bduss': 'your_bduss_here',
'cookies': 'your_cookies_here',
'download_dir': './downloads',
'target_dirs': ['/其他'], # 要下载的目录
'max_workers': 3,
'chunk_size': 1024 * 1024,
'max_retries': 3,
'max_file_size': 100 * 1024 * 1024
}
# MinIO配置
MINIO_CONFIG = {
'endpoint': 'your-minio-server:9000',
'access_key': 'your-access-key',
'secret_key': 'your-secret-key',
'bucket_name': 'your-bucket-name',
'secure': False,
'mc_alias': 'myminio'
}
# 推荐:使用统一的流水线脚本
python3 run_pipeline.py
python3 complete_baidu_download.py
python3 upload_to_minio.py
python3 baidu_to_minio_pipeline.py
from baidu_to_minio_pipeline import BaiduToMinIOPipeline
# 创建流水线实例
pipeline = BaiduToMinIOPipeline()
# 运行完整流水线
success = pipeline.run_full_pipeline()
if success:
print("流水线执行成功!")
else:
print("流水线执行失败!")
重要:BaiduPCS-Py 不支持直接账号登录,需要手动获取 COOKIES
list?... 请求Cookie 行BDUSS=your_bduss_value; STOKEN=your_stoken_value; PTOKEN=your_ptoken_value; ...
from baidupcs_py.baidupcs import BaiduPCSApi
# 创建 API 实例
api = BaiduPCSApi(bduss="", cookies="your_cookies_here")
# 获取用户信息
user_info = api.user_info()
print(f"用户ID: {user_info.get('uk')}")
# 列出文件
files = api.list("/")
for file in files:
print(f"{file.path} - {file.size if not file.is_dir else 'DIR'}")
# 获取下载链接
download_links = api.download_link("/path/to/file")
print(f"下载链接: {download_links[0]}")
baidu-downloader/ ├── config.py # 统一配置文件 ├── complete_baidu_download.py # 百度网盘下载脚本 ├── baidu_to_minio_pipeline.py # 百度网盘到MinIO完整流水线 ├── run_pipeline.py # 流水线运行脚本(推荐使用) ├── upload_to_minio.py # MinIO上传脚本 ├── minio_uploader.py # MinIO上传工具类 ├── minio_config.py # MinIO配置文件(已弃用,使用config.py) ├── performance_test.py # MinIO性能测试脚本 ├── MINIO_SETUP.md # MinIO工具安装配置指南 ├── requirements.txt # Python依赖 └── README.md # 项目说明
baidu_download_example.py - 完整的下载示例
complete_baidu_download.py - 高级下载工具
test_baidupcs_api.py - API 测试脚本
minio_uploader.py - MinIO上传工具
minio_config.py - MinIO配置管理
performance_test.py - 性能测试脚本
# 创建 API 实例
api = BaiduPCSApi(bduss="", cookies=cookies)
# 获取用户信息
user_info = api.user_info()
# 获取配额信息
quota = api.quota()
# 列出文件
files = api.list("/path")
# 获取文件元信息
meta = api.meta("/path/to/file")
# 检查文件是否存在
exists = api.exists("/path/to/file")
# 检查是否为目录
is_dir = api.is_dir("/path")
# 获取下载链接(推荐方法)
download_links = api.download_link("/path/to/file")
# 获取文件流
file_stream = api.file_stream("/path/to/file")
# 搜索文件
results = api.search("keyword")
# 创建目录
api.makedir("/new/directory")
# 删除文件
api.remove("/path/to/file")
# 重命名文件
api.rename("/old/path", "/new/path")
def download_with_direct_link(api, remote_path, local_path):
# 获取下载链接
links = api.download_link(remote_path)
if links:
download_url = links[0] if isinstance(links, list) else links
# 使用 requests 下载
response = requests.get(download_url, stream=True)
with open(local_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
def download_with_stream(api, remote_path, local_path):
# 获取文件流
file_stream = api.file_stream(remote_path)
with open(local_path, 'wb') as f:
for chunk in file_stream:
if chunk:
f.write(chunk)
bduss must be set
无法获取下载链接
下载失败
认证失败
test_baidupcs_api.py 检查 API 可用性api.user_info() 验证认证状态api.list("/") 测试基本功能欢迎提交 Issue 和 Pull Request 来改进这个项目!
本项目仅供学习和研究使用,请遵守百度网盘的服务条款。
免责声明:本项目使用非官方 API,存在一定风险,请谨慎使用。作者不承担任何因使用本项目而产生的损失。