首页 > 解决方案 > YouTube Data API v3:列出过去 24 小时内发布的频道的所有视频,忽略“占位符”

问题描述

我已经有一些代码在生产中运行了 6 个月左右,每 24 小时运行一次,并从过去 24 小时内发布的某些 YouTube 频道中提取所有视频(即自上次检查以来)。它运行良好。

但是,此代码监控的几个 YouTube 频道会在发布实际视频前一两天发布某种“占位符”或“预告片”,这意味着我的代码“看到”视频两次:

  1. 占位符何时发布;
  2. 当实际视频发布时。

我对 #1 不感兴趣,因为实际上还没有可用的视频,只是一个预告片,它“即将推出”。我只对实际发布的视频感兴趣。有没有办法从我的搜索中过滤掉这些占位符,以便我的代码仅在视频实际发布时“看到”视频?搜索参数将是理想的,但如果这只能通过过滤我自己的代码中的结果(例如通过返回的元数据)来完成,那也可以。

作为参考,这是我的代码命中的 URL:

https://youtube.googleapis.com/youtube/v3/search?part=snippet&channelId=[CHANNEL_ID]&order=date&publishedAfter=[NOW_MINUS_24_HOURS]&key=[MY_API_KEY]

这是发生这种情况的视频示例,尽管我认为没有任何方法可以知道在视频发布前一两天发布了占位符。

标签: youtube-data-api

解决方案


由于上传后您无法更改视频以使其更长(仅更短),并且上传新视频会产生新的 URL,因此我假设他们在上传时使用了“首映”选项。

YouTube 首映选项的视频搜索结果将在实际播放之前在 json 中返回以下属性:

"liveBroadcastContent": "upcoming",

这将在播出后变为以下内容:

"liveBroadcastContent": "none",

我实际上没有看到将过滤器作为查询参数应用的方法。搜索 API页面上&eventType=none&type=video列出了,但仅适用于 LIVE/广播事件。恕我直言,这在 API 中有点不一致/不完整。


推荐阅读