master
- 完整 skill 本体:SKILL.md / README.md / manifest.json / config.json - scripts/123yunpan.py:零依赖 CLI(含空间双配额、QPS 限流、零依赖 XLSX) - references/ 参考资料 - 排除 .workbuddy/ 开发目录与 __pycache__
123云盘 (123 Cloud Drive) CLI
🚀 123云盘开放平台 API 命令行工具 v1.3.0
一站式管理 123 云盘:文件管理、上传下载、分享链接、离线下载、直链、图床、视频转码、专业/标准双空间配额报告。纯 Python 标准库实现,零依赖(Excel 导出也不需要 openpyxl)。
📋 功能一览
| 分类 | 功能 |
|---|---|
| 📁 文件管理 | 浏览、创建目录、重命名、移动、复制、回收站、下载 |
| 🔎 递归搜索 | 跨文件夹深度搜索文件名,支持自定义搜索深度 |
| ⬆️ 上传 | V2 分片上传(>100MB 自动分片)、单步上传、秒传检测 |
| 🔗 分享 | 普通分享 / 付费分享 / 批量创建,支持密码、有效期、流量控制 |
| 📊 分享统计 | 一键查看分享总数、预览/下载/转存次数、流量 Top N |
| 📄 分享导出 | 批量创建分享,超过 10 个链接自动生成三列 Excel(文件名称 / 链接 / 路径) |
| 🗑️ 分享管理 | 批量删除分享链接 / 断点续跑 |
| 📥 离线下载 | HTTP / FTP / 磁力链接离线下载 |
| 🌐 直链 | 启用直链、短直链生成、IP 白名单、缓存刷新、流量日志 |
| 🖼️ 图床 | 图片存储、移动、复制、离线迁移 |
| 🎬 视频转码 | 多分辨率转码、MP4/M3U8 下载 |
| 🔒 保险箱 | 解锁保险箱 |
| ⚙️ 配置管理 | 配置查看、Token 有效性验证 |
| 🌲 目录树 | 文件夹树形结构展示 |
| ⬇️ 批量下载 | 多文件并行下载 |
| 📊 存储分析 | 按文件夹统计空间占用 |
| 📤 分享导出 | 分享链接批量导出 Excel |
| 🔄 配置迁移 | 配置导入/导出 |
| 💾 空间报告 | 专业空间 / 标准空间双配额明细、使用率预警、清理倒计时 |
🧮 空间规则:专业空间 / 标准空间
官方 2026-09-24 公告后,账号空间拆分为两套独立配额:
| 空间 | 存放内容 | 超额后果 |
|---|---|---|
| 专业空间 | 本人持有的文件、≥10GB 文件、直链文件、转码文件、图床文件 | 阻断开放平台的上传 / 离线下载 / 转码 |
| 标准空间 | 转存的文件(<10GB);重复文件与回收站文件不计入 | 同样阻断上传 |
python3 scripts/123yunpan.py space
- 使用率 ≥ 90% → 红色预警
- 专业空间剩余天数 > 0 → 打印清理倒计时(超出后配额不可恢复)
config check与upload执行前自动预检,专业空间已满会直接给出阻断提示
🚀 快速开始
1. 获取凭证
- 访问 123pan.com/member 购买开发者权益包
- 通过站内信获取
client_id和client_secret
2. 配置
# 一键配置(推荐)
python3 scripts/123yunpan.py setup --client-id YOUR_ID --client-secret YOUR_SECRET
# 验证配置是否有效
python3 scripts/123yunpan.py config check
输出示例:
🔍 正在验证配置...
✅ Client ID: 已配置
✅ Client Secret: 已配置
✅ Access Token: 已配置
✅ Token 有效!
{
"用户ID": 1812749510,
"昵称": "暖心向阳335",
"VIP": "是",
"总容量": "21.56 TB",
"已用": "859.33 GB"
}
📖 完整命令参考
文件管理
# 浏览文件夹
python3 scripts/123yunpan.py file list --parent-id 0 --limit 100
# 只看回收站中的文件
python3 scripts/123yunpan.py file list --parent-id 0 --trashed
# 同时显示回收站文件(带 🗑️ 标记)
python3 scripts/123yunpan.py file list --parent-id 0 --show-trashed
# 跨文件夹递归搜索(最大深度 5 层)
python3 scripts/123yunpan.py file search "Photoshop" --parent-id 27172609 --max-depth 3
# 存储报告(按文件夹统计空间占用)
python3 scripts/123yunpan.py file storage-report --parent-id 0
# 获取文件详情
python3 scripts/123yunpan.py file detail --file-id 12345
# 批量获取文件详情
python3 scripts/123yunpan.py file details-multi --file-ids "123,456,789"
# 创建文件夹
python3 scripts/123yunpan.py file mkdir --name "新文件夹" --parent-id 0
# 目录树展示
python3 scripts/123yunpan.py file tree --parent-id 0
# 重命名
python3 scripts/123yunpan.py file rename --file-id 12345 --new-name "新名称.txt"
# 批量重命名
python3 scripts/123yunpan.py file rename-batch --file-ids 123 456 --new-names "a.txt" "b.txt"
# 移动文件
python3 scripts/123yunpan.py file move --file-ids "123,456" --target-parent-id 0
# 复制文件
python3 scripts/123yunpan.py file copy --file-id 12345 --target-parent-id 0
# 移入回收站
python3 scripts/123yunpan.py file trash --file-ids "123,456"
# 从回收站恢复
python3 scripts/123yunpan.py file recover --file-ids "123,456"
# 下载文件
python3 scripts/123yunpan.py file download --file-id 12345 --output /path/to/save
# 批量下载文件
python3 scripts/123yunpan.py file download-batch --file-ids "123,456,789" --output /path/to/save
上传
# 上传文件(自动选择单次/分片上传,自动检测秒传)
python3 scripts/123yunpan.py upload --file /path/to/file.txt --parent-id 0
# 上传并指定文件名
python3 scripts/123yunpan.py upload --file /path/to/file.txt --parent-id 0 --filename "自定义名.zip"
# 重复文件处理:1=重命名 2=覆盖(默认不传=覆盖)
python3 scripts/123yunpan.py upload --file /path/to/file.txt --parent-id 0 --duplicate 2
秒传时会显示:⚡ 秒传成功!文件已存在,跳过上传 (fileID: 12345)
分享管理
# 创建单个分享
python3 scripts/123yunpan.py share create --name "分享名" --file-ids "123,456" --expire 0
# 分享导出(批量导出分享链接到 Excel)
python3 scripts/123yunpan.py share export --output shares.xlsx
# ⭐ 查看空间占用(专业空间 / 标准空间)
python3 scripts/123yunpan.py space
# ⭐ 批量创建分享(递归遍历文件夹,导出 Excel)
python3 scripts/123yunpan.py share create-batch --parent-id 27172609 --expire 0 -o result.xlsx
# 批量创建分享(导出 JSON)
python3 scripts/123yunpan.py share create-batch --parent-id 27172609 -o result.json
# 超过 10 个链接自动生成 Excel;可用以下参数调整
python3 scripts/123yunpan.py share create-batch --parent-id 27172609 --excel-threshold 50
python3 scripts/123yunpan.py share create-batch --parent-id 27172609 --no-excel
python3 scripts/123yunpan.py share create-batch --parent-id 27172609 --resume # 断点续跑
# 列出分享
python3 scripts/123yunpan.py share list --limit 10
python3 scripts/123yunpan.py share list --all-pages
# ⭐ 分享统计(查看下载量 Top N)
python3 scripts/123yunpan.py share stats --top 10
# 更新分享设置
python3 scripts/123yunpan.py share update --share-ids "1,2" --traffic-switch 2
# 批量删除分享
python3 scripts/123yunpan.py share delete-batch --share-ids "1,2,3"
# 删除所有分享(跳过确认)
python3 scripts/123yunpan.py share delete-batch --all -y
# 创建付费分享
python3 scripts/123yunpan.py share pay-create --name "付费资源" --file-ids "123,456" --amount 10
# 列出付费分享
python3 scripts/123yunpan.py share pay-list --limit 10
直链管理
# 启用文件直链
python3 scripts/123yunpan.py direct-link enable --file-id 12345
# 获取完整直链
python3 scripts/123yunpan.py direct-link url --file-id 12345
# ⭐ 生成短直链(更隐私,不暴露文件名)
python3 scripts/123yunpan.py direct-link short-url --file-id 12345
# 输出: https://1812749510.v.123pan.cn/1812749510/12345
# 刷新直链缓存
python3 scripts/123yunpan.py direct-link cache-refresh --file-id 12345
# 禁用直链
python3 scripts/123yunpan.py direct-link disable --file-id 12345
# IP 白名单管理
python3 scripts/123yunpan.py direct-link ip-list
python3 scripts/123yunpan.py direct-link ip-switch --switch 1
python3 scripts/123yunpan.py direct-link ip-update --ips "1.1.1.1" "2.2.2.2"
# 流量日志
python3 scripts/123yunpan.py direct-link traffic-logs --file-id 12345
离线下载
# 创建离线下载任务
python3 scripts/123yunpan.py offline create --url "https://example.com/file.zip" --parent-id 0
# 查询下载进度
python3 scripts/123yunpan.py offline progress --task-id abc123
图床 (OSS)
python3 scripts/123yunpan.py oss list --parent-id 0 --limit 100
python3 scripts/123yunpan.py oss detail --file-id 12345
python3 scripts/123yunpan.py oss delete --file-id 12345
python3 scripts/123yunpan.py oss move --file-id 12345 --target-parent-id 0
python3 scripts/123yunpan.py oss copy --file-ids "123,456" --target-parent-id 0
视频转码
python3 scripts/123yunpan.py transcode list --parent-file-id 0 --limit 100
python3 scripts/123yunpan.py transcode resolutions --file-id 12345
python3 scripts/123yunpan.py transcode transcode --file-id 12345 --resolution 1080p
python3 scripts/123yunpan.py transcode download --file-id 12345 --output /path/
python3 scripts/123yunpan.py transcode download-m3u8 --file-id 12345 --output /path/
其他
# 查看配置
python3 scripts/123yunpan.py config
# 验证配置有效性
python3 scripts/123yunpan.py config check
# 配置导出
python3 scripts/123yunpan.py config export --output config.json
# 配置导入
python3 scripts/123yunpan.py config import --file config.json
# 获取用户信息
python3 scripts/123yunpan.py user-info
# 解锁保险箱
python3 scripts/123yunpan.py safebox unlock --password "your_password"
# ⭐ 空间占用报告(专业空间 + 标准空间)
python3 scripts/123yunpan.py space
📄 分享 Excel 列结构
share create-batch 在有效链接数 > 10 时自动生成 Excel,固定三列:
| 列名 | 说明 | 示例 |
|---|---|---|
| 文件名称 | 去分类前缀、去扩展名 | Cinema 4D R20 |
| 链接 | 分享/直链 URL,可点击超链接 | https://www.123pan.com/s/JyAKVv-o6bI |
| 路径 | 云盘内完整相对路径(含文件名) | 软件/office/离线安装包/2021/ProPlus2021Retail.img |
名称解析规则:Cinema 4D/Cinema 4D R20.zip → 名称 Cinema 4D R20、路径 Cinema 4D/Cinema 4D R20.zip。
xlsx 由
zipfile+ 手写 OOXML 生成,不需要安装 openpyxl。
⚡ 限流保护
CLI 内置端点级 QPS 表,自动限速,无需手动 sleep:
| 端点 | QPS |
|---|---|
/api/v2/file/list |
1.5(最严格) |
/api/v1/user/info |
10 |
/api/v1/access_token |
10 |
/api/v1/share/create |
3 |
- 429 / 5xx → 指数退避重试(最多 4 次)
- 401 → 自动刷新 Token 后重试一次
- 错误码会翻译为「原因 + 处置建议」再打印,不会只丢裸码
⚠️ 注意事项
| 项目 | 说明 |
|---|---|
| 文件名限制 | 不能包含 `\"/:*? |
| 上传限制 | 单文件最大 10GB(API 限制) |
| 分享有效期 | 仅支持 0(永久)/ 1 / 7 / 30 天 |
| 分享名称长度 | 付费分享要求 < 35 字符,CLI 自动截断 |
| 多 ID 写法 | --file-ids / --share-ids 只接受一个值,多个 ID 要写成 --file-ids "1,2,3" |
--json 位置 |
全局选项,必须写在子命令之前(--json config check) |
| transcode 参数 | 用 --parent-file-id,与 file 系列的 --parent-id 不同 |
| 空间双配额 | 专业空间 / 标准空间独立,任一超额都阻断上传,先看 space |
| 审核驳回文件 | status > 100 无法分享,批量分享时自动剔除 |
| Token 刷新 | 过期时自动刷新,无需手动处理 |
fileIDList 格式 |
必须是逗号分隔的字符串("123,456"),不是数组 |
| 分享链接格式 | https://www.123pan.com/s/{shareKey} |
| 回收站 | v2 API 默认包含回收站文件,用 --trashed / --show-trashed 过滤 |
| Excel 阈值 | 默认超过 10 个链接自动生成,可用 --excel-threshold / --no-excel 调整 |
--no-color |
禁用彩色输出,适用于日志记录和管道操作 |
--json |
所有命令支持 --json 输出 JSON 格式,便于脚本解析 |
📁 文件结构
123yunpan/
├── SKILL.md # AI 技能文档(完整 API 参考,含 Changelog)
├── README.md # 用户文档(本文件)
├── manifest.json # 技能清单(命令 / 参数 / 输出字段契约)
├── scripts/
│ └── 123yunpan.py # CLI 主程序(纯 Python 标准库)
└── references/
├── bulk-operations.md # 批量操作指南
└── competitor-upload-patterns.md # 上传模式参考
📚 相关链接
Languages
Python
100%