You need to enable JavaScript to run this app.
文档中心
Viking AI 搜索

Viking AI 搜索

复制全文
下载 pdf
数据API
ListDatasetData - 获取视频数据及详情(不推荐)
复制全文
下载 pdf
ListDatasetData - 获取视频数据及详情(不推荐)
​
说明​
获取所有数据列表​
指定数据集ID,获取所有数据集内数据​
请求说明​
接口名称:ListDatasetDataAPI​
请求参数​
Request​
​
参数​
类型​
是否必选​
示例值​
描述​
DatasetID​
String​
是​
"106260669"​
数据集 ID​
PageNumber​
Int​
否​
1​
搜索结果的页码;​
起始值为1,默认值为1,如果小于1则报参数错误;​
不传时返回默认值。​
PageSize​
Int​
否​
10​
每页搜索结果的数量;​
默认值为10,最大值为100,如果小于等于 0 或者超过 100 则报参数错误;​
不传时返回默认值。​
​
请求示例​
​
curl 'http://open.volcengineapi.com/?Action=ListDatasetDataAPI&Version=2025-03-01' \​
--header 'Content-Type: application/json' \​
--data '{​
"DatasetID": "106260669",​
"Page": 1,​
"PageSize": 10​
}'​
​
​
响应参数​
Response​
​
字段名​
类型​
描述​
TotalCount​
Int​
查询结果的总数​
Items​
搜索结果​
​
ListDatasetDataAPIRespItem​
​
字段名​
类型​
描述​
ContentID​
String​
媒体内容的唯一标识(在同一个数据集下唯一)​
ContentType​
String​
内容类型,支持上传枚举值: ​
  • "collection":媒体系列,例如电视剧的元数据信息 ​
  • "video":视频内容,例如上传电视剧单集和电影的视频以及元数据信息​
