feat: 新增 macOS 原生 SwiftUI 客户端
CI / lint-and-build (push) Has been cancelled

- Swift 6 + SwiftUI + SwiftData 直接调用阿里云 VOD API

- 自实现 POP 签名,无需 Node 后端

- 视频列表、搜索、批量下载到用户选择目录

- 下载文件自动使用视频标题重命名

- 浏览器下载与下载工具(aria2/wget)两种方式

- Web 版标记为废弃,README/AGENTS/MEMORY 更新
This commit is contained in:
2026-06-30 08:38:43 +06:00
parent 50e5a4182a
commit e8c3e4644e
21 changed files with 1557 additions and 176 deletions
+36 -67
View File
@@ -1,66 +1,60 @@
# 阿里云 VOD 媒体库管理器
# 火炬 VOD 管理器
一个**轻量、开源、可自托管**的阿里云视频点播(VOD)媒体资源管理后台,解决官方控制台操作繁琐、批量处理能力弱的问题。
一个**轻量、开源**的阿里云视频点播(VOD)媒体资源管理工具,解决官方控制台批量下载、删除操作繁琐的问题。
> **注意**:Web 版已废弃,当前主要维护 **macOS 原生 SwiftUI 版本**,目标上架 Mac App Store。
## 功能特性
- 视频库快速查看、搜索、筛选(标题、分类、标签、状态、时间)
- 批量获取视频播放/下载地址,支持选择清晰度
- 批量删除视频
- 多账号/多 Region 切换管理
- 内置登录与角色控制(管理员 / 只读)
- 视频库快速查看、搜索
- 批量下载到用户指定目录
- 下载文件自动使用视频标题重命名
- 多账号 / 多 Region 切换管理
- 下载任务历史
- 操作日志审计
- 单 Docker 镜像一键部署
- 浏览器下载与下载工具(aria2 / wget)两种导出方式
## 技术栈
- **前端**React 18 + TypeScript + Vite + Ant Design 5 + Zustand
- **后端**Node.js 20 + Express + TypeScript + SQLite
- **阿里云 SDK**`@alicloud/pop-core`
- **部署**Docker + Docker Compose
- **macOS 客户端**Swift 6 + SwiftUI + SwiftData
- **阿里云 API**:自实现 POP 签名,直接调用 VOD OpenAPI
- **网络**URLSession
- **持久化**SwiftDataSQLite
## 快速开始
## 项目结构
### 方式一:Docker Compose(推荐)
```bash
git clone https://github.com/your-org/Aliyun-VOD-Media-Library-Manager.git
cd Aliyun-VOD-Media-Library-Manager/docker
cp .env.example .env
# 编辑 .env,设置 JWT_SECRET 等
sudo docker-compose up -d
```
.
├── apps/
│ ├── macos/ # macOS 原生 SwiftUI 应用(当前维护重点)
│ ├── web/ # React 前端(已废弃,保留作为历史参考)
│ └── server/ # Express 后端(已废弃,保留作为历史参考)
├── docs/ # 文档
├── PRD.md # 产品需求文档
├── README.md
└── AGENTS.md
```
访问 http://localhost:3001,默认账号密码 `admin` / `admin`
### 方式二:源码运行
## macOS 版快速开始
```bash
# 安装依赖
npm install
# 启动后端(端口 3001
npm run dev -w apps/server
# 新终端启动前端(端口 5173
npm run dev -w apps/web
cd apps/macos/VODManager
swift build
swift run
```
## 配置说明
或在 Xcode 中打开 `Package.swift`
关键环境变量:
## App Store 上架准备
| 变量 | 说明 | 默认值 |
| --- | --- | --- |
| `JWT_SECRET` | JWT 签名密钥,生产环境必须修改 | `vod-manager-dev-secret-change-me` |
| `APP_ENCRYPTION_KEY` | AccessKey Secret 加密密钥 | 空(明文存储,会告警) |
| `DEFAULT_ADMIN_USERNAME` | 默认管理员账号 | `admin` |
| `DEFAULT_ADMIN_PASSWORD` | 默认管理员密码 | `admin` |
| `DB_PATH` | SQLite 数据库路径 | `./data/vod-manager.db` |
1. 在 Xcode 中配置 Signing & Capabilities
2. 使用 `apps/macos/VODManager/VODManager.entitlements` 中的沙盒配置
3. 配置 Bundle Identifier 和 Team
4. 提交 Mac App Store 审核
## 阿里云 RAM 最小权限
建议为本工具单独创建 RAM 子用户,并授予最小权限
建议为本工具单独创建 RAM 子用户:
```json
{
@@ -82,31 +76,6 @@ npm run dev -w apps/web
}
```
如果只需要只读能力,请移除 `DeleteVideo``UpdateVideoInfo`
## 项目结构
```
.
├── apps/
│ ├── web/ # React 前端
│ └── server/ # Express 后端 + SQLite
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── docs/ # 部署与使用文档
├── PRD.md # 产品需求文档
└── README.md
```
## 贡献指南
欢迎 Issue 和 Pull Request。请确保:
1. 代码通过 `npm run lint`
2. 核心逻辑补充测试
3. 提交信息清晰说明改动
## License
[MIT](./LICENSE)