Search Videos
Updated: 2022-05-23 19:02:59
Interface URL
http://api.polyv.net/v2/video/search-videos
Interface Description
Search for videos
Supported Format
JSON
Request Method
GET
Request Limit
TRUE
Request Parameters
| Parameter | Required | Type & Scope | Description |
|---|---|---|---|
| userid | Yes | string | User ID |
| ptime | Yes | long | Current 13-digit millisecond timestamp, valid for 3 minutes |
| sign | Yes | String | Signature, a 40-character uppercase SHA1 value [See Signature Generation Rules] |
| filters | No | string | Video information to return, separated by commas. Values: basicInfo, metaData, transcodeInfo, snapshotInfo. Default returns only basicInfo |
| cateId | No | long | Video category ID |
| title | No | string | Fuzzy search by title |
| tag | No | string | Fuzzy search by video tag |
| uploader | No | string | Uploader |
| status | No | string | Video status, multiple statuses separated by commas. To query published videos, pass either 61 or 60, e.g., "61,50" |
| containSubCate | No | boolean | Whether to include subcategories. true: include, false: exclude |
| startTime | No | long | Query by creation time range, start timestamp, 13-digit timestamp |
| endTime | No | long | End timestamp, 13-digit timestamp |
| encrypted | No | boolean | Whether encrypted |
| playAuthEnable | No | boolean | Whether playback authorization is enabled |
| sort | No | string | Result sorting. Values: creationTimeAsc, creationTimeDesc, playTimesAsc, playTimesDesc. Default is creationTimeAsc |
| page | No | int | Page number, default is 1 |
| pageSize | No | int | Page size, default is 10, maximum is 1000 |
JSON Example
{
"code": 200,
"status": "success",
"message": "success",
"data": {
"pageNumber": 1,
"totalPages": 13,
"pageSize": 1,
"contents": [
{
"vid": "a2dc4f25173df1362065bd0d3732a30e_a",
"basicInfo": {
"title": "a2dc4f25175d64f185bf631591fb08d0",
"description": "",
"duration": 78.0,
"coverURL": "https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_0_b.jpg",
"creationTime": "2021-04-16 11:50:34",
"updateTime": "2021-04-16 11:52:45",
"size": 36251552,
"status": 61,
"cateId": 1,
"cateName": "默认分类",
"tags": "",
"uploader": "主账号",
"playTimes": 1
},
"metaData": {
"size": 36251552,
"format": "mp4",
"duration": 78.0,
"bitrate": 3549,
"fps": 29,
"height": 720,
"width": 1280,
"codec": "h264"
},
"transcodeInfos": [
{
"playUrl": null,
"definition": "LD",
"bitrate": 548,
"duration": 78.0,
"encrypt": true,
"format": "pdx",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
},
{
"playUrl": "https://hls.videocc.net/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_1.m3u8",
"definition": "LD",
"bitrate": 548,
"duration": 78.0,
"encrypt": true,
"format": "hls",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
},
{
"playUrl": null,
"definition": "SD",
"bitrate": 997,
"duration": 78.0,
"encrypt": true,
"format": "pdx",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
},
{
"playUrl": "https://hls.videocc.net/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_2.m3u8",
"definition": "SD",
"bitrate": 997,
"duration": 78.0,
"encrypt": true,
"format": "hls",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
},
{
"playUrl": null,
"definition": "HD",
"bitrate": 1404,
"duration": 78.0,
"encrypt": true,
"format": "pdx",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
},
{
"playUrl": "https://hls.videocc.net/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_3.m3u8",
"definition": "HD",
"bitrate": 1404,
"duration": 78.0,
"encrypt": true,
"format": "hls",
"fps": 29,
"height": 720,
"width": 1280,
"status": "normal"
}
],
"snapshotInfo": {
"imageUrl": [
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_0.jpg",
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_1.jpg",
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4f25173df1362065bd0d3732a30e_2.jpg",
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_3.jpg",
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_4.jpg",
"https://img.videocc.net/uimage/a/a2dc4f2517/e/a2dc4xxxxxxxf1362065bd0d3732a30e_5.jpg"
]
}
}
],
"totalItems": 13
}
}
Error Response JSON
签名不正确
{
"code":400,
"status":"error",
"message":"the sign is not right",
"data":""
}
时间戳过期
{
"code":400,
"status":"error",
"message":"ptime is too old.",
"data":""
}
内部错误,或传了非法参数,程序转换异常
{
"code": 500,
"status": "fail",
"message": "undefined error",
"data": null
}
Field Description
| Field | Description |
|---|---|
| code | Response HTTP status code |
| status | Status |
| message | Error description |
| data | Returned data |
| data.pageNumber | Current page number |
| data.pageSize | Items per page |
| data.totalItems | Total number of items |
| data.contents | Result list |
| vid | Video ID |
| basicInfo.title | Video title |
| basicInfo.description | Video description |
| basicInfo.duration | Source video duration, in seconds |
| basicInfo.coverURL | Cover image URL, large image |
| basicInfo.creationTime | Creation time |
| basicInfo.updateTime | Update time |
| basicInfo.size | Source file size, in Bytes |
| basicInfo.status | Video status code |
| basicInfo.cateId | Category ID, e.g., 1 for root directory |
| basicInfo.cateName | Category name |
| basicInfo.tags | Tags |
| basicInfo.uploader | Uploader |
| basicInfo.playTimes | Video play count |
| transcodeInfos.playUrl | Playback URL |
| transcodeInfos.definition | Definition: SOURCE, LD, SD, HD |
| transcodeInfos.duration | Duration, in seconds |
| transcodeInfos.encrypt | true for encrypted video, false for unencrypted |
| transcodeInfos.format | Transcoding format, e.g., mp4, flv, pdx, hls |
| transcodeInfos.fps | Video frame rate |
| transcodeInfos.bitrate | Bitrate in kbps |
| transcodeInfos.height | Resolution height, in px |
| transcodeInfos.width | Resolution width, in px |
| transcodeInfos.status | Video status: normal or unavailable |
| metaData | Source file size, in Bytes |
| metaData.size | Source file size, in Bytes |
| metaData.format | Video container type, e.g., mp4, flv |
| metaData.duration | Source video duration, in seconds |
| metaData.bitrate | Video bitrate, in bps |
| metaData.fps | Video frame rate |
| metaData.height | Resolution height, in px |
| metaData.width | Resolution width, in px |
| metaData.codec | Encoding format, e.g., h264, h265 |
| snapshotInfo.imageUrl | Array of screenshot URLs |
| Video Status Code | Meaning |
|---|---|
| 60/61 | Published |
| 10 | Waiting for encoding |
| 20 | Encoding |
| 50 | Waiting for review |
| 51 | Review failed |
| -1 | Deleted |
Java Request Example
@Test
public void testSearchVideos() throws Exception {
String url = "http://api.polyv.net/v2/video/search-videos";
long cateId = 1L;
boolean containSubCate = true;
String filters = "basicInfo,metaData,transcodeInfo,snapshotInfo";
Map<String, String> params = new HashMap<>();
params.put("userid", userid);
params.put("filters", filters);
params.put("containSubCate", String.valueOf(containSubCate));
params.put("cateId", String.valueOf(cateId));
params.put("ptime", String.valueOf(System.currentTimeMillis()));
params.put("sign", getSign(params, secretkey));
String response = HttpClientUtil.getInstance().sendHttpGet(url + "?" + PolyvTool.mapJoinNotEncode(params));
System.out.println(response);
}
