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

批量请求YouTube视频数据时遭遇'invalid filter parameter'错误求助

解决YouTube API批量获取视频数据的400错误

错误原因

你的请求触发400错误有两个核心问题:

  1. videos.list接口的id参数要求传入逗号分隔的字符串,而非直接传递Python数组
  2. 该接口单次请求最多支持查询50个视频ID,你尝试一次传999个远超官方限制

修复方案

步骤1:分批处理视频ID

将2055个视频ID分成每批50个的子数组,避免单次请求超限。

步骤2:转换参数格式

每批ID数组转成逗号分隔的字符串,符合API参数要求。

步骤3:循环发起请求并合并结果

修复后的完整代码

all_video_data = []
# 每批最多50个ID,分批处理
batch_size = 50
for i in range(0, len(video_ids), batch_size):
    batch_ids = video_ids[i:i+batch_size]
    # 将数组转为逗号分隔的字符串
    ids_str = ','.join(batch_ids)
    
    try:
        request = youtube.videos().list(
            part="snippet,contentDetails,statistics",
            id=ids_str
        )
        response = request.execute()
        
        for video in response['items']:
            data_keep = {
                'snippet': ['channelTitle', 'title', 'publishedAt'],
                'statistics': ['viewCount', 'likeCount', 'commentCount'],
                'contentDetails': ['duration']
            }
            video_data = {'video_id': video['id']}
            
            for k in data_keep.keys():
                for v in data_keep[k]:
                    # 处理可能缺失的字段(比如部分视频关闭了评论,commentCount可能不存在)
                    video_data[v] = video[k].get(v, None)
            
            all_video_data.append(video_data)
    except Exception as e:
        print(f"处理批次{i//batch_size +1}时出错: {str(e)}")
        continue

额外注意事项

  • 加入了字段缺失的容错处理(get(v, None)),避免因部分视频缺少统计字段导致代码崩溃
  • 保留异常捕获,某一批次出错不会中断整个任务
  • 严格遵循API限制,既保证请求合法,也能避免触发限流

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:03:18