开源夸克网盘 CLI 工具:Kuake CLI
一个完全开源的夸克网盘命令行工具和 SDK,让文件管理更简单高效
📖 项目背景
在日常开发工作中,我们经常需要与云存储服务进行交互。虽然各大云盘都提供了 Web 界面和官方客户端,但在自动化脚本、CI/CD 流程或服务器环境中,命令行工具往往更加高效和便捷。
Kuake SDK 正是为了解决这一问题而生。这是一个完全开源的夸克网盘 CLI 工具与 SDK,采用 Go 语言开发,提供完整的文件管理功能,使开发者能够通过命令行或代码轻松管理夸克网盘中的文件。
✨ 核心特性
1. 完整的文件管理功能
- 用户信息查询:获取账号基本信息
- 文件列表:列出指定目录下的所有文件和文件夹
- 文件信息:获取文件或目录的详细信息(大小、修改时间、路径等)
- 文件下载:获取文件的下载链接
- 文件上传:支持本地文件上传至夸克网盘,支持大文件分片上传
- 文件夹操作:创建文件夹
- 文件操作:移动、复制、重命名文件或目录
- 文件删除:删除文件或目录(支持递归删除)
- 分享功能:创建分享链接,支持设置有效期和提取码
2. 跨平台支持
项目使用 Go 语言开发,天然支持跨平台编译:
- ✅ Linux (amd64)
- ✅ macOS (amd64)
- ✅ Windows (amd64)
3. 多用户支持
支持在配置文件中配置多个用户的 Cookie,SDK 会自动进行负载均衡和故障转移:
{
"Quark": {
"access_tokens": [
"ctoken=user1_token; __pus=user1_pus;",
"ctoken=user2_token; __pus=user2_pus;"
]
}
}
4. CLI 工具设计
CLI 工具采用 JSON 输出格式,方便其他进程解析和集成:
# 获取用户信息
./kuake-v1.3.0-linux-amd64 user
# 输出格式
{
"success": true,
"code": "OK",
"message": "操作成功",
"data": {
"user_id": "123456",
"nickname": "用户名"
}
}
所有结果统一输出到 stdout,进度信息和错误信息输出到 stderr,便于脚本化使用。
🏗️ 技术架构
项目结构
kuake_sdk/
├── cmd/
│ └── main.go # CLI 入口
├── sdk/
│ ├── quark_client.go # 核心客户端
│ ├── user.go # 用户相关 API
│ ├── file.go # 文件操作 API
│ ├── share.go # 分享相关 API
│ ├── queue.go # 上传队列管理
│ ├── task_manager.go # 任务管理
│ ├── config.go # 配置管理
│ ├── constants.go # 常量定义
│ └── types.go # 类型定义
├── build.sh # 构建脚本
└── README.md # 项目文档
核心技术点
1. HTTP 客户端封装
使用 Go 标准库 net/http 封装了统一的 HTTP 请求方法,支持:
- Cookie 自动解析和管理
- 请求超时控制(默认 30 秒)
- 错误处理和重试机制
- 调试模式(通过环境变量
KUake_DEBUG=1开启)
2. 大文件分片上传
对于大文件,实现了分片上传机制:
// 支持大文件分片上传
// 1. 预上传请求,获取上传参数
// 2. 分片上传文件数据
// 3. 更新文件哈希
// 4. 完成上传
3. Token 管理和故障转移
实现了智能的 Token 管理机制:
- 随机选择初始 Token
- 认证检查缓存(5 分钟内有效)
- 失败 Token 记录和自动切换
- 多 Token 负载均衡
🚀 快速开始
安装方式
方式一:从源码构建
# 1. 克隆仓库
git clone https://github.com/zhangjingwei/kuake_sdk.git
cd kuake_sdk
# 2. 运行构建脚本
chmod +x build.sh
./build.sh
# 3. 构建完成后,二进制文件在 dist/ 目录中
方式二:下载预编译二进制
从 GitHub Releases 下载对应平台的二进制文件。
配置使用
- 创建配置文件
config.json:
{
"Quark": {
"access_tokens": [
"ctoken=your_ctoken_value_here; __pus=your_pus_value_here;"
]
}
}
获取 Cookie:
- 打开浏览器,登录夸克网盘
- 打开开发者工具(F12)
- 在 Network 标签页中,复制请求头中的
Cookie值
使用 CLI 工具:
# 获取用户信息
./kuake-v1.3.0-linux-amd64 user
# 列出目录
./kuake-v1.3.0-linux-amd64 list "/"
# 上传文件
./kuake-v1.3.0-linux-amd64 upload "file.txt" "/file.txt"
# 创建分享链接
./kuake-v1.3.0-linux-amd64 share "/file.txt" 7 "false"
SDK 使用示例
package main
import (
"fmt"
"kuake_sdk/sdk"
)
func main() {
// 创建客户端
client := sdk.NewQuarkClient("config.json")
// 获取用户信息
userInfo, err := client.GetUserInfo()
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("User: %s\n", userInfo.Data.Nickname)
// 列出目录
files, err := client.ListFiles("/")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
for _, file := range files {
fmt.Printf("%s (%d bytes)\n", file.Name, file.Size)
}
}
💡 使用场景
1. 自动化备份脚本
#!/bin/bash
# 每日备份脚本
DATE=$(date +%Y%m%d)
tar -czf backup-${DATE}.tar.gz /path/to/backup
./kuake-v1.3.0-linux-amd64 upload "backup-${DATE}.tar.gz" "/backups/backup-${DATE}.tar.gz"
2. CI/CD 集成
在 CI/CD 流程中,可将构建产物自动上传到夸克网盘:
# GitHub Actions 示例
- name: Upload artifacts
run: |
./kuake-v1.3.0-linux-amd64 upload "dist/app.tar.gz" "/releases/app.tar.gz"
3. 服务器文件同步
在服务器环境中,可定期同步文件到夸克网盘:
# 使用 cron 定时任务
0 2 * * * /path/to/sync-script.sh
4. 批量文件管理
通过脚本批量操作文件:
# 批量上传
for file in *.txt; do
./kuake-v1.3.0-linux-amd64 upload "$file" "/uploads/$file"
done
🔧 技术亮点
1. 错误处理机制
项目实现了完善的错误处理:
- 网络超时错误检测
- DNS 解析错误检测
- API 错误统一处理
- JSON 解析错误处理
2. 调试支持
通过环境变量开启调试模式:
KUake_DEBUG=1 ./kuake-v1.3.0-linux-amd64 user
调试模式下会输出详细的请求和响应信息,便于排查问题。
📄 开源协议
项目采用 AGPL-3.0 许可证,这是一个 Copyleft 许可证:
- ✅ 允许学习、研究、修改、分发
- ✅ 允许个人和非商业使用
- ❌ 禁止商业使用(除非获得授权)
- 📋 要求衍生作品也必须开源
📚 相关资源
- GitHub 仓库:https://github.com/zhangjingwei/kuake_sdk
- Releases:https://github.com/zhangjingwei/kuake_sdk/releases
- 许可证:AGPL-3.0
🙏 结语
Kuake SDK 是一个实用的开源项目,它不仅解决了实际问题,也为开源社区贡献了价值。如果你正在寻找一个可靠的夸克网盘命令行工具,或者希望学习 Go 语言开发,这个项目值得一试。
项目采用 AGPL-3.0 许可证,完全开源,欢迎 Star、Fork 和贡献代码!
正在加载评论...