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

如何利用YouTube Data API的commentThreads过滤2018-03-25之后的频道评论?

解决YouTube Data API评论时间筛选无效的问题

Hey,我之前也踩过这个YouTube Data API的坑!你遇到的问题核心原因是:当使用allThreadsRelatedToChannelId参数时,API根本不支持publishedAfter/publishedBefore这两个时间筛选参数,所以你的筛选条件相当于没加,自然返回全部结果了。

下面是针对你的需求(获取该频道2018-03-25之后发布的所有评论)的可行解决思路:

方案一:仅获取该频道自有视频的评论(最常用场景)

如果你的需求是该频道自己发布的视频下的评论,需要分两步操作:

1. 先拉取频道2018-03-25之后发布的所有视频ID

search.list接口来获取目标频道的视频列表,参数要指定type=video来确保只返回视频内容:

GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCU34OIeAyiD4BaDwihx5QpQ&type=video&publishedAfter=2018-03-25T00:00:00Z&maxResults=50&key=YOUR_API_KEY
  • 注意处理分页:如果结果超过50条(maxResults上限),需要用返回结果里的nextPageToken循环请求,直到获取所有视频ID;
  • 如果你需要更精准的视频筛选(比如排除直播回放),可以搭配videoDuration等额外参数。

2. 逐个拉取每个视频的评论

拿到视频ID后,对每个ID调用commentThreads.list接口,此时就可以正常使用publishedAfter筛选了:

GET https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=【替换为视频ID】&publishedAfter=2018-03-25T00:00:00Z&maxResults=100&key=YOUR_API_KEY
  • 这里的publishedAfter其实可选(因为视频是2018-03-25之后发布的,评论肯定不会早于这个时间),但加上能更保险;
  • 同样要处理nextPageToken来获取该视频的全部评论。

方案二:包含其他视频中提及该频道的评论

如果你的需求还包括其他视频里@该频道的评论(也就是allThreadsRelatedToChannelId原本返回的内容),那这部分无法通过API直接筛选时间,只能:

  1. allThreadsRelatedToChannelId拉取所有相关评论线程;
  2. 在本地代码中过滤出snippet.topLevelComment.snippet.publishedAt字段晚于2018-03-25的条目。

额外提醒

  • API配额注意search.list每次请求消耗100单位配额,commentThreads.list每次消耗1单位,要是频道视频很多,记得算好配额,避免被限流;
  • 日期格式你用的2018-03-25T13:15:30Z是正确的ISO 8601格式,这个没问题。

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

火山引擎 最新活动