使用Python调用YouTube API获取播放列表视频详情仅返回24条数据求助
问题排查与修复
你的问题出在get_video_details函数的代码结构上:处理API返回数据的for循环被放在了分页请求的循环外面,导致程序只处理了最后一次API请求返回的视频数据,前面所有分页的结果都被覆盖后丢弃了。
修正后的代码
video_ids = get_video_ids(youtube, playlist_id) def get_video_details(youtube, video_ids): all_video_stats = [] for i in range(0, len(video_ids), 50): request = youtube.videos().list( part='snippet,statistics', id=','.join(video_ids[i:i+50])) response = request.execute() # 把处理response的循环移到分页循环内部,每次请求后立即处理数据 for video in response['items']: # 用get方法避免KeyError(部分视频可能缺失统计字段) video_stats = dict( Title=video['snippet']['title'], Publish_date=video['snippet']['publishedAt'], View_Count=video['statistics'].get('viewCount', '0'), Comment_Count=video['statistics'].get('commentCount', '0') ) all_video_stats.append(video_stats) return all_video_stats
关键修改点
- 将遍历
response['items']的代码块移动到for i in range(0, len(video_ids), 50)分页请求循环内部,确保每一次API请求返回的数据都被及时处理并添加到all_video_stats列表中。 - 用字典的
get方法获取统计字段,避免部分视频因缺失viewCount或commentCount字段抛出KeyError异常。
内容的提问来源于stack exchange,提问作者Rasdan
相关产品推荐
相关产品推荐

