# Play List Service

### 1、创建播放列表

#### 描述

```
通过标题创建播放列表
接口地址（仅做说明使用）：https://api.polyv.net/v2/play-list/create
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/limit/README.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testCreatePlayList() throws IOException, NoSuchAlgorithmException {
        VodCreatePlayListRequest vodCreatePlayListRequest = new VodCreatePlayListRequest();
        VodCreatePlayListResponse vodCreatePlayListResponse = null;
        try {
            vodCreatePlayListRequest.setTitle("测试播放列表Junit").setDescription("测试描述信息").setTag("测试标签");
            vodCreatePlayListResponse = new VodPlayListServiceImpl().createPlayList(vodCreatePlayListRequest);
            Assert.assertNotNull(vodCreatePlayListResponse);
            if (vodCreatePlayListResponse != null) {
                log.debug("测试创建播放列表成功,{}", JSON.toJSONString(vodCreatePlayListResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回VodCreatePlayListResponse对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.VodxxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名         | 必选    | 类型     | 说明 |
| ----------- | ----- | ------ | -- |
| title       | true  | String | 标题 |
| description | false | String | 描述 |
| tag         | false | String | 标签 |

#### 返回对象描述

| 参数名        | 类型     | 说明     |
| ---------- | ------ | ------ |
| playListId | String | 播放列表ID |

\
\


***

\
\


### 2、修改播放列表信息

#### 描述

```
通过播放列表id修改播放列表信息
接口地址（仅做说明使用）：https://api.polyv.net/v2/play-list/update
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/limit/README.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testUpdatePlayList() throws IOException, NoSuchAlgorithmException {
        VodUpdatePlayListRequest vodUpdatePlayListRequest = new VodUpdatePlayListRequest();
        VodUpdatePlayListResponse vodUpdatePlayListResponse = null;
        try {
            vodUpdatePlayListRequest.setPlayListId("1616396785347").setTitle("测试播放列表(Junit测试_勿删)").setTag("测试标签");
            vodUpdatePlayListResponse = new VodPlayListServiceImpl().updatePlayList(vodUpdatePlayListRequest);
            Assert.assertNotNull(vodUpdatePlayListResponse);
            if (vodUpdatePlayListResponse != null) {
                log.debug("测试修改播放列表信息成功,{}", JSON.toJSONString(vodUpdatePlayListResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回VodUpdatePlayListResponse对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.VodxxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名         | 必选    | 类型     | 说明     |
| ----------- | ----- | ------ | ------ |
| playListId  | true  | String | 播放列表ID |
| title       | true  | String | 标题     |
| description | false | String | 描述     |
| tag         | false | String | 标签     |

#### 返回对象描述

| 参数名        | 类型     | 说明     |
| ---------- | ------ | ------ |
| playListId | String | 播放列表ID |

\
\


***

\
\


### 3、查询播放列表信息

#### 描述

```
通过播放列表id查询播放列表信息或查询所有播放列表
接口地址（仅做说明使用）：https://api.polyv.net/v2/play-list/list
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/limit/README.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testGetPlayListInfo() throws IOException, NoSuchAlgorithmException {
        VodGetPlayListInfoRequest vodGetPlayListInfoRequest = new VodGetPlayListInfoRequest();
        VodGetPlayListInfoResponse vodGetPlayListInfoResponse = null;
        try {
            vodGetPlayListInfoRequest.setPlayListIds("1602299692290,1602299700661");
            vodGetPlayListInfoResponse = new VodPlayListServiceImpl().getPlayListInfo(vodGetPlayListInfoRequest);
            Assert.assertNotNull(vodGetPlayListInfoResponse);
            if (vodGetPlayListInfoResponse != null) {
                log.debug("测试查询播放列表信息成功,{}", JSON.toJSONString(vodGetPlayListInfoResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回VodGetPlayListInfoResponse对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.VodxxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名         | 必选    | 类型      | 说明                                                      |
| ----------- | ----- | ------- | ------------------------------------------------------- |
| playListIds | false | String  | 播放列表ID，多个以英文逗号分隔，最大1000个，如“1620153765497,1620142496099” |
| title       | false | String  | 标题，按标题模糊搜索                                              |
| currentPage | false | Integer | 页数，默认为1【对应api文档的**page**字段】                             |
| pageSize    | false | Integer | 每页显示的数据条数，默认每页显示20条数据                                   |

#### 返回对象描述

| 参数名         | 类型      | 说明                                                                                                                            |
| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| contents    | Array   | 分页数据【详见[Content参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/playListService.md?id=polyv27)】 |
| pageSize    | Integer | 每页显示的数据条数，默认每页显示20条数据                                                                                                         |
| currentPage | Integer | 当前页【对应api文档的**pageNumber**字段】                                                                                                 |
| totalItems  | Integer | 记录总条数                                                                                                                         |
| totalPage   | Integer | 总页数【对应api文档的**totalPages**字段】                                                                                                 |

[**Content参数描述**](#/playListService.md?id=polyv27)

| 参数名          | 类型      | 说明                                                                                                                                 |
| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| id           | Long    | 播放列表ID                                                                                                                             |
| description  | String  | 播放列表描述信息                                                                                                                           |
| tag          | String  | 播放列表标签                                                                                                                             |
| title        | String  | 播放列表标题                                                                                                                             |
| creationTime | Date    | 播放列表创建时间，格式为yyyy-MM-dd HH:mm:ss                                                                                                    |
| updateTime   | Date    | 播放列表最近更新时间，格式为yyyy-MM-dd HH:mm:ss                                                                                                  |
| videoCount   | Integer | 播放列表的视频数量                                                                                                                          |
| videoList    | Array   | 播放列表的视频【详见[VideoList参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/playListService.md?id=polyv28)】 |

[**VideoList参数描述**](#/playListService.md?id=polyv28)

| 参数名      | 类型     | 说明        |
| -------- | ------ | --------- |
| vid      | String | 视频vid     |
| title    | String | 视频标题      |
| duration | Float  | 视频时长，单位：秒 |
| coverURL | String | 视频首图url   |

\
\


***

\
\


### 4、添加视频至播放列表

#### 描述

```
通过视频id添加视频至播放列表
接口地址（仅做说明使用）：https://api.polyv.net/v2/play-list/add-video
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/limit/README.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testAddVideoToPlayList() throws IOException, NoSuchAlgorithmException {
        VodAddVideoToPlayListRequest vodAddVideoToPlayListRequest = new VodAddVideoToPlayListRequest();
        Boolean vodAddVideoToPlayListResponse = null;
        try {
            vodAddVideoToPlayListRequest.setPlayListId("1616396785347")
                    .setVideoId("1b448be32345b255cabc3fe8d65a4d00_1");
            vodAddVideoToPlayListResponse = new VodPlayListServiceImpl().addVideoToPlayList(
                    vodAddVideoToPlayListRequest);
            Assert.assertTrue(vodAddVideoToPlayListResponse);
            if (vodAddVideoToPlayListResponse) {
                log.debug("测试添加视频至播放列表成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.VodxxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名        | 必选   | 类型     | 说明                      |
| ---------- | ---- | ------ | ----------------------- |
| playListId | true | String | 播放列表ID                  |
| videoId    | true | String | 视频ID【对应api文档的**vid**字段】 |

#### 返回对象描述

null\
\


***

\
\


### 5、将视频从播放列表移除

#### 描述

```
通过视频id将视频从播放列表移除
接口地址（仅做说明使用）：https://api.polyv.net/v2/play-list/remove-video
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/limit/README.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/vod/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testRemoveVideoFromPlayList() throws IOException, NoSuchAlgorithmException {
        VodRemoveVideoFromPlayListRequest vodRemoveVideoFromPlayListRequest = new VodRemoveVideoFromPlayListRequest();
        Boolean vodRemoveVideoFromPlayListResponse = null;
        try {
            //准备测试数据
            super.addVideoToPlayListOther();
            vodRemoveVideoFromPlayListRequest.setPlayListId("1616396785347")
                    .setVideoId(super.getTestVideoId());
            vodRemoveVideoFromPlayListResponse = new VodPlayListServiceImpl().removeVideoFromPlayList(
                    vodRemoveVideoFromPlayListRequest);
            Assert.assertTrue(vodRemoveVideoFromPlayListResponse);
            if (vodRemoveVideoFromPlayListResponse) {
                log.debug("测试将视频从播放列表移除成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.VodxxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名        | 必选   | 类型     | 说明                      |
| ---------- | ---- | ------ | ----------------------- |
| playListId | true | String | 播放列表ID                  |
| videoId    | true | String | 视频ID【对应api文档的**vid**字段】 |

#### 返回对象描述

null\
