Skip to content

zhangjingwei/kuake_cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kuake CLI

License

夸克网盘文件管理 CLI 工具。

🌟 开源说明

本项目采用 AGPL-3.0 许可证,完全开源。欢迎贡献代码、报告问题或提出建议。

重要提示:本项目禁止商业使用。任何商业使用(包括但不限于 SaaS 服务、商业产品集成等)必须获得明确授权。

  • 📦 源代码:所有源代码已公开,可在 GitHub 仓库中查看和下载
  • 🔧 构建:使用 build.sh 脚本可以自行编译各平台的二进制文件
  • 🤝 贡献:欢迎提交 Pull Request 或 Issue
  • 📝 文档:项目文档和代码注释持续完善中

📋 目录

✨ 功能特性

  • 用户信息: 获取用户信息
  • 文件列表: 列出夸克网盘指定目录下的所有文件和子目录
  • 文件信息: 获取文件或目录的详细信息(大小、修改时间、路径等)
  • 下载链接: 获取文件的下载链接
  • 文件上传: 将本地文件上传到夸克网盘(支持大文件分片上传)
  • 文件夹操作: 创建文件夹
  • 文件操作: 移动、复制、重命名文件或目录
  • 文件删除: 删除夸克网盘中的文件或目录
  • 分享功能: 创建分享链接,支持设置有效期和提取码
  • CLI 工具: 提供命令行工具,方便其他进程调用

🔧 系统要求

  • Linux / macOS / Windows 操作系统
  • 有效的夸克网盘账号和 Cookie

📦 安装

方式一:从源码构建

系统要求

  • Go 1.18 或更高版本
  • Git

构建步骤

# 1. 克隆仓库
git clone https://github.com/zhangjingwei/kuake_sdk.git
cd kuake_sdk

# 2. 运行构建脚本
chmod +x build.sh
./build.sh

# 3. 构建完成后,二进制文件在 dist/ 目录中

方式二:下载预编译二进制文件

Releases 页面下载对应平台的二进制文件:

文件名格式:kuake-{version}-{os}-{arch}kuake-{version}-{os}-{arch}.exe(Windows)

  • Linux: kuake-{version}-linux-amd64
  • macOS: kuake-{version}-darwin-amd64
  • Windows: kuake-{version}-windows-amd64.exe

安装步骤

Linux

# 1. 下载二进制文件
# 方式A:下载最新版本
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-linux-amd64

# 方式B:下载指定版本
# wget https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-linux-amd64

# 2. 添加执行权限
chmod +x kuake-v1.3.1-linux-amd64

# 3. 下载配置文件示例(可选)
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json

# 4. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值

# 5. 使用方式(方式A:直接使用)
./kuake-v1.3.1-linux-amd64 user

# 5. 使用方式(方式B:移动到 PATH,推荐)
sudo mv kuake-v1.3.1-linux-amd64 /usr/local/bin/kuake
kuake user

macOS

# 1. 下载二进制文件
# 方式A:下载最新版本
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-darwin-amd64
# 或使用 curl
curl -L -o kuake-v1.3.1-darwin-amd64 https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-darwin-amd64

# 方式B:下载指定版本
# wget https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-darwin-amd64

# 2. 添加执行权限
chmod +x kuake-v1.3.1-darwin-amd64

# 3. 下载配置文件示例(可选)
wget https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json
# 或使用 curl
curl -L -o config.json https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json

# 4. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值

# 5. 使用方式(方式A:直接使用)
./kuake-v1.3.1-darwin-amd64 user

# 5. 使用方式(方式B:移动到 PATH,推荐)
sudo mv kuake-v1.3.1-darwin-amd64 /usr/local/bin/kuake
kuake user

Windows

# 1. 下载二进制文件
# 方式A:下载最新版本
Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/kuake-v1.3.1-windows-amd64.exe" -OutFile "kuake-v1.3.1-windows-amd64.exe"

# 方式B:下载指定版本
# Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/download/v1.3.1/kuake-v1.3.1-windows-amd64.exe" -OutFile "kuake-v1.3.1-windows-amd64.exe"

# 2. 下载配置文件示例(可选)
Invoke-WebRequest -Uri "https://github.com/zhangjingwei/kuake_sdk/releases/latest/download/config.json" -OutFile "config.json"

