新增电视剧分集查询接口并更新第三方接口文档
- 新增 /openapi/partner/media/episodes 接口,通过父级 contentcode 查询电视剧分集列表,分集 contentcode 可作为 programCode 传入 SDK 获取播放地址 - JetsenMediaClient 新增 getEpisodes 方法,调橘视厅 getcontentlist.do 传 contentcode 参数获取分集 - API_DOC.md 补充 /list 多栏目查询、/list-all 全量聚合、/episodes 分集查询三个接口的详细文档
This commit is contained in:
111
API_DOC.md
111
API_DOC.md
@@ -281,8 +281,119 @@
|
||||
| `/openapi/partner/media/package` | GET | 无 | 查看授权范围 |
|
||||
| `/openapi/partner/media/catalog-tree` | GET | 无 | 栏目树(按授权过滤) |
|
||||
| `/openapi/partner/media/list` | GET | catalogid,pageindex,pagesize | 内容列表(按授权过滤) |
|
||||
| `/openapi/partner/media/list-all` | GET | parentCatalogid | 全量内容列表(按一级栏目聚合,不分页) |
|
||||
| `/openapi/partner/media/episodes` | GET | contentcode,pageindex,pagesize | 分集列表(通过父级contentcode) |
|
||||
| `/openapi/partner/media/search` | GET | keyword,pageindex,pagesize | 搜索(按授权过滤) |
|
||||
|
||||
#### 3.1.1 内容列表 `/list`
|
||||
|
||||
```
|
||||
GET /openapi/partner/media/list?catalogid=472&pageindex=1&pagesize=20
|
||||
```
|
||||
|
||||
**参数**:
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| catalogid | String | 是 | 栏目id,支持逗号分隔传多个(如 `472,492,494`) |
|
||||
| pageindex | int | 否 | 页码,默认1 |
|
||||
| pagesize | int | 否 | 每页条数,默认20 |
|
||||
|
||||
**查询方式**:
|
||||
- 单栏目(`catalogid=472`):走橘视厅原生分页,响应快
|
||||
- 多栏目(`catalogid=472,492,494`):聚合各栏目全量内容后本地分页
|
||||
|
||||
**返回**:
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"list": [{"contentcode":"...", "name":"...", "posterimg":"...", "isFree":0, "episodecount":1}],
|
||||
"totalCount": 3227,
|
||||
"currPage": 1,
|
||||
"pageSize": 20,
|
||||
"totalPage": 162
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.1.2 全量内容列表 `/list-all`
|
||||
|
||||
```
|
||||
GET /openapi/partner/media/list-all?parentCatalogid=471
|
||||
```
|
||||
|
||||
一次请求返回某一级栏目(如471电影)下所有二级栏目合并后的全部内容,不分页。适合按天低频全量同步。
|
||||
|
||||
**参数**:
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| parentCatalogid | String | 否 | 一级栏目id,默认471(电影) |
|
||||
|
||||
**返回**:
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"list": [{"contentcode":"...", "name":"...", "posterimg":"...", "isFree":0}],
|
||||
"totalCount": 3425,
|
||||
"parentCatalogid": "471"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> 注:各二级栏目内容可能有跨栏目重复(一条内容可属多个栏目),第三方自行按 contentcode 去重。
|
||||
|
||||
#### 3.1.3 分集列表 `/episodes`
|
||||
|
||||
```
|
||||
GET /openapi/partner/media/episodes?contentcode=23010012026061709581101832&pageindex=1&pagesize=20
|
||||
```
|
||||
|
||||
传入电视剧的父级 contentcode,返回其下各分集列表。分集的 contentcode 可作为 programCode 传入 SDK 获取播放地址。
|
||||
|
||||
**参数**:
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| contentcode | String | 是 | 父级内容编码(电视剧的 contentcode) |
|
||||
| pageindex | int | 否 | 页码,默认1 |
|
||||
| pagesize | int | 否 | 每页条数,默认20 |
|
||||
|
||||
**返回**:
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"list": [
|
||||
{
|
||||
"contentcode": "23010022026061709581131330",
|
||||
"name": "家有儿女第四部 1",
|
||||
"episodeindex": 1,
|
||||
"duration": 1531,
|
||||
"isFree": 0,
|
||||
"parentContentType": 1
|
||||
}
|
||||
],
|
||||
"totalCount": 67,
|
||||
"currPage": 1,
|
||||
"pageSize": 20,
|
||||
"totalPage": 4
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**关键字段**:
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| contentcode | 分集编码,作为 programCode 传入 SDK 获取播放地址 |
|
||||
| episodeindex | 集数索引,排序用 |
|
||||
| name | 集名 |
|
||||
| duration | 时长(秒) |
|
||||
| isFree | 是否免费(0=付费,1=免费) |
|
||||
|
||||
### 3.2 天卡代销 `/openapi/partner/card`
|
||||
|
||||
| 路径 | 方法 | 参数 | 说明 |
|
||||
|
||||
@@ -98,6 +98,22 @@ public class JetsenMediaClient {
|
||||
return post("content/getcontentlist.do", biz);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分集列表(通过父级 contentcode)
|
||||
* <p>橘视厅 getcontentlist.do 传 contentcode 参数时返回该内容的分集列表(电视剧各集)。</p>
|
||||
* @param contentcode 父级内容编码(电视剧的 contentcode)
|
||||
* @param pageindex 页码,从 1 开始
|
||||
* @param pagesize 每页条数
|
||||
*/
|
||||
public JSONObject getEpisodes(String contentcode, int pageindex, int pagesize) {
|
||||
Map<String, Object> biz = new HashMap<>();
|
||||
biz.put("contentcode", contentcode);
|
||||
biz.put("orderinfo", "1");
|
||||
biz.put("pageindex", String.valueOf(pageindex));
|
||||
biz.put("pagesize", String.valueOf(pagesize));
|
||||
return post("content/getcontentlist.do", biz);
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
* @param searchvalue 关键字
|
||||
|
||||
@@ -293,6 +293,39 @@ public class OpenApiMediaController {
|
||||
return ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分集列表(通过父级 contentcode)
|
||||
* <p>传入电视剧的 contentcode,返回其下各分集列表,分集的 contentcode 可作为 programCode 传入 SDK 获取播放地址。</p>
|
||||
* <p>三级授权:CONTENT(校验contentcode在授权范围内) > CATALOG/FULL(直接返回)</p>
|
||||
*/
|
||||
@ApiOperation("分集列表(通过父级contentcode)")
|
||||
@GetMapping("/episodes")
|
||||
public R episodes(@RequestParam String contentcode,
|
||||
@RequestParam(defaultValue = "1") int pageindex,
|
||||
@RequestParam(defaultValue = "20") int pagesize,
|
||||
HttpServletRequest req) {
|
||||
long start = System.currentTimeMillis();
|
||||
String partnerId = partnerIdFrom(req);
|
||||
ContentPackageEntity pkg = contentPackageService.getByPartnerId(partnerId);
|
||||
Set<String> contentCodes = parseContentCodes(pkg);
|
||||
|
||||
// CONTENT级别:校验 contentcode 在授权范围内
|
||||
if (contentCodes != null && !contentCodes.contains(contentcode)) {
|
||||
logCall(req, "/episodes", "GET", 400, start);
|
||||
return R.error("contentcode不在授权范围内");
|
||||
}
|
||||
|
||||
JSONObject resp = jetsenMediaClient.getEpisodes(contentcode, pageindex, pagesize);
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("list", extractList(resp));
|
||||
data.put("totalCount", resp.getIntValue("sizetotal"));
|
||||
data.put("currPage", pageindex);
|
||||
data.put("pageSize", pagesize);
|
||||
data.put("totalPage", resp.getIntValue("pagetotal"));
|
||||
logCall(req, "/episodes", "GET", 0, start);
|
||||
return R.dataSuccess(data);
|
||||
}
|
||||
|
||||
/** 搜索(按授权过滤) */
|
||||
@ApiOperation("搜索")
|
||||
@GetMapping("/search")
|
||||
|
||||
Reference in New Issue
Block a user