如何通过YouTube API获取频道视频及对应统计数据
如何同时获取YouTube频道视频及其统计数据(viewCount、likeCount等)
你当前用的search端点确实只能返回视频的基础信息(比如snippet和id),但拿不到播放量、点赞数这类统计数据——因为YouTube Data API的search接口本身就被设计成只提供内容发现的基础信息,统计类数据需要通过videos端点来补充获取。
下面是具体的实现步骤:
1. 先用Search API获取视频ID列表
继续使用你现有的请求,获取目标频道下的视频ID(每个返回项里的id.videoId字段):
https://www.googleapis.com/youtube/v3/search?key={MY_API_KEY}&channelId=UCz22l7kbce-uFJAoaZqxD1A&part=snippet,id&order=date&maxResults=20
从返回的JSON数据里,提取所有items[].id.videoId的值,把它们用逗号拼接成一个字符串(比如videoId1,videoId2,...videoId20)。
2. 调用Videos API获取统计数据
把刚才拼接好的视频ID列表传入videos接口,指定part=snippet,statistics——其中statistics部分就包含了你需要的viewCount、likeCount、commentCount等统计字段:
https://www.googleapis.com/youtube/v3/videos?key={MY_API_KEY}&id=拼接好的视频ID字符串&part=snippet,statistics
关键注意事项
- 批量查询上限:
videos接口一次最多支持传入50个视频ID,你当前设置的maxResults=20刚好在这个范围内,所以可以一次请求完成。如果需要获取更多视频,分批次处理即可。 - API配额消耗:每个
search请求会消耗100个单位的API配额,每个videos请求只消耗1个单位(无论传入多少个ID),要确保你的API密钥有足够的配额可用。 - 接口权限:确认你的API密钥已经启用了
YouTube Data API v3,并且没有设置IP限制导致请求被拦截。
给你一段伪代码参考逻辑:
# 1. 发送Search请求获取视频ID search_response = requests.get(search_url) video_ids = [item['id']['videoId'] for item in search_response.json()['items'] if item['id']['kind'] == 'youtube#video'] # 2. 拼接ID并发送Videos请求 video_ids_str = ','.join(video_ids) videos_url = f"https://www.googleapis.com/youtube/v3/videos?key={MY_API_KEY}&id={video_ids_str}&part=snippet,statistics" videos_response = requests.get(videos_url) # 3. 处理返回结果:每个视频项同时包含基础信息和统计数据 for video in videos_response.json()['items']: title = video['snippet']['title'] view_count = video['statistics']['viewCount'] like_count = video['statistics']['likeCount'] print(f"视频标题:{title},播放量:{view_count},点赞数:{like_count}")
内容的提问来源于stack exchange,提问作者akkk




