【问题标题】:YouTube Data API v3: List all videos for a channel published in the last 24 hours, ignoring "placeholders"YouTube Data API v3:列出过去 24 小时内发布的频道的所有视频,忽略“占位符”
【发布时间】:2021-02-06 22:52:18
【问题描述】:

我的一些代码已经投入生产 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]

Here's an example of a video where this happened,尽管我认为没有任何方法可以知道在视频播放前一两天发布了占位符。

【问题讨论】:

  • 请提供包含在您的案例 #1 中的视频 ID。
  • 另外请提及您的编程语言/环境。
  • @stvar 视频 ID 在第 1 步和第 2 步之间没有变化,这是问题的一部分。所以我在顶帖中提供的示例是一个示例视频 id(当然你看不到占位符,因为它在一两天后被完整的视频取代)。编程语言/环境无关紧要,因为我可以使用原始 URL 请求来重现它(通过 Google API Explorer、curl、httpie 等)。
  • 你误会了:我根本没想到视频 ID 会改变。 但我希望你的案例 1 描述的那种视频 使其元数据与案例 2 所描述的元数据显着不同。
  • 另一方面,在 YouTube 数据 API 的上下文中,编程语言/环境确实非常相关,前提是要考虑过多的 Google API 客户端库:不同的语言/环境意味着调用 API 的实际代码之间存在很大的显着差异。当然,可以对 API 端点调用进行语言无关的描述(例如,官方文档有),但值得注意的是,这本质上与 具体(即用)解决方案非常遥远。 /i>.

标签: youtube-data-api


【解决方案1】:

由于您can't change a video 在上传后使其更长(仅更短),并且上传新视频会导致新网址,因此我假设他们在上传时使用了“首映”选项。

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

"liveBroadcastContent": "upcoming",

播出后会变成如下:

"liveBroadcastContent": "none",

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

【讨论】:

  • 感谢 Mark H - 似乎就是这样。是的,这种过滤必须在客户端完成,这真是太可惜了。非常草率的 API 设计/实现。
  • 预录的首播在首播日是“直播”(即不能快进,只能快退),还有“直播”,但不是“直播”节目.在我看来,他们使预先录制的首映式在一个无法完美适应的 API 框架内成为可能。
  • 啊,我们行业喜欢塞进圆孔的方钉...?
猜你喜欢
  • 2017-07-07
  • 1970-01-01
  • 2021-06-03
  • 2019-10-18
  • 2021-03-13
  • 1970-01-01
  • 2013-12-16
  • 2014-02-23
  • 2019-07-27
相关资源
最近更新 更多