# 视频上传和定时发布功能使用说明

本文档介绍如何使用系统提供的视频上传和定时发布功能。

## 前提条件

1. 已安装所有依赖包：
   ```
   pip install -r requirements.txt
   ```

2. 确保Redis服务已启动（用于Celery任务队列）
   ```
   redis-server
   ```

3. 启动Celery Worker（处理后台任务）
   ```
   celery -A role_based_system worker -l info
   ```

4. 启动Celery Beat（处理定时任务）
   ```
   celery -A role_based_system beat -l info
   ```

## 方法一：通过命令行测试

### 准备平台账号
首先，确保系统中已存在至少一个平台账号。可以通过admin界面或API创建。

### 上传视频并设置定时发布
使用以下命令上传视频并计划发布：

```bash
python manage.py test_video_upload "D:\pythonproject\role_based\role_based_system\上传视频测试.mp4" 1 --title "测试视频标题" --desc "这是一个测试视频描述" --schedule "2023-08-10 15:30:00"
```

参数说明：
- 第一个参数：视频文件路径
- 第二个参数：平台账号ID
- `--title`：视频标题（可选，默认使用文件名）
- `--desc`：视频描述（可选）
- `--schedule`：计划发布时间（可选，格式：YYYY-MM-DD HH:MM:SS）

### 手动发布视频
如果要立即发布视频，可以使用以下命令：

```bash
python manage.py publish_video 1
```

参数说明：
- 视频ID

## 方法二：通过API接口

### 上传视频
使用POST请求上传视频：

```
POST /api/operation/videos/upload_video/
```

表单数据：
- `video_file`：视频文件
- `platform_account`：平台账号ID
- `title`：视频标题（可选）
- `description`：视频描述（可选）
- `scheduled_time`：计划发布时间（可选，ISO格式）
- `tags`：标签（可选）

### 手动发布视频
使用POST请求立即发布视频：

```
POST /api/operation/videos/{video_id}/manual_publish/
```

## 如何验证视频是否成功发布

1. 检查视频记录状态：
   ```
   python manage.py shell
   >>> from user_management.models import Video
   >>> Video.objects.get(id=1).status
   'published'
   ```

2. 查看日志记录：
   ```
   tail -f debug.log
   ```

3. 通过API查询视频状态：
   ```
   GET /api/operation/videos/{video_id}/
   ```

## 注意事项

1. 视频文件会被保存在媒体目录（默认为 `media/videos/{platform_name}_{account_name}/`）
2. 定时发布功能依赖于Celery和Redis，确保这些服务正常运行
3. 本系统目前仅模拟视频发布过程，实际发布到各平台需要扩展相关API
4. 默认视频状态流转：draft（草稿）-> scheduled（已排期）-> published（已发布）或 failed（失败） 