# 微信视频号服务

## 功能介绍

微信视频号服务提供了视频号的创建、管理和内容发布等功能，帮助开发者在微信生态中开展视频内容运营。

## 核心方法

### WechatVideoAccountService

#### createVideoAccount(array $params)

创建视频号。

**参数：**
- `$params` - 视频号创建参数

**返回值：** 创建结果

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 创建视频号
$params = [
    'name' => '测试视频号',
    'description' => '这是一个测试视频号',
    'avatar' => 'http://example.com/avatar.jpg'
];

$result = Wechat::officialAccount()->videoAccount->createVideoAccount($params);
print_r($result);
```

#### getVideoAccountInfo()

获取视频号信息。

**返回值：** 视频号信息

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 获取视频号信息
$info = Wechat::officialAccount()->videoAccount->getVideoAccountInfo();
print_r($info);
```

#### updateVideoAccount(array $params)

更新视频号信息。

**参数：**
- `$params` - 视频号更新参数

**返回值：** 更新结果

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 更新视频号信息
$params = [
    'description' => '更新后的视频号描述',
    'avatar' => 'http://example.com/new_avatar.jpg'
];

$result = Wechat::officialAccount()->videoAccount->updateVideoAccount($params);
print_r($result);
```

#### uploadVideo(string $filePath, array $params = [])

上传视频。

**参数：**
- `$filePath` - 视频文件路径
- `$params` - 上传参数

**返回值：** 上传结果

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 上传视频
$filePath = storage_path('app/videos/test.mp4');
$params = [
    'title' => '测试视频',
    'description' => '这是一个测试视频'
];

$result = Wechat::officialAccount()->videoAccount->uploadVideo($filePath, $params);
print_r($result);
```

#### publishVideo(array $params)

发布视频。

**参数：**
- `$params` - 发布参数

**返回值：** 发布结果

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 发布视频
$params = [
    'video_id' => 'VIDEO_ID',
    'title' => '测试视频',
    'description' => '这是一个测试视频',
    'cover' => 'http://example.com/cover.jpg',
    'tags' => ['测试', '视频']
];

$result = Wechat::officialAccount()->videoAccount->publishVideo($params);
print_r($result);
```

#### getVideoList(array $params = [])

获取视频列表。

**参数：**
- `$params` - 查询参数

**返回值：** 视频列表

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 获取视频列表
$params = [
    'page' => 1,
    'page_size' => 10
];

$videos = Wechat::officialAccount()->videoAccount->getVideoList($params);
print_r($videos);
```

#### getVideoInfo(string $videoId)

获取视频详情。

**参数：**
- `$videoId` - 视频 ID

**返回值：** 视频详情

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 获取视频详情
$info = Wechat::officialAccount()->videoAccount->getVideoInfo('VIDEO_ID');
print_r($info);
```

#### deleteVideo(string $videoId)

删除视频。

**参数：**
- `$videoId` - 视频 ID

**返回值：** 删除结果

**示例：**
```php
use Kylin\Wechat\Facades\Wechat;

// 删除视频
$result = Wechat::officialAccount()->videoAccount->deleteVideo('VIDEO_ID');
print_r($result);
```

## 实际应用场景

### 1. 批量上传视频

```php
use Kylin\Wechat\Facades\Wechat;

// 批量上传视频
function batchUploadVideos($videoFiles)
{
    $results = [];
    
    foreach ($videoFiles as $filePath => $videoInfo) {
        $result = Wechat::officialAccount()->videoAccount->uploadVideo($filePath, [
            'title' => $videoInfo['title'],
            'description' => $videoInfo['description']
        ]);
        
        $results[] = $result;
    }
    
    return $results;
}

// 调用示例
$videoFiles = [
    storage_path('app/videos/video1.mp4') => [
        'title' => '视频1',
        'description' => '这是第一个测试视频'
    ],
    storage_path('app/videos/video2.mp4') => [
        'title' => '视频2',
        'description' => '这是第二个测试视频'
    ]
];

$results = batchUploadVideos($videoFiles);
print_r($results);
```

### 2. 定时发布视频

```php
use Kylin\Wechat\Facades\Wechat;

// 定时发布视频
function scheduleVideoPublish($videoId, $title, $description, $cover, $publishTime)
{
    $params = [
        'video_id' => $videoId,
        'title' => $title,
        'description' => $description,
        'cover' => $cover,
        'tags' => ['定时发布'],
        'publish_time' => $publishTime // 时间戳
    ];
    
    return Wechat::officialAccount()->videoAccount->publishVideo($params);
}

// 调用示例
$publishTime = strtotime('tomorrow 10:00');
$result = scheduleVideoPublish(
    'VIDEO_ID',
    '定时发布的视频',
    '这是一个定时发布的视频',
    'http://example.com/cover.jpg',
    $publishTime
);
print_r($result);
```
