subAccountService
1、搜索视频
描述
通过视频标题、分类、标签等条件查找视频
接口地址(仅做说明使用):https://api.polyv.net//v3/video/list-video
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testSearchVideoList() throws IOException, NoSuchAlgorithmException {
VodSubAccountSearchVideoListRequest vodSubAccountSearchVideoListRequest =
new VodSubAccountSearchVideoListRequest();
VodSubAccountSearchVideoListResponse vodSubAccountSearchVideoListResponse = null;
try {
vodSubAccountSearchVideoListRequest.setCategoryId("1602300731843")
.setTitle("学习英语")
.setUploader("主账号")
.setStatus("61")
.setContainSubCate("Y")
.setStartTime(super.getDate(2021, 1, 4, 10, 35))
.setEndTime(super.getDate(2021, 2, 5, 10, 35))
.setSort("creationTimeDesc")
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodSubAccountSearchVideoListResponse = new VodSubAccountServiceImpl().searchVideoList(
vodSubAccountSearchVideoListRequest);
Assert.assertNotNull(vodSubAccountSearchVideoListResponse);
if (vodSubAccountSearchVideoListResponse != null) {
log.debug("测试搜索视频成功,{}", JSON.toJSONString(vodSubAccountSearchVideoListResponse));
}
} 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、请求正确,返回VodSubAccountSearchVideoListResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| categoryId | false | String | 视频分类ID【对应api文档的cataId字段】 |
| title | false | String | 按标题搜索 |
| uploader | false | String | 上传者 |
| status | false | String | 视频状态码;60/61:已发布;10:等待编码;20:正在编码;50:等待审核;51:审核不通过;-1:已删除; |
| containSubCate | false | String | 是否包含子分类, Y 包含, N 不包含 |
| startTime | false | Date | 按创建时间范围查询,起始时间,格式为yyyy-MM-dd HH:mm:ss |
| endTime | false | Date | 结束时间,格式为yyyy-MM-dd HH:mm:ss |
| sort | false | String | 排序creationTimeDesc或creationTimeAsc |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
| currentPage | false | Integer | 页数,默认为1【对应api文档的page字段】 |
| pageSize | false | Integer | 每页显示的数据条数,默认每页显示20条数据 |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| contents | Array | 查询的结果列表【详见VodSearchVideoList参数描述】 |
| pageSize | Integer | 每页显示的数据条数,默认每页显示20条数据 |
| currentPage | Integer | 当前页【对应api文档的pageNumber字段】 |
| totalItems | Integer | 记录总条数 |
| totalPage | Integer | 总页数【对应api文档的totalPages字段】 |
VodSearchVideoList参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoId | String | 视频id【对应api文档的vid字段】 |
| basicInfo | BasicInfo | 查询的视频基本信息【详见BasicInfo参数描述】 |
BasicInfo参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| title | String | 视频标题 |
| description | String | 视频描述 |
| duration | Integer | 源视频时长,单位:秒 |
| coverURL | String | 首图地址,大图 |
| creationTime | Date | 创建时间 |
| updateTime | Date | 更新时间 |
| size | Long | 源文件大小,单位:Bytes |
| status | Integer | 视频状态码;60/61:已发布;10:等待编码;20:正在编码;50:等待审核;51:审核不通过;-1:已删除; |
| categoryId | String | 分类id, 如1为根目录【对应api文档的cateId字段】 |
| categoryName | String | 分类名称【对应api文档的cateName字段】 |
| tags | String | 标签 |
| uploader | String | 上传者 |
2、查询视频信息
描述
通过视频id查询视频信息
接口地址(仅做说明使用):https://api.polyv.net//v3/video/get-video-info
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testGetVideoInfo() throws IOException, NoSuchAlgorithmException {
VodSubAccountQueryVideoInfoRequest vodSubAccountQueryVideoInfoRequest =
new VodSubAccountQueryVideoInfoRequest();
List<VodSubAccountQueryVideoInfoResponse> vodSubAccountQueryVideoInfoResponseList = null;
try {
vodSubAccountQueryVideoInfoRequest.setVideoIds(super.getTestVideoId())
.setFilters("basicInfo,metaData,transcodeInfo,snapshotInfo")
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodSubAccountQueryVideoInfoResponseList = new VodSubAccountServiceImpl().getVideoInfo(
vodSubAccountQueryVideoInfoRequest);
Assert.assertNotNull(vodSubAccountQueryVideoInfoResponseList);
if (vodSubAccountQueryVideoInfoResponseList != null) {
log.debug("测试查询视频信息,{}", JSON.toJSONString(vodSubAccountQueryVideoInfoResponseList));
}
} 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、请求正确,返回VodSubAccountQueryVideoInfoResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| videoIds | true | String | 视频ID,多个视频ID用英文逗号分隔(状态为半角),例如 1b8be3,239c2e【对应api文档的vids字段】 |
| filters | false | String | 选择需要返回的视频信息,多个以英文逗号分隔(状态为半角,例如 basicInfo,metaData),取值:basicInfo,metaData,transcodeInfo,snapshotInfo, 分别代表基础信息、元数据、转码信息、截图信息,为空则返回基础信息【对应api文档的filter字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
返回对象是List<VodSubAccountQueryVideoInfoResponse>,VodSubAccountQueryVideoInfoResponse具体元素内容如下:
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoId | String | 视频id【对应api文档的vid字段】 |
| basicInfo | BasicInfo | 查询的视频基本信息【详见BasicInfo参数描述】 |
| transcodeInfos | Array | 查询的视频转码信息【详见TranscodeInfos参数描述】 |
| metaData | MetaData | 查询的视频元数据【详见MetaData参数描述】 |
| snapshotInfo | SnapshotInfo | 查询的视频截图【详见SnapshotInfo参数描述】 |
BasicInfo参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| title | String | 视频标题 |
| description | String | 视频描述 |
| duration | Integer | 源视频时长,单位:秒 |
| coverURL | String | 首图地址,大图 |
| creationTime | Date | 创建时间 |
| updateTime | Date | 更新时间 |
| size | Long | 源文件大小,单位:Bytes |
| status | Integer | 视频状态码;60/61:已发布;10:等待编码;20:正在编码;50:等待审核;51:审核不通过;-1:已删除; |
| categoryId | String | 分类id, 如1为根目录【对应api文档的cateId字段】 |
| categoryName | String | 分类名称【对应api文档的cateName字段】 |
| tags | String | 标签 |
| uploader | String | 上传者 |
TranscodeInfos参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| playUrl | String | 播放地址 |
| definition | String | 清晰度,SOURCE:原清晰度,LD:普清,SD:标清,HD:高清 |
| duration | Integer | 时长,秒 |
| encrypt | Boolean | 加密视频为true,非加密为false |
| format | String | 转码格式,如mp4、flv、pdx、hls |
| fps | Integer | 视频帧率 |
| bitrate | Integer | 码率kbps |
| height | Integer | 分辨率高,单位:px |
| width | Integer | 分辨率宽,单位:px |
| status | String | 视频状态, normal:可以正常播放,unavailable:不能正常播放 |
| fileSize | Long | 编码后视频大小,单位:字节 |
MetaData参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| size | Long | 源文件大小,单位:Bytes |
| format | String | 视频容器类型,如mp4、flv等 |
| duration | Integer | 源视频时长,单位:秒 |
| bitrate | Integer | 视频码率,单位:bps |
| fps | Integer | 视频帧率 |
| height | Integer | 分辨率高,单位:px |
| width | Integer | 分辨率宽,单位:px |
| codec | String | 编码格式,如h264、h265等 |
SnapshotInfo参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| imageUrl | Array | 截图url数组 |
3、修改视频信息
描述
通过视频id修改视频信息
接口地址(仅做说明使用):https://api.polyv.net//v3/video/update-info
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testUpdateVideoInfo() throws IOException, NoSuchAlgorithmException {
VodSubAccountUpdateVideoInfoRequest vodSubAccountUpdateVideoInfoRequest =
new VodSubAccountUpdateVideoInfoRequest();
Boolean vodUpdateVideoInfoResponse = null;
try {
vodSubAccountUpdateVideoInfoRequest.setVideoId(super.getTestVideoId())
.setDesc("这是一个通过junit合并的视频_1")
.setTag("junit测试_1")
.setPublishUrl(null)
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodUpdateVideoInfoResponse = new VodSubAccountServiceImpl().updateVideoInfo(
vodSubAccountUpdateVideoInfoRequest);
Assert.assertTrue(vodUpdateVideoInfoResponse);
if (vodUpdateVideoInfoResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| videoId | true | String | 视频ID【对应api文档的vid字段】 |
| title | false | String | 视频标题 |
| desc | false | String | 视频描述【对应api文档的describ字段】 |
| tag | false | String | 视频标签信息 |
| publishUrl | false | String | 外链地址 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为修改成功,false为修改失败
4、删除视频
描述
通过视频id删除视频
接口地址(仅做说明使用):https://api.polyv.net//v3/video/delete-video
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testDeleteVideo() throws IOException, NoSuchAlgorithmException {
VodSubAccountDeleteVideoRequest vodSubAccountDeleteVideoRequest = new VodSubAccountDeleteVideoRequest();
Boolean vodDeleteVideoResponse = null;
try {
vodSubAccountDeleteVideoRequest.setVideoId("1b448be3238415eee2fa40753737255b_1")
//设置子账号相关
.setAppId(APP_ID).setSecretKey(SECRET_KEY);
vodDeleteVideoResponse = new VodSubAccountServiceImpl().deleteVideo(vodSubAccountDeleteVideoRequest);
Assert.assertTrue(vodDeleteVideoResponse);
if (vodDeleteVideoResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| videoId | true | String | 视频ID【对应api文档的vid字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为删除视频成功,false为删除视频失败
5、新增视频分类
描述
通过分类名等参数新增视频分类
接口地址(仅做说明使用):https://api.polyv.net//v3/category/add
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testAddCategory() throws IOException, NoSuchAlgorithmException {
VodSubAccountAddCategoryRequest vodSubAccountAddCategoryRequest = new VodSubAccountAddCategoryRequest();
String vodDeleteVideoResponse = null;
try {
vodSubAccountAddCategoryRequest.setName("junit测试新增分类20210309").setParentId(null)
//设置子账号相关
.setAppId(APP_ID).setSecretKey(SECRET_KEY);
vodDeleteVideoResponse = new VodSubAccountServiceImpl().addCategory(vodSubAccountAddCategoryRequest);
Assert.assertNotNull(vodDeleteVideoResponse);
if (vodDeleteVideoResponse != null) {
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、请求正确,返回String对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| name | true | String | 分类名 |
| parentId | false | String | 父分类id, 默认位1, 放在根目录下 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
新增成功返回新增的分类id
6、查询视频分类
描述
通过分类id查询视频分类
接口地址(仅做说明使用):https://api.polyv.net//v3/category/get
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testQueryCategory() throws IOException, NoSuchAlgorithmException {
VodSubAccountQueryCategoryRequest vodSubAccountQueryCategoryRequest = new VodSubAccountQueryCategoryRequest();
VodSubAccountQueryCategoryResponse vodSubAccountQueryCategoryResponse = null;
try {
vodSubAccountQueryCategoryRequest.setCategoryId("1608891483165")
//设置子账号相关
.setAppId(APP_ID).setSecretKey(SECRET_KEY).setCurrentPage(1).setPageSize(20);
vodSubAccountQueryCategoryResponse = new VodSubAccountServiceImpl().queryCategory(
vodSubAccountQueryCategoryRequest);
Assert.assertNotNull(vodSubAccountQueryCategoryResponse);
if (vodSubAccountQueryCategoryResponse != null) {
log.debug("测试查询视频分类成功,{}", JSON.toJSONString(vodSubAccountQueryCategoryResponse));
}
} 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、请求正确,返回VodSubAccountQueryCategoryResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| categoryId | true | String | 分类id【对应api文档的cateId字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
| currentPage | false | Integer | 页数,默认为1【对应api文档的page字段】 |
| pageSize | false | Integer | 每页显示的数据条数,默认每页显示20条数据 |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| category | Category | 当前分类【详见Category参数描述】 |
| subCategoryTotal | Integer | 下一级子分类个数 |
| subCategories | Array | 下一级子分类列表【详见Category参数描述】 |
Category参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| categoryId | String | 分类id【对应api文档的cateId字段】 |
| categoryName | String | 分类名称【对应api文档的cateName字段】 |
| parentId | String | 父分类id |
7、修改视频分类
描述
修改视频分类
接口地址(仅做说明使用):https://api.polyv.net//v3/category/update-info
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testUpdateCategory() throws IOException, NoSuchAlgorithmException {
VodSubAccountUpdateCategoryRequest vodSubAccountUpdateCategoryRequest =
new VodSubAccountUpdateCategoryRequest();
Boolean vodUpdateCategoryResponse = null;
try {
vodSubAccountUpdateCategoryRequest.setCategoryId("1602671097888").setCategoryName("勿删分类-"+super.getRandomString(4))
//设置子账号相关
.setAppId(APP_ID).setSecretKey(SECRET_KEY);
vodUpdateCategoryResponse = new VodSubAccountServiceImpl().updateCategory(
vodSubAccountUpdateCategoryRequest);
Assert.assertTrue(vodUpdateCategoryResponse);
if (vodUpdateCategoryResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| categoryId | true | String | 分类id【对应api文档的cateId字段】 |
| categoryName | true | String | 分类名称【对应api文档的cateName字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为修改成功,false为修改失败
8、删除视频分类
描述
通过视频分类id删除视频分类
接口地址(仅做说明使用):https://api.polyv.net//v3/category/delete
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testDeleteCategory() throws IOException, NoSuchAlgorithmException {
VodSubAccountDeleteCategoryRequest vodSubAccountDeleteCategoryRequest =
new VodSubAccountDeleteCategoryRequest();
Boolean vodDeleteCategoryResponse = null;
try {
//生成测试数据
String categoryId = super.addCategoryOther();
vodSubAccountDeleteCategoryRequest.setCategoryId(categoryId)
//设置子账号相关
.setAppId(APP_ID).setSecretKey(SECRET_KEY);
vodDeleteCategoryResponse = new VodSubAccountServiceImpl().deleteCategory(
vodSubAccountDeleteCategoryRequest);
Assert.assertTrue(vodDeleteCategoryResponse);
if (vodDeleteCategoryResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| categoryId | true | String | 分类id【对应api文档的cateId字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为删除成功,false为删除失败
9、批量修改视频所属分类
描述
通过视频id批量修改视频所属分类
接口地址(仅做说明使用):https://api.polyv.net//v3/video/update-category
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testUpdateVideoCategory() throws IOException, NoSuchAlgorithmException {
VodSubAccountUpdateVideoCategoryRequest vodSubAccountUpdateVideoCategoryRequest =
new VodSubAccountUpdateVideoCategoryRequest();
Boolean vodUpdateVideoCategoryResponse = null;
try {
vodSubAccountUpdateVideoCategoryRequest.setVideoIds(super.getTestVideoId()).setCategoryId("1602300731843")
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodUpdateVideoCategoryResponse = new VodSubAccountServiceImpl().updateVideoCategory(
vodSubAccountUpdateVideoCategoryRequest);
Assert.assertTrue(vodUpdateVideoCategoryResponse);
if (vodUpdateVideoCategoryResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| videoIds | true | String | 视频ID串,多个视频ID之间用英文逗号分隔(状态为半角),例如 1b8be3,239c2e【对应api文档的vids字段】 |
| categoryId | false | String | 视频分类ID【对应api文档的cateId字段】 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为修改成功,false为修改失败
10、修改视频分类属性设置
描述
通过分类id修改视频分类属性设置
接口地址(仅做说明使用):https://api.polyv.net//v3/category/update-profile
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testUpdateCategoryProfile() throws IOException, NoSuchAlgorithmException {
VodSubAccountUpdateCategoryProfileRequest vodSubAccountUpdateCategoryProfileRequest =
new VodSubAccountUpdateCategoryProfileRequest();
Boolean vodUpdateCategoryProfileResponse = null;
try {
vodSubAccountUpdateCategoryProfileRequest.setCategoryId("1615286323771")
.setEnabled("Y")
.setKeepSource(0)
.setEncrypt(0)
.setEncryptLevel("open")
.setIsEdu(0)
.setEncodeAAC(0)
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodUpdateCategoryProfileResponse = new VodSubAccountServiceImpl().updateCategoryProfile(
vodSubAccountUpdateCategoryProfileRequest);
Assert.assertTrue(vodUpdateCategoryProfileResponse);
if (vodUpdateCategoryProfileResponse) {
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. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| categoryId | true | String | 分类id【对应api文档的cateId字段】 |
| enabled | false | String | 是否启用分类设置 Y:启用, N:关闭,默认值为N:关闭 |
| keepSource | false | Integer | 1:源文件播放;0:非源文件播放,如果为源文件播放,encrypt、encryptLevel、isEdu、encodeAAC参数不生效,默认值为0:非源文件播放 |
| encrypt | false | Integer | 1:开启视频加密,0:不加密,默认值为0:不加密 |
| encryptLevel | false | String | 加密等级,取值有: open、web、app、wxa_app,分别代表非加密授权,Web授权,APP授权,小程序授权,默认值为open:非加密授权 |
| isEdu | false | Integer | 1:启用录屏优化, 0:关闭,默认值为0:关闭 |
| encodeAAC | false | Integer | 1:生成aac, 0:不生成,默认为0:不生成 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
true为修改成功,false为修改失败
11、获取Playsafe Token
描述
通过子账号appId与视频id获取播放凭证,用于播放加密视频
接口地址(仅做说明使用):https://hls.videocc.net//service/v2/token/create-child
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
2、如果一个token(播放凭证)尚未过期,此时使用相同的 videoId、viewerId、viewerIp、isWxa 参数值请求该接口,则会复用原来的token,并延长原token的有效期。
单元测试
@Test
public void testGetPlaySafeToken() throws IOException, NoSuchAlgorithmException {
VodSubAccountGetPlaySafeTokenRequest vodSubAccountGetPlaySafeTokenRequest =
new VodSubAccountGetPlaySafeTokenRequest();
VodSubAccountGetPlaySafeTokenResponse vodSubAccountGetPlaySafeTokenResponse = null;
try {
vodSubAccountGetPlaySafeTokenRequest.setVideoId("1b448be32370f4822ac40fd926112a66_1")
.setViewerId("ovtl9t_RxnrTdqkXqkT5Q5lnxp2A")
.setViewerIp(super.getRandomIp())
.setViewerName("TestViewerName")
.setExpires(Long.parseLong("60"))
.setDisposable(Boolean.TRUE)
.setIsWxa(0)
//设置子账号相关
.setAppId(APP_ID)
.setSecretKey(SECRET_KEY);
vodSubAccountGetPlaySafeTokenResponse = new VodSubAccountServiceImpl().getPlaySafeToken(
vodSubAccountGetPlaySafeTokenRequest);
Assert.assertNotNull(vodSubAccountGetPlaySafeTokenResponse);
if (vodSubAccountGetPlaySafeTokenResponse != null) {
log.debug("测试获取Playsafe Token成功,{}", JSON.toJSONString(vodSubAccountGetPlaySafeTokenResponse));
}
} 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、请求正确,返回VodSubAccountGetPlaySafeTokenResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| videoId | true | String | 视频ID,例如 e6b23c6f519c5906e54a13b8200d7bb0_e |
| viewerId | true | String | 观看者ID,要求不同的观看者使用不同的ID |
| viewerIp | false | String | 观看者IP,如果为空,会自动获取调用该接口时的IP |
| viewerName | false | String | 观看者名称 |
| expires | false | Long | token 有效时长,单位为秒。为空时默认为10分钟 |
| disposable | false | Boolean | token有效期,true表示token仅一次有效(验证一次后,token就失效了),false表示在有效期内可以进行多次验证。默认为false |
| isWxa | false | Integer | 是否微信小程序播放,1为是,0为否。默认为0【对应api文档的iswxa字段】 |
| extraParams | false | String | 自定义的其它参数 |
| appId | true | String | 子账号appId |
| secretKey | true | String | 子账号secretKey |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | String | token(播放凭证) |
| userId | String | 用户ID |
| videoId | String | 视频ID,例如 e6b23c6f519c5906e54a13b8200d7bb0_e |
| viewerIp | String | 观看者IP,如果为空,或自动获取调用该接口时的IP |
| viewerId | String | 观看者ID,要求不同的观看者使用不同的ID |
| viewerName | String | 观看者名称 |
| extraParams | String | 自定义的其它参数 |
| ttl | Long | token 有效时长,单位为毫秒 |
| createdTime | Date | token 创建时间 |
| expiredTime | Date | token 过期时间 |
| isWxa | Integer | 是否微信小程序播放,1为是,0为否【对应api文档的iswxa字段】 |
| disposable | Boolean | token有效期,true表示token仅一次有效(验证一次后,token就失效了),false表示在有效期内可以进行多次验证 |
12、查询子账号统计汇总数据
描述
按日期查询子账号统计汇总数据
接口地址(仅做说明使用):https://api.polyv.net/v2/sub-account/stats/agg/page
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@Test
public void testGetSubStatsAgg() throws IOException, NoSuchAlgorithmException {
VodSubAccountStatsAggPageRequest vodSubAccountStatsAggPageRequest = new VodSubAccountStatsAggPageRequest();
VodSubAccountStatsAggPageResponse vodSubAccountStatsAggPageResponse = null;
try {
vodSubAccountStatsAggPageRequest.setStartDate(getDate(2020, 6, 24)).setEndDate(getDate(2021, 4, 24));
vodSubAccountStatsAggPageResponse = new VodSubAccountServiceImpl().getSubStatsAgg(
vodSubAccountStatsAggPageRequest);
Assert.assertNotNull(vodSubAccountStatsAggPageResponse);
if (vodSubAccountStatsAggPageResponse != null) {
log.debug("测试查询子账号统计汇总数据成功{}", JSON.toJSONString(vodSubAccountStatsAggPageResponse));
}
} 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、请求正确,返回VodSubAccountStatsAggPageResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| startDate | true | Date | 查询的开始时间,格式要求:yyyy-MM-dd,时间跨度不能超过一年 |
| endDate | true | Date | 查询的结束时间,格式要求:yyyy-MM-dd,时间跨度不能超过一年 |
| false | String | 要查询的子账号邮箱,如果同时传了email和appId,则优先使用email | |
| appId | false | String | 要查询的子账号appId |
| currentPage | false | Integer | 页数,默认为1【对应api文档的page字段】 |
| pageSize | false | Integer | 每页显示的数据条数,默认每页显示20条数据 |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| contents | Array | 查询的结果列表【详见VodContentsList参数描述】 |
| pageSize | Integer | 每页显示的数据条数,默认每页显示20条数据 |
| currentPage | Integer | 当前页【对应api文档的pageNumber字段】 |
| totalItems | Integer | 记录总条数 |
| totalPage | Integer | 总页数【对应api文档的totalPages字段】 |
VodContentsList参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| String | 子账号邮箱,如果子账号被删除,则该字段为null | |
| appId | String | 子账号appId |
| flowSize | Long | 源文件大小,单位:byte |
| view | Long | 播放量,单位:个 |
| duration | Long | 播放时长,单位:秒 |
13、查询子账号统计详情
描述
按日期查询子账号统计详情列表
接口地址(仅做说明使用):https://api.polyv.net/v2/sub-account/stats/detail/list
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
2、email和appId不能同时为空
单元测试
@Test
public void testGetSubStatsDetailList() throws IOException, NoSuchAlgorithmException {
VodSubAccountStatsDetailRequest vodSubAccountStatsDetailRequest = new VodSubAccountStatsDetailRequest();
VodSubAccountStatsDetailResponse vodSubAccountStatsDetailResponse = null;
try {
vodSubAccountStatsDetailRequest.setStartDate(getDate(2021, 4, 10))
.setEndDate(getDate(2021, 4, 24))
.setAppId(APP_ID);
vodSubAccountStatsDetailResponse = new VodSubAccountServiceImpl().getSubStatsDetailList(
vodSubAccountStatsDetailRequest);
Assert.assertNotNull(vodSubAccountStatsDetailResponse);
if (vodSubAccountStatsDetailResponse != null) {
log.debug("测试测试查询子账号统计详情{}", JSON.toJSONString(vodSubAccountStatsDetailResponse));
}
} 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、请求正确,返回VodSubAccountStatsDetailResponse对象,B端依据此对象处理业务逻辑;
2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]
3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]
请求入参描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| startDate | true | Date | 查询的开始时间,格式要求:yyyy-MM-dd,时间跨度不能超过一年 |
| endDate | true | Date | 查询的结束时间,格式要求:yyyy-MM-dd,时间跨度不能超过一年 |
| false | String | 要查询的子账号邮箱,如果同时传了email和appId,则优先使用email | |
| appId | false | String | 要查询的子账号appId |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| details | Array | 查询的结果列表【详见VodStatsDetailList参数描述】 |
VodStatsDetailList参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| currentDay | String | 日期,格式:yyyy-MM-dd,如:2021-06-01 |
| pcFlowSize | Long | PC端播放流量,单位:byte |
| mobileFlowSize | Long | 移动端播放流量,单位:byte |
| totalFlowSize | Long | 总流量,单位:byte |
| pcView | Long | PC端播放量,单位:个 |
| mobileView | Long | 移动端播放量,单位:个 |
| totalView | Long | 总播放量,单位:个 |
| pcDuration | Long | PC端播放时长,单位:秒 |
| mobileDuration | Long | 移动端播放时长,单位:秒 |
| totalDuration | Long | 总播放时长,单位:秒 |