# 3. 编辑配置文件,填入您的 Cookie
# 使用文本编辑器打开 config.json,替换示例值

# 4. 使用方式(在 PowerShell 或 CMD 中)
.\kuake-v1.3.1-windows-amd64.exe user

🚀 快速开始

1. 创建配置文件

方式一:从 Release 下载示例配置文件

Releases 页面下载 config.json 示例文件,然后编辑填入您的 Cookie。

方式二:手动创建配置文件

创建 config.json 文件:

{
  "Quark": {
    "access_tokens": [
      "__pus=your_pus_value_here;"
    ]
  }
}

如何获取 Cookie

  1. 打开浏览器,登录夸克网盘
  2. 打开开发者工具(F12)
  3. 在 Network 标签页中,找到任意一个请求
  4. 复制请求头中的 Cookie 值(完整的 Cookie 字符串)
  5. 将 Cookie 值粘贴到 config.json 文件的 access_tokens 数组中

2. 使用 CLI 工具

# 获取用户信息
./kuake-v1.3.1-linux-amd64 user

# 上传文件
./kuake-v1.3.1-linux-amd64 upload "file.txt" "/file.txt"

# 列出目录
./kuake-v1.3.1-linux-amd64 list "/"

# 查看帮助
./kuake-v1.3.1-linux-amd64 help

⚙️ 配置说明

配置文件格式

{
  "Quark": {
    "access_tokens": [
      "__pus=your_pus_value_here;"
    ]
  }
}

重要说明:

  • access_tokens 字段是一个字符串数组,支持配置多个用户的 Cookie
  • 每个字符串存储的是完整的 Cookie 字符串(所有 cookie 用分号和空格分隔)
  • 从浏览器开发者工具中复制完整的 Cookie 值
  • 示例格式:cookie1=value1; cookie2=value2; cookie3=value3
  • 支持多用户配置(在数组中添加多个 Cookie 字符串)

安全提示:

  • config.json 文件包含敏感信息,请不要将其提交到版本控制系统
  • .gitignore 文件已包含 config.json,确保不会被意外提交
  • 请妥善保管您的 Cookie,不要分享给他人

💻 CLI 工具使用

基本用法

kuake <command> [config.json] [arguments...]

可用命令

命令 说明 示例
user 获取用户信息 kuake user
list [path] 列出目录内容(默认: "/") kuake list "/"
info <path> 获取文件/文件夹信息 kuake info "/file.txt"
download <path> 获取文件下载链接 kuake download "/file.txt"
upload <file> <dest> 上传文件(上传进度输出到 stderr) kuake upload "file.txt" "/file.txt"
create <name> <pdir> 创建文件夹(pdir 为父目录路径,根目录使用 "/") kuake create "test_folder" "/"
move <src> <dest> 移动文件/文件夹 kuake move "/file.txt" "/folder/"
copy <src> <dest> 复制文件/文件夹 kuake copy "/file.txt" "/folder/"
rename <path> <newName> 重命名文件/文件夹 kuake rename "/file.txt" "new_name.txt"
delete <path> 删除文件/文件夹 kuake delete "/file.txt"
share <path> <days> <passcode> 创建分享链接 kuake share "/file.txt" 7 "false"
help 显示帮助信息 kuake help

