Skip to main content

Baidu Netdisk client with CLI commands and a matching FastAPI Web UI.

Project description

pypang

pypang 是一个基于百度网盘开放平台接口的命令行客户端,同时提供本地 Web UI。它参考了 bypy 的使用习惯,默认兼容 bypy 的应用目录 /apps/bypy

特性

  • CLI 和 Web UI 两套使用方式
  • OAuth 授权,默认支持 redirect_uri=oob
  • 文件浏览、上传、下载、重命名、移动、删除、建目录
  • 多配置分别保存 token,可读取当前目录的 config.json
  • Bash 下支持命令、选项和网盘路径 Tab 补全(需手动开启)
  • CLI/Web 下载支持断点续传和校验
  • 单文件超过百度开放平台上限时自动按卷上传

快速开始

安装:

pip install pypang

查看当前配置:

pypang config show

如果使用默认 bypy 配置,一般可以直接获取授权链接:

pypang auth url

浏览器打开授权链接后,从百度返回页复制 code,再执行:

pypang auth code <code>

列出网盘应用目录:

pypang ls /

启动 Web UI:

pypang serve

浏览器访问:

http://127.0.0.1:8080

安装

PyPI 安装

pip install pypang

源码安装

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .

配置与授权

默认配置

没有额外配置时,pypang 会使用内置的 bypy 应用配置:

  • 应用目录:/apps/bypy
  • 授权方式:oob
  • 默认按普通用户档位运行
  • CLI/Web 下载并发默认取 8
  • 单文件下载默认开启分段并发,默认连接数为 4

运行状态默认保存在:

~/.pypang/state.json

临时文件默认保存在:

~/.pypang/tmp

修改配置

设置应用信息:

pypang config set --app-key your-app-key --secret-key your-secret-key --app-name myapp --app-root /apps/myapp --redirect-uri oob

只修改 Web UI 监听地址,不影响 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

调整单文件并发下载:

pypang config set --single-file-parallel-enabled --single-file-download-workers 4

调整网盘路径补全缓存时间,单位为秒,默认 60;设为 0 可关闭缓存:

pypang config set --completion-cache-seconds 120

config.json

如果当前目录存在 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"
    }
  ]
}

指定其他 config.json 路径:

export BAIDUPANWEB_LEGACY_CONFIG=/path/to/config.json

Bash 补全

pypang 支持 Bash 下的命令、选项和网盘路径 Tab 补全。远端目录候选会追加 /,可以继续进入下一层;远端目录列表默认缓存 60 秒,避免连续按 Tab 时反复请求 API。

启用用户级 Bash 补全:

pypang open completion

它会写入:

~/.pypang/completion.bash
~/.bashrc

新开的 Bash 会自动生效。当前 Bash 想立即生效,可执行:

source ~/.bashrc

关闭用户级 Bash 补全:

pypang close completion

当前 Bash 想立即取消,可执行:

complete -r pypang

临时启用,不修改 ~/.bashrc

source <(pypang completion bash)

注意:这是 Bash 补全,不会在 dashfish 等非 Bash shell 中生效。

CLI 常用命令

查看账号信息和容量:

pypang whoami
pypang quota

列目录和建目录:

pypang ls /
pypang mkdir /docs

上传文件:

pypang put ./local.txt /docs/remote.txt

上传目标也可以是目录:

pypang put ./local.txt /docs/

下载文件:

pypang get /docs/remote.txt ./downloads/

强制重新下载,不使用断点续传:

pypang get /docs/remote.txt ./downloads/ --no-resume

临时关闭单文件分段并发:

pypang get /docs/remote.txt ./downloads/ --no-single-file-parallel

重命名、移动、删除:

pypang rename /docs/remote.txt archive.txt
pypang mv /docs/archive.txt /history
pypang rm /history/archive.txt

命令别名:

  • ls = list
  • put = upload
  • get = download
  • mv = move
  • rm = delete
  • whoami = info

Web UI

本机启动:

pypang serve

指定地址:

pypang serve --host 127.0.0.1 --port 8080

无桌面服务器可对外监听:

pypang config set --listen-host 0.0.0.0 --listen-port 8080
pypang serve

然后通过公网 IP、内网穿透、反向代理或 SSH 端口转发访问:

http://服务器地址:8080

Web UI 授权流程:

  1. 打开 Web UI
  2. 点击授权按钮
  3. 在百度返回页复制 code
  4. 回到 Web UI 手动提交 code
  5. 授权完成后即可上传、下载和管理文件

上传与下载行为

下载

下载流程:

filemetas(dlink=1) -> dlink + access_token + User-Agent

CLI 下载和 Web UI 的“保存到服务器”会生成 .part 临时文件,并基于 Range 请求自动续传未完成部分。

恢复与校验规则:

  • 下载前会扫描目标目录,检查已有正式文件和 .part 文件
  • 本地文件大小已满足远端大小时,优先校验并复用
  • 校验失败会删除错误文件后重新下载
  • 远端 md5 合法时使用 MD5 校验,否则退回到大小校验
  • Web UI 传输卡片会显示 进行中 / 等待中 / 已完成

上传

上传流程:

locateupload -> precreate -> superfile2 -> create

单文件未超过平台上限时按普通流程上传。超过当前账号档位允许的单文件上限时,会在远端创建 原文件名.parts 目录并按卷上传。

多卷上传规则:

  • 多卷命名为 原文件名.001原文件名.002原文件名.003
  • 多卷默认并发上传 4 个卷
  • 分卷预计算保持单线程顺序进行
  • 多卷目录会额外写入 extract.sh,下载后可用它合并分卷
  • 单卷大小默认跟随账号身份:普通用户 4GB、普通会员 10GB、超级会员 20GB
  • 可用 --upload-volume-gb 手动设置单卷大小,实际值会限制在当前账号上限内

设置单卷大小:

pypang config set --upload-volume-gb 8

项目结构

pypang/
  app.py
  cli.py
  client.py
  completion.py
  config.py
  storage.py
  static/
  templates/
app.list.json
README.md
requirements.txt

参考

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypang-0.3.0.tar.gz (78.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypang-0.3.0-py3-none-any.whl (77.3 kB view details)

Uploaded Python 3

File details

Details for the file pypang-0.3.0.tar.gz.

File metadata

  • Download URL: pypang-0.3.0.tar.gz
  • Upload date:
  • Size: 78.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypang-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bc13b6d62a461f4f52877a26d7238db44f90a9cee9ce0ed1510500660dc93db7
MD5 146d0118398c52991352c5b2fcd37250
BLAKE2b-256 5c43430fe4ace700a72073f6caf226d9a53b17b2d7f1d4e6f175cf6435f8363f

See more details on using hashes here.

File details

Details for the file pypang-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pypang-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 77.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypang-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cc6ed447d53a02233bae58b7bd89cad6836bd1f1fea63eb252b673d5f9d95e7
MD5 8f809f8b1a06c10a21f2cefdec6bee4d
BLAKE2b-256 5c43886e9f611cc1939c7bb72aff0e6f284444728158a65e4a8e919dfa008009

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page