如何批量调用YouTube API获取2055个视频详情数据?
YouTube API批量获取视频详情的最优方案与实现
最优选择:按50个ID批量请求
绝对不要逐个请求,核心原因:
- YouTube API有调用配额限制,2055个ID逐个请求要消耗2055次配额,而批量请求仅需42次(41组50个+1组5个),配额消耗大幅降低
- 批量请求的响应速度远快于逐个请求,能节省大量等待时间
实现批量请求的具体步骤
1. 拆分ID列表为50个一组的批次
用Python切片即可快速拆分,示例代码:
video_ids = ["id_001", "id_002", ..., "id_2055"] # 你的2055个视频ID列表 # 按每50个为一组拆分,最后一组自动处理剩余数量 batches = [video_ids[i:i+50] for i in range(0, len(video_ids), 50)]
2. 遍历批次调用API并收集数据
假设你已通过google-api-python-client初始化好youtube服务对象,完整实现示例:
video_details = {} # 存储最终结果的字典 for batch in batches: # 把批次内的ID用逗号拼接成API要求的格式 id_str = ",".join(batch) # 调用videos.list接口,指定需要获取的字段集合 response = youtube.videos().list( part="statistics,snippet", # statistics包含点赞、浏览量;snippet包含标题等基础信息 id=id_str ).execute() # 解析响应,将每个视频的信息存入字典 for item in response["items"]: video_id = item["id"] stats = item["statistics"] video_details[video_id] = { "浏览量": int(stats.get("viewCount", 0)), "点赞数": int(stats.get("likeCount", 0)), "视频标题": item["snippet"]["title"] # 可根据需求添加其他字段,比如评论数、发布时间等 }
3. 处理无效ID(可选)
如果批次中存在无效ID,API会自动忽略并仅返回有效ID的数据。若需要记录无效ID,可对比批次ID列表与响应返回的ID列表,找出缺失项:
returned_ids = [item["id"] for item in response["items"]] invalid_ids = [vid for vid in batch if vid not in returned_ids] if invalid_ids: print(f"以下ID无效或无法获取数据:{invalid_ids}")
注意事项
- 每个
videos.list调用无论请求多少个ID,都仅消耗1个单位的API配额,放心批量请求即可 - 按需选择
part参数,避免请求不必要的字段,减少响应数据量
内容的提问来源于stack exchange,提问作者Panda Panda
相关产品推荐
相关产品推荐