重要提示

  • 所有路径参数必须用引号包裹("path"
  • 根目录使用 "/" 表示
  • days 参数:0=永久,1=1天,7=7天,30=30天
  • passcode 参数:"true"=需要提取码,"false"=不需要提取码

输出格式

所有命令的结果都以 JSON 格式输出到 stdout:

成功响应

{
  "success": true,
  "code": "OK",
  "message": "操作成功",
  "data": {
    ...
  }
}

错误响应

{
  "success": false,
  "code": "ERROR_CODE",
  "message": "错误描述",
  "error": "详细错误信息"
}

注意

  • 所有结果(包括成功和错误)都以 JSON 格式输出到 stdout
  • 上传进度、帮助信息和序列化错误输出到 stderr
  • 这样设计便于其他进程解析 JSON 结果,进度信息不会混入 JSON 输出

退出码

  • 0: 操作成功
  • 1: 操作失败

使用示例

# 获取用户信息(使用默认配置文件 config.json)
./kuake-{version}-{os}-{arch} user

# 获取用户信息(使用自定义配置文件)
./kuake-{version}-{os}-{arch} user custom.json

# 列出根目录
./kuake-{version}-{os}-{arch} list "/"

# 获取文件信息
./kuake-{version}-{os}-{arch} info "/file.txt"

# 获取文件下载链接
./kuake-{version}-{os}-{arch} download "/file.txt"

# 上传文件
./kuake-{version}-{os}-{arch} upload "file.txt" "/file.txt"

# 创建文件夹(根目录)
./kuake-{version}-{os}-{arch} create "test_folder" "/"

# 移动文件
./kuake-{version}-{os}-{arch} move "/file.txt" "/folder/"

# 复制文件
./kuake-{version}-{os}-{arch} copy "/file.txt" "/folder/"

# 重命名文件
./kuake-{version}-{os}-{arch} rename "/file.txt" "new_name.txt"

# 删除文件
./kuake-{version}-{os}-{arch} delete "/file.txt"

# 创建分享链接(7天,不需要提取码)
./kuake-{version}-{os}-{arch} share "/file.txt" 7 "false"

# 创建分享链接(30天,需要提取码,使用自定义配置文件)
./kuake-{version}-{os}-{arch} share "/file.txt" 30 "true" custom.json

# 查看帮助
./kuake-{version}-{os}-{arch} help

注意

  • 示例中的 {version}{os}{arch} 需要替换为实际值
  • Windows 用户需要添加 .exe 扩展名并使用 .\ 前缀
  • 如果已添加到 PATH,可以直接使用 kuake 命令

📝 变更日志

v1.3.1 (最新更新)

🐛 Bug 修复

  1. 错误消息转义问题修复 (cmd/main.go)

    • 修复了 CLI 错误消息中双引号在 JSON 输出时被转义的问题
    • 将所有错误消息示例从双引号改为单引号,避免 JSON 编码时的转义问题
    • 影响的命令:upload, create, info, move, copy, rename, delete, download
  2. API 错误响应处理优化 (sdk/quark_client.go)

    • 改进了 HTTP 错误响应的处理逻辑
    • 现在会尝试解析 JSON 响应体,提取具体的错误消息(messageerrmsgcode 字段)
    • 如果无法解析 JSON,会返回原始响应体的前 500 个字符
    • 错误消息更加清晰,便于调试和定位问题
  3. 类型断言安全性修复 (sdk/file.go, sdk/share.go)

    • 修复了多处直接类型断言可能导致 panic 的问题
    • CreateFolderUploadFileCreateShare 等方法中添加了安全的类型检查和错误处理
    • 确保在访问 Data["fid"] 等字段前先检查响应是否成功,以及字段是否存在

✨ 新功能

  1. 完整的单元测试套件

    • 新增 sdk/config_test.go - 配置文件加载和保存的测试
    • 新增 sdk/quark_client_test.go - 客户端初始化和基础方法的测试
    • 新增 sdk/user_test.go - 用户信息获取的测试
    • 新增 sdk/file_test.go - 文件操作相关测试
    • 新增 sdk/share_test.go - 分享功能相关测试
    • 新增 sdk/TEST_README.md - 测试说明文档
  2. 测试覆盖

    • 单元测试:覆盖不依赖外部资源的函数(如 normalizeRootDir, parseCookie, ConvertToFileInfo
    • 集成测试框架:为需要网络和 API 的测试提供了测试框架(标记为 t.Skip()
    • 表驱动测试:使用表驱动测试提高测试覆盖率

🔧 代码改进

  1. 错误处理增强

    • quark_client.go 的错误处理中添加了详细的注释说明
    • 改进了错误消息的可读性和信息量
  2. 代码质量

    • 所有测试用例通过编译和运行
    • 修复了潜在的 nil 指针解引用问题
    • 提高了代码的健壮性和安全性

📚 文档更新

  1. 测试文档
    • 新增 sdk/TEST_README.md,详细说明如何运行测试
    • 包含测试用例列表、运行方法、覆盖率查看等说明

🔍 测试统计

  • 测试文件数量: 5 个
  • 测试函数数量: 30+ 个
  • 代码覆盖率: 约 5.9%(单元测试部分,集成测试被跳过)

📋 详细变更文件列表

  • sdk/quark_client.go - 错误处理优化,添加错误消息提取逻辑
  • cmd/main.go - 修复错误消息转义问题(8 处修改)
  • sdk/file.go - 修复类型断言安全问题(2 处修改)
  • sdk/share.go - 修复类型断言安全问题(1 处修改)
  • sdk/config_test.go - 新增配置文件测试
  • sdk/quark_client_test.go - 新增客户端测试
  • sdk/user_test.go - 新增用户信息测试
  • sdk/file_test.go - 新增文件操作测试
  • sdk/share_test.go - 新增分享功能测试
  • sdk/TEST_README.md - 新增测试文档

⚠️ 注意事项

  • 文件名格式:二进制文件名包含版本号,格式为 kuake-{version}-{os}-{arch}kuake-{version}-{os}-{arch}.exe(Windows)
  • 执行权限:Linux/macOS 二进制文件已包含执行权限,可直接使用 ./ 前缀执行
  • 路径参数:所有路径参数必须用引号包裹(包含空格或特殊字符时),例如:"./file name.txt""/path/to/file"
  • 配置文件
    • 默认配置文件路径:config.json(当前目录)
    • 配置文件参数是可选的,放在命令之后、其他参数之前
    • 配置文件参数必须是 .json 扩展名
    • 示例:kuake user custom.json(使用自定义配置文件)
  • 操作说明
    • 所有操作都通过夸克网盘 API 进行
    • 需要有效的 Cookie(access_token)才能使用
    • 上传操作支持进度显示(输出到 stderr)
    • 删除目录会递归删除所有子文件和子目录
  • 输出格式
    • CLI 工具的所有结果以 JSON 格式输出到 stdout,方便其他进程解析
    • 上传进度、帮助信息和序列化错误输出到 stderr,不会混入 JSON 输出
    • 成功时退出码为 0,失败时为 1

⚖️ 免责声明

重要提示:请在使用本工具前仔细阅读并完全理解本免责声明。使用本工具即表示您已阅读、理解并完全同意本免责声明的所有条款。

1. 非官方工具声明

1.1 本项目("Kuake SDK")是一个非官方的第三方开源工具,与夸克网盘("Quark")及其关联公司(统称"夸克官方")完全无关未获得夸克官方的任何授权、认可或支持

1.2 本项目不隶属于、不代表、不代表夸克官方,也不代表夸克官方的任何立场或政策。

1.3 本项目仅用于学习和研究目的,不应用于任何商业用途(除非获得明确授权)。

2. 使用风险与责任

2.1 用户自行承担所有风险:使用本工具进行任何操作时,用户完全自行承担所有风险和责任,包括但不限于:

  • 数据丢失、损坏、泄露或无法恢复
  • 账号被封禁、限制、暂停或永久禁用
  • API 调用失败、超时或返回错误结果
  • 违反夸克官方服务条款导致的任何后果
  • 违反相关法律法规导致的任何后果
  • 因使用本工具导致的任何直接或间接损失
  • 其他任何不可预见或可预见的后果

2.2 不提供任何保证:本工具按"现状"提供,不提供任何明示或暗示的保证,包括但不限于:

  • 不保证工具的功能完整性、准确性、可靠性或可用性
  • 不保证工具与夸克官方 API 的兼容性
  • 不保证工具的安全性、无错误性或无病毒性
  • 不保证工具满足用户的特定需求或期望
  • 不保证工具的持续可用性或维护

3. API 与服务条款

3.1 API 变更风险:夸克官方可能随时更改、限制或终止其 API,这可能导致本工具完全无法使用。项目维护者不保证工具的持续可用性,不承担因 API 变更导致的任何责任。

3.2 遵守服务条款:使用本工具即表示您已阅读、理解并同意遵守夸克官方的所有服务条款、使用协议、隐私政策等相关规定。

3.3 禁止滥用:用户不得使用本工具进行以下行为:

  • 违反夸克官方服务条款的任何行为
  • 滥用 API、批量操作、爬虫或自动化脚本(除非明确允许)
  • 侵犯他人知识产权、隐私权或其他合法权益
  • 传播恶意软件、病毒或有害代码
  • 进行任何非法、欺诈或不当行为
  • 干扰、破坏或攻击夸克官方的服务或系统

3.4 违规后果:任何违反服务条款的行为可能导致:

  • 账号被立即封禁或限制
  • 承担相应的法律责任
  • 项目维护者有权拒绝提供支持或服务

4. 数据安全与隐私

4.1 Cookie 安全责任

  • 用户完全自行负责 Cookie 的安全保管和使用
  • 禁止将 Cookie 分享给任何第三方
  • 禁止在公共场合、不可信环境或不安全设备上使用本工具
  • 建议定期更换 Cookie 以确保账号安全
  • 因 Cookie 泄露导致的任何损失,项目维护者不承担任何责任

4.2 数据隐私

  • 本工具不会收集、存储或传输用户的任何个人数据或文件内容
  • 所有操作均在用户本地环境执行
  • 用户自行负责其数据的安全和隐私保护

4.3 第三方服务:本工具依赖夸克官方的 API 服务,用户的数据和操作受夸克官方的隐私政策和服务条款约束

5. 知识产权

5.1 项目知识产权:本项目的源代码、文档、设计等知识产权归项目维护者所有,受 AGPL-3.0 许可证保护。

5.2 第三方知识产权:本工具可能使用或引用第三方库、API 或服务,其知识产权归各自所有者所有。

5.3 用户内容:用户通过本工具上传、存储或管理的任何内容,其知识产权归用户或相关权利人所有,项目维护者不主张任何权利

6. 法律免责

6.1 完全免责:在法律允许的最大范围内,项目维护者及其贡献者不对以下事项承担任何责任:

  • 使用本工具造成的任何直接、间接、偶然、特殊、惩罚性或后果性损失
  • 数据丢失、业务中断、利润损失、商誉损失或其他经济损失
  • 因使用本工具导致的任何法律纠纷、诉讼或索赔
  • 因 API 变更、服务中断或工具失效导致的任何损失
  • 因违反服务条款、法律法规导致的任何后果
  • 因安全漏洞、恶意攻击或技术故障导致的任何损失

6.2 责任限制:即使项目维护者已被告知可能发生此类损失,也不承担任何责任。

6.3 适用法律:本免责声明受中华人民共和国法律管辖。如发生争议,应通过友好协商解决;协商不成的,提交项目维护者所在地有管辖权的人民法院解决。

7. 合规性要求

7.1 法律法规遵守:用户必须遵守所有适用的法律法规,包括但不限于:

  • 《中华人民共和国网络安全法》
  • 《中华人民共和国数据安全法》
  • 《中华人民共和国个人信息保护法》
  • 其他相关法律法规

7.2 禁止用途:用户不得将本工具用于任何非法、有害、欺诈或不当目的。

7.3 出口管制:用户必须遵守所有适用的出口管制法律法规,不得将本工具用于受限制的目的或地区。

8. 技术支持与维护

8.1 不提供技术支持:项目维护者不提供任何形式的技术支持、维护或更新保证。

8.2 项目状态:项目可能随时暂停、终止或变更,项目维护者不承担任何通知义务。

8.3 社区支持:用户可以通过 GitHub Issues 等渠道寻求社区帮助,但不保证获得回复或解决方案。

9. 建议与最佳实践

9.1 使用建议

  • 强烈建议在生产环境使用前进行充分测试
  • 强烈建议定期备份重要数据
  • 强烈建议遵守夸克官方的使用规范和服务条款
  • 建议在非关键场景下使用本工具
  • 建议定期检查工具更新和安全公告

9.2 风险控制

  • 使用前请评估风险并采取适当的安全措施
  • 建议使用测试账号进行验证
  • 建议限制使用频率和操作范围

10. 免责声明的修改

10.1 项目维护者保留随时修改本免责声明的权利,修改后的免责声明将在项目仓库中发布。

10.2 继续使用本工具即表示您接受修改后的免责声明


最终声明

使用本工具即表示您已充分理解并完全同意上述所有条款。如果您不同意本免责声明的任何内容,请立即停止使用本工具。项目维护者不对因使用本工具导致的任何损失、损害或法律后果承担任何责任。

📄 许可证

本项目采用 AGPL-3.0 许可证。详情请参阅 LICENSE 文件。

许可证要点

  • ✅ 允许:学习、研究、修改、分发
  • ✅ 允许:个人和非商业使用
  • ❌ 禁止:商业使用(包括 SaaS 服务、商业产品集成等)
  • 📋 要求:使用本项目的衍生作品也必须采用 AGPL-3.0 许可证并开源

商业使用授权:如需商业使用,请联系项目维护者获得授权。