视频 API 接口参考
1. 基础地址
| 服务 | 基础地址 |
|---|---|
| 视频数据 | https://cik.netlify.app |
| 资源代理 | https://deploy-3wi.pages.dev |
2. JSON 响应格式
视频源、视频列表和视频详情接口返回 JSON。
2.1 成功响应
json
{
"code": 0,
"data": {},
"msg": "成功"
}| 字段 | 类型 | 说明 |
|---|---|---|
code | 0 | 请求成功 |
data | `object | array` |
msg | string | 提示信息 |
2.2 失败响应
json
{
"code": -1,
"data": null,
"msg": "失败"
}| 字段 | 类型 | 说明 |
|---|---|---|
code | -1 | 请求失败 |
data | null | 无数据 |
msg | string | 错误信息 |
业务失败时 HTTP 状态码仍可能为 200,使用时应检查 code。
3. 获取视频源
http
GET https://cik.netlify.app/api/video/source3.1 请求参数
无。
3.2 data
data 为视频源数组。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | string | 是 | 视频源唯一标识,供其他接口的 api 参数使用 |
name | string | 是 | 视频源名称 |
rating | number | 是 | 视频源评分 |
api | string | 是 | 视频源的原始采集地址 |
group | string | 是 | 视频源分组,常见值为 normal、18+ |
dataSource | string | 否 | 数据源文件路径 |
searchDisable | boolean | 否 | 搜索禁用标记 |
3.3 响应示例
json
{
"code": 0,
"data": [
{
"key": "a",
"name": "电影天堂资源",
"rating": 4.5,
"api": "https://example.com/api.php/provide/vod/at/xml",
"dataSource": "/data/video/example.json",
"searchDisable": true,
"group": "normal"
},
{
"key": "h",
"name": "示例视频源",
"rating": 4.2,
"api": "https://example.org/api.php/provide/vod/at/xml",
"group": "normal"
}
],
"msg": "成功"
}4. 获取视频列表
http
GET https://cik.netlify.app/api/video/list4.1 查询参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
api | string | 是 | 无 | 视频源 key |
s | string | 否 | 空字符串 | 搜索关键词 |
t | `string | number` | 否 | 不筛选 |
p | `string | number` | 否 | 1 |
请求示例:
http
GET https://cik.netlify.app/api/video/list?api=a&s=示例&p=1t 仅对当前 api 对应的视频源有效。不同视频源的类型 ID 不通用,应使用当前响应中的 types。
4.2 data
| 字段 | 类型 | 可能缺少 | 说明 |
|---|---|---|---|
page | PageInfo | 是 | 分页信息 |
video | VideoListItem[] | 是 | 视频列表 |
types | VideoType[] | 是 | 当前视频源的类型列表 |
name | string | 否 | 当前视频源名称 |
s | string | 否 | 实际采用的搜索关键词 |
type | `number | null` | 否 |
prefer | boolean | 否 | 是否属于特殊视频源分组 |
searchDisable | boolean | 否 | 搜索禁用标记 |
部分视频源异常时可能返回 code: 0,但缺少 page、video 和 types。
4.3 PageInfo
| 字段 | 类型 | 说明 |
|---|---|---|
page | number | 当前页码 |
pagecount | number | 总页数 |
pagesize | number | 每页记录数 |
recordcount | number | 总记录数 |
4.4 VideoListItem
| 字段 | 类型 | 说明 |
|---|---|---|
id | number | 当前视频源内的视频 ID |
name | string | 视频名称 |
note | string | 更新状态、集数或清晰度 |
last | string | 最后更新时间,格式由视频源决定 |
dt | string | 播放线路标识,可能由逗号分隔 |
tid | number | 视频类型 ID |
type | string | 视频类型名称 |
4.5 VideoType
| 字段 | 类型 | 说明 |
|---|---|---|
tid | `string | number` |
tname | string | 类型名称 |
4.6 响应示例
json
{
"code": 0,
"data": {
"page": {
"page": 1,
"pagecount": 1,
"pagesize": 20,
"recordcount": 1
},
"video": [
{
"last": "2025-08-28 17:27:47",
"id": 61772,
"tid": 7,
"name": "示例视频",
"type": "喜剧片",
"dt": "source,source-m3u8",
"note": "HD国语"
}
],
"types": [
{
"tid": "7",
"tname": "喜剧片"
}
],
"name": "电影天堂资源",
"s": "示例",
"type": null,
"prefer": false,
"searchDisable": true
},
"msg": "成功"
}5. 获取视频详情
http
GET https://cik.netlify.app/api/video/{api}/{id}5.1 路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
api | string | 是 | 视频源 key |
id | `string | number` | 是 |
请求示例:
http
GET https://cik.netlify.app/api/video/a/130325.2 data
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
last | string | 是 | 最后更新时间,格式由视频源决定 |
id | number | 是 | 视频 ID |
tid | number | 是 | 视频类型 ID |
name | string | 是 | 视频名称 |
type | string | 是 | 视频类型名称 |
pic | string | 是 | 封面图片 URL |
subname | string | 否 | 副标题或别名 |
lang | string | 是 | 语言,可能为空字符串 |
area | string | 否 | 地区 |
year | `string | number` | 是 |
state | `string | number` | 是 |
note | string | 是 | 更新状态、集数或清晰度 |
actor | string | 否 | 演员列表 |
director | string | 否 | 导演 |
des | string | 是 | 视频简介,可能包含 HTML 标签和实体 |
dataList | VideoSource[] | 是 | 播放线路列表 |
prefer | boolean | 是 | 是否属于特殊视频源分组 |
proxy | boolean | 是 | 是否需要使用代理播放页 |
5.3 VideoSource
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 播放线路标识,例如 dyttm3u8、dytt;名称由视频源定义 |
urls | VideoItem[] | 该线路下的播放项 |
5.4 VideoItem
| 字段 | 类型 | 说明 |
|---|---|---|
label | string | 集数、清晰度或播放项名称 |
url | string | 播放目标地址,可能是 .m3u8、.mp4、.webm 等媒体直链,也可能是包含实际媒体地址的播放网页 |
5.5 响应示例
json
{
"code": 0,
"data": {
"last": "2025-02-26 12:19:28",
"id": 13032,
"tid": 11,
"name": "示例电影",
"type": "剧情片",
"pic": "https://example.com/poster.jpg",
"subname": "Example Movie",
"lang": "英语",
"area": "美国",
"year": 2014,
"state": "",
"note": "HD中字",
"actor": "演员 A,演员 B",
"director": "导演 A",
"des": "<p>视频简介</p>",
"dataList": [
{
"name": "dyttm3u8",
"urls": [
{
"label": "HD中字",
"url": "https://example.com/video/index.m3u8"
}
]
},
{
"name": "dytt",
"urls": [
{
"label": "HD中字",
"url": "https://example.com/share/video-id"
}
]
}
],
"prefer": false,
"proxy": false
},
"msg": "成功"
}6. 资源代理
http
GET https://deploy-3wi.pages.dev/api/proxy?url={targetUrl}6.1 查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 是 | 经过 URL 编码的目标资源地址 |
请求示例:
http
GET https://deploy-3wi.pages.dev/api/proxy?url=https%3A%2F%2Fexample.com%2Fvideo6.2 响应
返回目标地址的原始响应内容,不使用 JSON 响应格式。内容可能是 HTML、图片、音频或视频。
7. 注意事项
- 视频
id只在所属视频源内有效,存储、缓存或构造详情请求时应同时保留api和id。 - 不同视频源的
tid含义不同,不能跨视频源复用。 types[].tid可能是字符串或数字。dt是播放线路标识,不是日期;其中的名称通常对应详情的dataList[].name,最终应以详情响应为准,不能仅根据名称后缀判断 URL 类型。last的格式由视频源决定,可能同时包含日期和时间。year、state的类型可能随视频源变化。subname、area、actor、director可能缺少。des可能包含第三方提供的 HTML,展示前应进行可信标签过滤或转义,不能直接作为未清洗的 HTML 插入页面。dataList可以同时包含同一播放项的媒体直链线路和网页线路,不同线路通常通过相同的label对应。dataList[].urls[].url不是固定格式,不能假定它一定以.m3u8结尾。- m3u8 地址可能返回主播放列表或媒体播放列表。主播放列表可以引用一个或多个不同码率、分辨率的子播放列表;能否选择清晰度取决于实际变体数量和播放器能力。
- 播放地址中的查询参数可能用于签名或有效期校验,应原样保留,不能统一删除。
- 播放网页通常会在页面内部继续加载实际媒体资源,常见格式是 m3u8,也可能是 MP4、WebM 或动态生成的地址。
- 详情接口只返回视频源提供的原始播放目标,不保证返回可直接交给媒体播放器的最终资源地址。网页地址可以直接在浏览器中打开;其他客户端若需要媒体直链,需要自行解析网页。
- 图片、播放网页和媒体资源可能受跨域策略或 HTTP 混合内容限制;浏览器无法直接加载时,可按需使用资源代理接口。
- JSON 接口与资源代理接口的响应格式不同。
