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

使用Python请求库调用EIDR API批量获取电视节目信息遇阻求助

解决EIDR API批量查询电视节目信息的问题

我之前也折腾过EIDR的API,那文档确实够让人头疼的——尤其是刚接触的话。结合你的情况,我来一步步帮你搞定批量查询的问题,先从单个请求调通开始:

先搞懂EIDR API的核心要求

EIDR的API不像一些公开API那样随便调用,首先得确保你已经完成了注册并获取了API密钥(如果是需要认证的端点),另外它的请求格式有严格要求,光抓浏览器的请求头可能不够——浏览器里的请求可能附带了登录会话Cookie,而API调用得用官方规定的认证方式。

第一步:调通单个节目查询(以《Anderson Cooper 360》为例)

先把单个请求跑通,再扩展批量。这里用EIDR的Search API作为例子,你需要确保以下几点:

  • 带上正确的Authorization头(如果用API密钥,通常是ApiKey <你的密钥>,具体看EIDR给你的认证说明)
  • 使用正确的端点URL,比如EIDR的v2版本搜索端点是https://eidr.org/api/v2/search
  • 参数要符合EIDR的枚举规范,比如指定媒体类型为TV_PROGRAM

给你一个可直接参考的Python代码示例:

import requests

# 替换成你的EIDR API密钥
EIDR_API_KEY = "your-api-key-here"
BASE_URL = "https://eidr.org/api/v2/search"

def search_eidr_program(title):
    headers = {
        "Authorization": f"ApiKey {EIDR_API_KEY}",
        "Content-Type": "application/json",
        "Accept": "application/json"
    }
    params = {
        "query": title,
        "mediaType": "TV_PROGRAM",
        "limit": 10  # 限制返回结果数量,按需调整
    }
    try:
        response = requests.get(BASE_URL, headers=headers, params=params)
        # 先针对性排查常见错误状态码
        if response.status_code == 401:
            print("认证失败!请检查API密钥是否正确")
            return None
        elif response.status_code == 400:
            print(f"无效请求,错误详情:{response.json()}")
            return None
        response.raise_for_status()  # 抛出其他HTTP异常
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"请求出错:{e}")
        return None

# 测试单个节目查询
result = search_eidr_program("Anderson Cooper 360")
if result:
    print("查询结果:")
    for item in result.get("results", []):
        print(f"标题: {item.get('title')}, EIDR ID: {item.get('eidrId')}")

第二步:扩展到批量查询

当单个请求没问题后,就可以把节目列表放进循环处理,注意EIDR的API有请求频率限制,别一下子发太多请求,最好加个延迟:

import time

# 你的节目列表,可替换成自己的批量数据
program_titles = [
    "Anderson Cooper 360",
    "The Daily Show",
    "CNN Tonight"
]

for title in program_titles:
    print(f"正在查询:{title}")
    result = search_eidr_program(title)
    if result:
        # 这里可以添加结果处理逻辑,比如保存到CSV或数据库
        pass
    time.sleep(1)  # 每秒一个请求,避免触发限流机制

排查“无效请求”的常见原因

你之前遇到的问题,大概率是以下情况之一:

  • 认证信息缺失/错误:EIDR的大部分端点都需要认证,浏览器请求依赖登录会话,而API调用必须用官方API密钥
  • 参数格式错误:比如mediaType参数用了非枚举值(必须是EIDR规定的TV_PROGRAM/MOVIE等),或者参数名拼写错误
  • 请求头缺失必要字段:比如没设置Accept或Content-Type为application/json,EIDR的API对格式要求很严
  • 端点URL错误:比如用了旧版本的v1端点,或者拼写错误

小提示:利用测试工具验证

如果不确定请求格式是否正确,可以先用Postman或者curl手动测试单个请求,确认参数和头都正确后,再转成Python代码,这样能更快定位问题。

内容的提问来源于stack exchange,提问作者A-B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:35:58