Baidu Netdisk client with CLI commands and a matching FastAPI Web UI.
Project description
pypang
基于百度网盘开放平台接口实现,百度网盘命令行客户端,参考了 bypy 的使用习惯,并补充了本地 Web UI 与纯 CLI 两套操作方式。
项目目标:
- 适配最新百度网盘开放平台接口
- 默认兼容
bypy的授权配置与应用目录 - 支持无图形界面的服务器环境
- 同时提供 Web UI 和 CLI 上传下载能力
功能
- OAuth 授权,默认使用
redirect_uri=oob - 兼容
bypy默认应用信息 - 自动读取根目录
config.json作为自定义配置 - 支持多配置下分别保存 token
- Web UI 文件浏览、上传、下载、重命名、移动、删除、建目录
- CLI 文件浏览、上传、下载、重命名、移动、删除、建目录
- 支持服务器端口映射后远程访问 Web UI
- Web UI 传输监控支持
进行中 / 等待中 / 已完成三栏显示
默认行为
如果没有 config.json:
- 默认使用
bypy的应用配置 - 默认应用目录为
/apps/bypy - 默认授权方式为
oob - 默认按无会员档位运行;上传分片默认跟随账号身份自动取最高可用值,CLI/Web 下载并发默认取
8
如果存在 config.json:
- 会自动解析其中的应用配置
- Web UI 下拉列表中可切换预设
- 每套配置分别保存自己的 token
支持的 config.json 格式
多应用格式:
{
"default": "myapp",
"apps": [
{
"id": "bypy",
"label": "bypy",
"app_key": "q8WE4EpCsau1oS0MplgMKNBn",
"secret_key": "PA4MhwB5RE7DacKtoP2i8ikCnNzAqYTD",
"app_name": "bypy",
"app_root": "/apps/bypy"
},
{
"id": "myapp",
"label": "我的应用",
"app_key": "your-app-key",
"secret_key": "your-secret-key",
"app_name": "myapp",
"app_root": "/apps/myapp"
}
]
}
安装
从 PyPI 安装
pip install pypang
安装后可直接使用:
pypang serve
从源码安装
python -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
首次配置
通过 pip install pypang 安装后,不需要修改 site-packages 里的文件。
推荐方式是直接使用命令写入本地运行配置:
pypang config set --app-key your-app-key --secret-key your-secret-key --app-name myapp --app-root /apps/myapp --redirect-uri oob
配置会保存到本地运行状态文件中,默认路径为:
.runtime/state.json
如果你更习惯使用 config.json,可以在当前运行目录手动放置一个文件,例如:
{
"default": "myapp",
"apps": [
{
"id": "myapp",
"label": "我的应用",
"app_key": "your-app-key",
"secret_key": "your-secret-key",
"app_name": "myapp",
"app_root": "/apps/myapp"
}
]
}
程序会优先读取当前工作目录下的 config.json。如果需要指定其他位置,可使用环境变量:
$env:BAIDUPANWEB_LEGACY_CONFIG = "D:\\path\\to\\config.json"
CLI 使用
1. 查看当前配置
pypang config show
2. 设置配置
默认走 OOB 授权:
pypang config set --app-name bypy --app-root /apps/bypy --redirect-uri oob
如果只想修改监听地址而不影响 token:
pypang config set --listen-host 0.0.0.0 --listen-port 8080
如果需要启用会员能力对应的更大分片和更高下载并发,可额外设置:
pypang config set --membership-tier vip --upload-chunk-mb 16 --cli-download-workers 4 --web-download-workers 4
3. 获取授权链接
pypang auth url
浏览器打开后,百度会回到默认成功页:
http://openapi.baidu.com/oauth/2.0/login_success
从页面中复制 code,再执行:
pypang auth code <code>
4. 常用 CLI 命令
查看用户信息:
pypang whoami
查看容量:
pypang quota
列出目录:
pypang ls /
创建目录:
pypang mkdir /apps/bypy/docs
上传文件:
pypang put .\local.txt /apps/bypy/docs/remote.txt
上传目标既可以是服务器文件,也可以是服务器目录:
pypang put .\local.txt /apps/bypy/docs/
pypang put .\local.txt /apps/bypy/docs/remote.txt
下载文件:
pypang get /apps/bypy/docs/remote.txt .\downloads\
下载命令默认支持断点续传;如果希望强制重新开始,可追加 --no-resume。
重命名:
pypang rename /apps/bypy/docs/remote.txt archive.txt
移动:
pypang mv /apps/bypy/docs/archive.txt /apps/bypy/history
删除:
pypang rm /apps/bypy/history/archive.txt
命令别名:
ls=listput=uploadget=downloadmv=moverm=deletewhoami=info
Web UI 使用
本机启动
pypang serve
或指定地址:
pypang serve --host 127.0.0.1 --port 8080
浏览器访问:
http://127.0.0.1:8080
无图形界面服务器启动
服务器上可直接对外监听:
pypang config set --listen-host 0.0.0.0 --listen-port 8080
pypang serve
然后通过公网 IP、内网穿透、反向代理或 SSH 端口转发访问:
http://服务器地址:8080
适合以下场景:
- Linux/Windows 无桌面服务器
- 家庭 NAS
- 云服务器
- 通过端口映射远程进入 Web UI 后上传下载文件
Web UI 授权流程
当前默认使用 oob,所以即使服务器没有桌面环境也能工作:
- 从本地浏览器打开 Web UI
- 点击授权按钮
- 在百度返回页复制
code - 回到 Web UI 手动提交
code - 授权完成后即可在网页中上传、下载和管理文件
主要接口适配
上传流程按最新文档实现:
locateupload -> precreate -> superfile2 -> create
下载流程按最新文档实现:
filemetas(dlink=1) -> dlink + access_token + User-Agent
命令行下载和 Web UI 的“保存到服务器”默认会在本地生成 .part 临时文件,并基于 Range 请求自动续传未完成部分。
当前下载恢复与校验行为:
- 下载任务开始前会先扫描目标目录,检查已有正式文件和
.part文件 - 如果本地文件大小已满足远端大小,会优先做校验;校验通过则直接复用,不重复下载
- 如果校验失败,会删除错误文件后重新下载
- 远端
md5合法时使用 MD5 校验;如果远端未提供合法md5,则退回到大小校验 - Web UI 的“传输”卡片会显示
进行中 / 等待中 / 已完成三栏;校验阶段会显示为校验中
后端日志默认会输出下载与校验关键阶段,例如:
- 下载任务开始
- 文件开始下载
- 发现可复用文件并开始校验
- MD5 校验通过或失败
- 文件完成或任务失败
项目结构
pypang/
app.py
cli.py
client.py
config.py
storage.py
static/
templates/
app.list.json
config.json
README.md
requirements.txt
参考
- bypy: https://github.com/houtianze/bypy
- 百度网盘开放平台文档索引: https://pan.baidu.com/union/doc/nksg0sbfs
- OAuth 授权码模式: https://pan.baidu.com/union/doc/al0rwqzzl
- 文件列表: https://pan.baidu.com/union/doc/nksg0sat9
- 文件信息: https://pan.baidu.com/union/doc/Fksg0sbcm
- 上传域名: https://pan.baidu.com/union/doc/Mlvw5hfnr
- 预上传: https://pan.baidu.com/union/doc/3ksg0s9r7
- 分片上传: https://pan.baidu.com/union/doc/nksg0s9vi
- 创建文件: https://pan.baidu.com/union/doc/rksg0sa17
- 下载文件: https://pan.baidu.com/union/doc/pkuo3snyp
- 管理文件: https://pan.baidu.com/union/doc/mksg0s9l4
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypang-0.1.1.tar.gz.
File metadata
- Download URL: pypang-0.1.1.tar.gz
- Upload date:
- Size: 58.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06387da99bf687e64e4227e95c2f38e34194d7b5b5db93350d778e6bda8ce698
|
|
| MD5 |
1c403ef3034be48ce6c84169301f4074
|
|
| BLAKE2b-256 |
086e98c14ef6e11707bc97858062eea2b7f54aef6a082affe5a22cb92bda8b63
|
File details
Details for the file pypang-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pypang-0.1.1-py3-none-any.whl
- Upload date:
- Size: 57.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89bb9e9dc4f5f01982690ca5c66eef5a290cc3f69c7ba698d76af8172969e88d
|
|
| MD5 |
c14895a5c865066aad5359745c8c24b9
|
|
| BLAKE2b-256 |
64076b02d51120f349f40ff6784ac5a37de2a9419b3dbcd082e8949076c52d4c
|