You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套JSON API响应中通过视频名称查询Video ID?

根据视频名称获取对应Video ID的实现方案

问题说明

通过requests.get调用API已获取状态码200的嵌套JSON响应,需求是输入视频名称(如film10),用Python返回对应的Video ID(如82da4b60ef)。

提供的JSON响应示例

{
   "results": [{
           "accountId": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
           "id": "6ed909bd16",
           "partition": null,
           "externalId": null,
           "metadata": null,
           "name": "NewSeptemberFile20220908",
           "description": null,
           "created": "2022-09-12T22:04:55.799+00:00",
           "lastModified": "2022-09-12T22:06:10.838+00:00",
           "lastIndexed": "2022-09-12T22:05:04.551+00:00",
           "privacyMode": "Private",
           "userName": "M M",
           "isOwned": true,
           "isBase": true,
           "hasSourceVideoFile": true,
           "state": "Processed",
           "moderationState": "OK",
           "reviewState": "None",
           "processingProgress": "100%",
           "durationInSeconds": 58,
           "thumbnailVideoId": "6ed909bd16",
           "thumbnailId": "5f04af4d-e382-4387-9573-6d9e4bad3b68",
           "searchMatches": [],
           "indexingPreset": "Default",
           "streamingPreset": "Default",
           "sourceLanguage": "en-GB",
           "sourceLanguages": ["en-GB"],
           "personModelId": "00000000-0000-0000-0000-000000000000"
       }, {
           "accountId": "XXXXXXXXXXXXXXXXX",
           "id": "34344818e8",
           "partition": null,
           "externalId": null,
           "metadata": null,
           "name": "3September",
           "description": null,
           "created": "2022-09-09T17:55:59.696+00:00",
           "lastModified": "2022-09-09T17:57:51.057+00:00",
           "lastIndexed": "2022-09-09T17:56:04.544+00:00",
           "privacyMode": "Private",
           "userName": "M M",
           "isOwned": true,
           "isBase": true,
           "hasSourceVideoFile": true,
           "state": "Processed",
           "moderationState": "OK",
           "reviewState": "None",
           "processingProgress": "100%",
           "durationInSeconds": 58,
           "thumbnailVideoId": "34344818e8",
           "thumbnailId": "baae7ed1-a791-4481-853c-1707b40b5e77",
           "searchMatches": [],
           "indexingPreset": "Default",
           "streamingPreset": "Default",
           "sourceLanguage": "en-GB",
           "sourceLanguages": ["en-GB"],
           "personModelId": "00000000-0000-0000-0000-000000000000"
       }, {
           "accountId": "XXXXXXXXXXXXXXXXXXXXXXXXX",
           "id": "82da4b60ef",
           "partition": null,
           "externalId": null,
           "metadata": null,
           "name": "film10",
           "description": null,
           "created": "2022-08-22T14:24:08.442+00:00",
           "lastModified": "2022-09-08T23:13:16.416+00:00",
           "lastIndexed": "2022-08-22T14:24:12.605+00:00",
           "privacyMode": "Private",
           "userName": "M M",
           "isOwned": true,
           "isBase": true,
           "hasSourceVideoFile": true,
           "state": "Processed",
           "moderationState": "OK",
           "reviewState": "None",
           "processingProgress": "100%",
           "durationInSeconds": 58,
           "thumbnailVideoId": "82da4b60ef",
           "thumbnailId": "5a5f6a71-0302-46a6-93c8-beb918c00b14",
           "searchMatches": [],
           "indexingPreset": "Default",
           "streamingPreset": "Default",
           "sourceLanguage": "en-GB",
           "sourceLanguages": ["en-GB"],
           "personModelId": "00000000-0000-0000-0000-000000000000"
       }, {
           "accountId": "XXXXXXXXXXXXXXX",
           "id": "7ea0c5e34a",
           "partition": null,
           "externalId": null,
           "metadata": null,
           "name": "davide_quatela--people_in_frankfurt",
           "description": null,
           "created": "2022-09-07T21:31:52.818+00:00",
           "lastModified": "2022-09-08T22:52:52.833+00:00",
           "lastIndexed": "2022-09-07T21:31:57.328+00:00",
           "privacyMode": "Private",
           "userName": "M M",
           "isOwned": true,
           "isBase": true,
           "hasSourceVideoFile": true,
           "state": "Processed",
           "moderationState": "OK",
           "reviewState": "None",
           "processingProgress": "100%",
           "durationInSeconds": 131,
           "thumbnailVideoId": "7ea0c5e34a",
           "thumbnailId": "3aba8f42-a3a7-4d77-92b0-8cabcc275a3b",
           "searchMatches": [],
           "indexingPreset": "Default",
           "streamingPreset": "Default",
           "sourceLanguage": "en-US",
           "sourceLanguages": ["en-US"],
           "personModelId": "00000000-0000-0000-0000-000000000000"
       }, {
           "accountId": "XXXXXXXXXXXXXXXXXX",
           "id": "7c45ae7ffe",
           "partition": null,
           "externalId": null,
           "metadata": null,
           "name": "Untitled project",
           "description": null,
           "created": "2022-08-17T17:36:23.72+00:00",
           "lastModified": "2022-08-17T17:36:49.95+00:00",
           "lastIndexed": "2022-08-17T17:36:49.95+00:00",
           "privacyMode": "Private",
           "userName": "M M",
           "isOwned": true,
           "isBase": false,
           "hasSourceVideoFile": false,
           "state": "Processed",
           "moderationState": "OK",
           "reviewState": "None",
           "processingProgress": "",
           "durationInSeconds": 0,
           "thumbnailVideoId": null,
           "thumbnailId": "00000000-0000-0000-0000-000000000000",
           "searchMatches": [],
           "indexingPreset": null,
           "streamingPreset": "Default",
           "sourceLanguage": "en-US",
           "sourceLanguages": ["en-US"],
           "personModelId": "00000000-0000-0000-0000-000000000000"
       }
   ],
   "nextPage": {
       "pageSize": 25,
       "skip": 0,
       "done": true
   } 
}