ParentContentID​
String​
父内容唯一标识​
SequenceIndex​
Int64​
标识多个子内容在父内容中的顺序信息(比如电视剧的集数),用于串联视频内容进行同媒体系列的跨视频理解​
Status​
String​
状态:处理完成(0),处理中(1),数据异常(2)​
ErrorCode​
String​
异常信息:返回数据的异常信息​
Timestamp​
Int64​
更新时间戳 :秒级的 unix表示​
​
处理状态​
数据接入和质量问题错误码及其含义:​
10001: InvalidJsonLineError - 无效的json行​
10002: DataPrimaryKeyNotFoundError - 数据唯一标识未找到​
10003: DataContentTypeNotFoundError - 数据类型未找到​
10004: UnsupportedContentTypeError - 不支持的数据类型​
10005: DuplicateMediaSequenceIndexError - 重复的媒体内容序号​
10006: MediaCannotBeSetAsParentError - Video类型不能设置为父内容​
10007: ParentContentMustBeCollectionError - 父内容必须是Collection类型​
10008: ParentContentNotUploadedError - 父内容未上传​
10009: InvalidVideoUrlError - 无效的视频URL​
10010: InvalidImageUrlError - 无效的图片URL​
10011: VideoUrlNotUploadedError - 视频URL未上传​
10012: InvalidMediaSequenceIndexError - 无效的媒体内容序号(为负数)​
视频处理失败的错误码及含义:​
20000: VideoProcessError - 视频处理错误​
20001: VideoDurationExceedsLimitError - 视频时长超过限制​
20002: VideoSizeExceedsLimitError - 视频大小超过限制​
22001: VideoUnderstandingClipsCommonException - 视频理解过程异常​
22002: VideoUnderstandingClipsNoCallbackError - 视频理解无回调​
22003: VideoUnderstandingClipsResultFailed - 视频理解结果失败​
响应示例​
​
{​
"Result": {​
"Items": [{​
"ContentID": "test_0522_collection_01",​
"ContentType": "collection",​
"ParentContentID": "",​
"SequenceIndex": 0,​
"Timestamp": 1748953903,​
"Status": 0,​
"ErrorCode": "0"​
},​
{​
"ContentID": "test_0522_series_01",​
"ContentType": "video",​
"ParentContentID": "test_0522_collection_01",​
"SequenceIndex": 1,​
"Timestamp": 1748953166,​
"Status": 0,​
"ErrorCode": "0"​
},​
{​
"ContentID": "test_0522_single_01",​
"ContentType": "video",​
"ParentContentID": "",​
"SequenceIndex": 0,​
"Timestamp": 1748511326,​
"Status": 0,​
"ErrorCode": "0"​
},​
{​
"ContentID": "test_0522_series_02", ​
"ContentType": "video", ​
"ParentContentID": "test_0522_collection_01", ​
"SequenceIndex": 2, ​
"Timestamp": 1748503206, ​
"Status": 0, ​
"ErrorCode": "0"​
},​
{​
"ContentID": "test_0522_series_03",​
"ContentType": "video",​
"ParentContentID": "test_0522_collection_01",​
"SequenceIndex": 3,​
"Timestamp": 1748413589,​
"Status": -1,​
"ErrorCode": "unknown"​
}]​
}​
}​
​
​
获取数据详情信息​
接口名称:GetDatasetDataAPI​
指定数据集ID和数据ID,获取视频数据的详情内容​
请求参数​
Request​
​
参数​
类型​
是否必选​
示例值​
描述​
DatasetID​
String​
是​
"106260669"​
数据集 ID​
ContentID​
String​
是​
"106260669_5770528247083860262"​
数据唯一标识​
​
请求示例​
​
curl 'http://open.volcengineapi.com/?Action=GetDatasetDataAPI&Version=2025-03-01' \​
--header 'Content-Type: application/json' \​
--data '{​
"DatasetID": "106260669",​
"ContentID": "test_0522_collection_01"​
}'​
​
​
响应参数​
Response​
​
字段名​
类型​
描述​
Content​
String​
原始数据字段​
VideoContent​
GetDatasetDataAPIRespVideoContent​
Type为video时,返回视频理解后的内容​
CollectionContent​
GetDatasetDataAPIRespCollectionContent​
Type为collection时,返回系列下所有视频生成的内容总结​
​
GetDatasetDataAPIRespVideoContent​
​
字段名​
类型​
描述​
Title​
String​
生成的视频标题​
Summary​
String​
生成的视频总结​
String​
视频故事线理解返回的全部内容,返回一段内含json结构的字符串​
见Insight​
​
GetDatasetDataAPIRespCollectionContent​
​
字段名​
类型​
描述​
Summary​
String​
生成的系列总结​
​
Insight​
​
字段名​
类型​
描述​
Summaries​
Array<String>​
总结​
Titles​
Array<String>​
标题​
Clips​
Array<Clips>​
视频中分片段的理解内容​
​
Clips​
​
字段名​
类型​
描述​
Title​
String​
标题​
Summary​
String​
总结​
Score​
Float​
高光程度得分值,分数越高,高光值越高​
取值范围1-5​
Dialogue​
String​
视频对话​
Start​
Float​
开始时间​
End​
Float​
结束时间​
​
Insight字段详情​
​
{​
"Summaries": [​
"唐仁与秦风卷入黄金失窃与密室杀人双重迷局,警方通缉与黑帮威胁接踵而至。两人通过监控覆盖规律与现场痕迹,发现凶手藏匿工坊长达一周。黄金被铸成佛像未流出,真凶竟是思诺养父为掩盖罪行设局。最终在佛像内寻回黄金,揭露杀人动机与完美犯罪手法,警匪追逐中真相浮出水面。"​
],​
"Titles": [​
"密室谜案与黄金佛像背后的终极对决"​
],​
"Clips": [​
{​
"Title": "女孩的秘密与决定",​
"Summary": "影片中,一个男孩失踪后,他的父亲一直在寻找他,甚至怀疑儿子已死,并认为凶手可能是一个女孩。画面中,蓝脸人在学校透过围栏观察着,场景切换到街道上,蓝脸人继续在人群中穿梭。另一边,一个蓝脸女孩在街道上行走,神情忧虑。她似乎知道继父对自己有着不寻常的爱,担心事情暴露,因此决定除掉继父。整个片段充满了悬疑和紧张的氛围。",​
"Score": 3.5,​
"Dialogue": null,​
"Start": 7414.5,​
"End": 7460.0​
},​
{​
"Title": "探秘真相,终章落幕",​
"Summary": "秦风在医院与思诺对峙,揭开了斯诺的阴谋。之后,秦风与唐仁在街头相遇,两人决定一起继续探案。他们来到一个高科技实验室,见到了许多先进的设备。最后,电影在一系列的字幕和鸣谢中结束。",​
"Score": 3.5,​
"Dialogue": null,​
"Start": 7460.0,​
"End": 8142.5​
}​
]​
}​
​
响应示例​
​
{​
"ResponseMetadata":{​
"RequestId":"",​
"Service":"",​
"Action":"",​
"Region":"",​
"Version":""​
},​
"Result":{​
"Content":"{\"description\":\"2007 年,地球基础科学出现异常扰动,科学界...\",\"genre\":\"剧情 / 科幻\",\"parent_content_id\":\"\",\"sequence_index\":0,\"title\":\"三体第3集\",\"translated_name\":\"三体 / Three-Body\",\"writers\":[\"田良良\",\"陈晨\"],\"country\":\"中国大陆\",\"year\":\"2023\",\"language\":\"汉语普通话\",\"content_id\":\"test_0522_collection_01\",\"content_type\":\"collection\",\"runtime\":\"\",\"cast\":[\"张鲁一\",\"于和伟\",\"陈瑾\",\"王子文\",\"林永健\",\"李小冉\",\"王传君\",\"张帆\",\"白客\",\"涂松岩\",\"刘敏\",\"寇振海\",\"杨蓉\",\"孔琳\",\"张峻宁\",\"柯南・何裴\",\"李则慧\",\"赵健\",\"何杜娟\",\"孔连顺\",\"韩青\",\"黎明明\",\"张铭恩\",\"朱戬\",\"郭靖宇\",\"江南\",\"蔡佳\",\"胡杰\",\"于洋\",\"侯鸿亮\",\"梁振华\",\"费振翔\",\"高亚麟\",\"季晨\",\"马东\",\"唐家三少\",\"白一骢\",\"杨磊\",\"贾士凯\",\"王薇\",\"王羽铮\",\"于歆玥\",\"潘晓莉\",\"蔡盈盈\"],\"douban_rating\":\"7.0\",\"release_date\":\"2023-01-15 (中国大陆)\",\"director\":\"杨磊\"}",​
"VideoContent":null,​
"CollectionContent":{​
"Summary":"目录:第1个视频 卫冕冠军..."​
}​
}​
}​
​
​
​
{​
"ResponseMetadata":{​
"RequestId":"",​
"Service":"",​
"Action":"",​
"Region":"",​
"Version":""​
},​
"Result":{​
"Content":"{\"country\":\"中国大陆\",\"language\":\"汉语普通话\",\"sequence_index\":2,\"video_url\":[\"http://ai-search-rec-video.byte-test.com/d1d5d4c432cb4cebae6f5728902504fd/main.m3u8\"],\"writers\":[\"田良良\",\"陈晨\"],\"translated_name\":\"三体 / Three-Body\",\"content_type\":\"video\",\"director\":\"杨磊\",\"genre\":\"剧情 / 科幻\",\"runtime\":\"\",\"title\":\"三体第2集\",\"cast\":[\"张鲁一\",\"于和伟\",\"陈瑾\",\"王子文\",\"林永健\",\"李小冉\",\"王传君\",\"张帆\",\"白客\",\"涂松岩\",\"刘敏\",\"寇振海\",\"杨蓉\",\"孔琳\",\"张峻宁\",\"柯南・何裴\",\"李则慧\",\"赵健\",\"何杜娟\",\"孔连顺\",\"韩青\",\"黎明明\",\"张铭恩\",\"朱戬\",\"郭靖宇\",\"江南\",\"蔡佳\",\"胡杰\",\"于洋\",\"侯鸿亮\",\"梁振华\",\"费振翔\",\"高亚麟\",\"季晨\",\"马东\",\"唐家三少\",\"白一骢\",\"杨磊\",\"贾士凯\",\"王薇\",\"王羽铮\",\"于歆玥\",\"潘晓莉\",\"蔡盈盈\"],\"content_id\":\"test_0522_series_02\",\"description\":\"2007 年,地球基础科学出现异常扰动,科学界人心惶惶,多名科学家离奇自杀。纳米科学家汪淼被警官史强带到联合作战中心,潜入 “科学边界” 组织协助调查。汪淼接触到名为 ETO 的组织,发现其幕后统帅是自杀身亡的科学家杨冬的母亲叶文洁。随着 ETO 与作战中心的不断博弈,汪淼和史强逐渐确定《三体》游戏中的世界真实存在。一切事件源于两个文明为生存空间展开的生死相逐。在联合作战中心及科学家们的共同努力下,汪淼、史强等人坚定信念,准备与即将入侵的三体人展开殊死斗争。\",\"douban_rating\":\"7.0\",\"parent_content_id\":\"test_0522_collection_01\",\"release_date\":\"2023-01-15 (中国大陆)\",\"year\":\"2023\"}",​
"VideoContent":{​
"Title":"物理规律崩塌下的科学危机与人性挣扎",​
"Summary":"科学家们在实验中发现五次撞击结果完全一致,质疑物理规律时空均匀性。杨冬实验数据异常引发物理学存在性危机,科学边界组织提出射手与农场主假说,暗示人类可能如同二维生物般受制于更高维度规律。汪淼卷入调查发现照片倒计时,实验室频现超自然现象,物理学崩溃的阴影下,角色们在学术信仰与生存危机间艰难抉择,倒计时的逼近加剧了悬疑氛围。",​
"Insight":"{\"Summaries\":[\"科学家们在实验中发现五次撞击结果完全一致,质疑物理规律时空均匀性。杨冬实验数据异常引发物理学存在性危机,科学边界组织提出射手与农场主假说,暗示人类可能如同二维生物般受制于更高维度规律。汪淼卷入调查发现照片倒计时,实验室频现超自然现象,物理学崩溃的阴影下,角色们在学术信仰与生存危机间艰难抉择,倒计时的逼近加剧了悬疑氛围。\"],\"Titles\":[\"物理规律崩塌下的科学危机与人性挣扎\"],\"Clips\":[{\"Title\":\"神秘许可证引出奇幻场景\",\"Summary\":\"视频开始显示了一张国产电视剧发行许可证,随后画面切换到一系列神秘的宇宙景象...\",\"Score\":3.5,\"Dialogue\":\"(沪)剧审字(2023)第001号。\",\"Start\":0.0,\"End\":83.0},{\"Title\":\"《三体》电视剧开场\",\"Summary\":\"画面中是深邃的宇宙星空背景,上面出现了‘三体’和‘THREE-BODY’的字样,同时显示该剧根据刘慈欣同名小说《三体》改编,这是《三体》电视剧的开场片头。\",\"Score\":1.0,\"Dialogue\":\"根据刘慈欣同名小说《三体》改编。\",\"Start\":2588.5,\"End\":2594.5}]}"​
},​
"CollectionContent":null​
}​
}​
​
解析​
使用 Python 发起请求并进行解析示例​
​
import hashlib​
import hmac​
import json​
from datetime import datetime​
from urllib.parse import parse_qsl, urlencode, urlparse​
​
import pytz​
import requests​
from requests import PreparedRequest​
from requests.auth import AuthBase​
​
class OpenApiAuth(AuthBase):​
"""火山引擎OpenAPI默认验证方式"""​
​
def __init__(​
self,​
access_key: str,​
secret_key: str,​
region: str,​
host: str,​
service_name: str,​
) -> None:​
self.access_key = access_key​
self.secret_key = secret_key​
self.region = region​
self.host = host​
self.service_name = service_name​
​
def __call__(self, r: PreparedRequest):​
def sha256str(content: str | bytes) -> str:​
if content is None:​
content = ""​
if isinstance(content, str):​
content = content.encode("utf-8")​
return hashlib.sha256(content).hexdigest()​
​
def hmac_sha256(key: bytes, content: str) -> bytes:​
return hmac.new(key, content.encode("utf-8"), hashlib.sha256).digest()​
​
# 格式化时间​
now = datetime.now(tz=pytz.timezone("UTC"))​
timestr = now.strftime("%Y%m%dT%H%M%SZ")​
datestr = now.strftime("%Y%m%d")​
​
# headers​
# 去掉不用的header,方便看日志​
del r.headers["User-Agent"]​
del r.headers["Accept-Encoding"]​
del r.headers["Accept"]​
del r.headers["Connection"]​
del r.headers["Content-Length"]​
r.headers.update(​
{​
"X-Date": timestr,​
"Host": self.host,​
}​
)​
​
# 选择需要加入签名的header部分​
signed_headers = dict(​
filter(​
lambda x: x[0] in ["content-type", "content-md5", "host"]​
or x[0].startswith("x-"),​
r.headers.lower_items(), # key小写​
)​
)​
​
# 80或443端口情况下host不带端口​
if "host" in signed_headers:​
parse_result = urlparse("//" + signed_headers["host"])​
host = parse_result.hostname​
port = parse_result.port​
if port in ["80", "443"]:​
signed_headers["host"] = host​
​
# header信息打包到一起​
signed_str = "".join([f"{k}:{v}\n" for k, v in sorted(signed_headers.items())])​
​
SignedHeaders = ";".join(sorted(signed_headers.keys()))​
​
scheme, netloc, path, params, query, fragment = urlparse(r.url)​
​
# 潜规则,query升序​
query = parse_qsl(query)​
query.sort()​
query = urlencode(query)​
​
# 1. 创建一个正规化请求​
canoncial_request = "\n".join(​
[r.method, path, query, signed_str, SignedHeaders, sha256str(r.body)]​
)​
​
# 2. 创建签名字符串​
credential_scope = "/".join(​
[datestr, self.region, self.service_name, "request"]​
)​
signing_str = "\n".join(​
["HMAC-SHA256", timestr, credential_scope, sha256str(canoncial_request)]​
)​
​
# 3. 计算签名秘钥​
kdate = hmac_sha256(self.secret_key.encode("utf-8"), datestr)​
kregion = hmac_sha256(kdate, self.region)​
kservice = hmac_sha256(kregion, self.service_name)​
signing_key = hmac_sha256(kservice, "request")​
# 4. 计算签名​
Signature = hmac_sha256(signing_key, signing_str).hex()​
​
r.headers["Authorization"] = (​
f"HMAC-SHA256 Credential={self.access_key}/{credential_scope}, SignedHeaders={SignedHeaders}, Signature={Signature}"​
)​
return r​
​
auth = OpenApiAuth(​
access_key="", # 填写自己的access_key​
secret_key="", # 填写自己的secret_key​
region="cn-beijing",​
host="open.volcengineapi.com",​
service_name="aisearch",​
)​
​
def GetDatasetDataAPI(dataset_id, content_id):​
payload = {"DatasetID": dataset_id, "ContentID": content_id}​
action = "GetDatasetDataAPI"​
resp = requests.post(​
f"http://open.volcengineapi.com/?Action={action}&Version=2025-03-01",​
json = payload,​
auth = auth,​
)​
​
text = resp.text​
text = json.loads(text)​
data = text["Result"]​
​
if isinstance(data, dict) and "Content" in data and isinstance(data["Content"], str):​
try:​
data["Content"] = json.loads(data["Content"])​
data["VideoContent"]["Insight"] = json.loads(​
data["VideoContent"]["Insight"]​
)​
except json.JSONDecodeError:​
print("Content字段不是有效的JSON字符串")​
​
# 保存data为json文件​
with open("data.json", "w", encoding="utf-8") as f:​
json.dump(data, f, ensure_ascii=False, indent=2)​
​
if __name__ == "__main__":​
# 查看content_id详情​
GetDatasetDataAPI("106266573", "10009_2")​
​
说明​
想要体验更多 Viking AI 搜索能力,点击前往:Viking AI 搜索引擎,企业搜推问一体化智能引擎​
最近更新时间:2026.08.09 01:06:39
这个页面对您有帮助吗?
有用
有用
无用
无用