You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过YouTube API获取频道视频及对应统计数据

如何同时获取YouTube频道视频及其统计数据(viewCount、likeCount等)

你当前用的search端点确实只能返回视频的基础信息(比如snippetid),但拿不到播放量、点赞数这类统计数据——因为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部分就包含了你需要的viewCountlikeCountcommentCount等统计字段:

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

火山引擎 最新活动