现有代码

import requests

url = "https://api.video.ai/trial/Accounts//Videos/7ea0c5e34a/Index?language=af-ZA&reTranslate=false&includeStreamingUrls=true&includeSummarizedInsights=true&accessToken="
hdr = {}  # 这里需要补充你的请求头信息

response = requests.get(url, headers=hdr)
# 响应状态码200表示请求成功
print("请求状态码:", response.status_code)

解决方案

实现逻辑

  1. 将API响应解析为Python字典。
  2. 遍历results列表中的每个视频条目,匹配输入的视频名称。
  3. 返回匹配条目的id字段;若未找到匹配项,返回提示信息。

完整代码

import requests

def get_video_id_by_name(video_name):
    url = "https://api.video.ai/trial/Accounts//Videos/7ea0c5e34a/Index?language=af-ZA&reTranslate=false&includeStreamingUrls=true&includeSummarizedInsights=true&accessToken="
    hdr = {}  # 补充你的请求头信息
    
    response = requests.get(url, headers=hdr)
    if response.status_code != 200:
        print(f"请求失败,状态码:{response.status_code}")
        return None
    
    # 解析JSON响应
    data = response.json()
    # 遍历视频列表查找匹配项
    for video in data.get("results", []):
        if video.get("name") == video_name:
            return video.get("id")
    
    # 未找到匹配的视频名称
    return f"未找到名称为'{video_name}'的视频"

# 测试示例
if __name__ == "__main__":
    target_name = "film10"
    video_id = get_video_id_by_name(target_name)
    print(f"视频名称'{target_name}'对应的ID:{video_id}")

补充说明

  • 大小写敏感:当前匹配是严格区分大小写的,若需要忽略大小写,可将判断条件改为video.get("name").lower() == video_name.lower()。
  • 多匹配处理:如果存在多个同名视频,上述代码会返回第一个匹配项的ID;若需要返回所有匹配项,可将返回逻辑改为收集所有符合条件的ID后返回列表。

内容的提问来源于stack exchange,提问作者mnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:15:31