У меня был код в производстве в течение 6 месяцев или около того, который запускается каждые 24 часа и извлекает все видео с определенных каналов YouTube, которые были опубликованы за последние 24 часа (т.е. с момента последней проверки). Это хорошо работает.

Однако несколько каналов 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]

Вот пример видео, где это произошло, хотя я не думаю есть какой-либо способ узнать, что заполнитель был опубликован за день или два до выхода видео.

0
Peter 7 Фев 2021 в 01:52

1 ответ

Лучший ответ

Поскольку вы не можете изменить видео, чтобы сделать его длиннее (только короче) после того, как оно были загружены, и загрузка нового видео приводит к новому URL-адресу, я предполагаю, что они используют параметр «Премьера» при загрузке.

В результатах поиска видео для опции YouTube Premiere перед фактическим выходом в эфир в json будет возвращено следующее свойство:

"liveBroadcastContent": "upcoming",

После выхода в эфир это изменится на следующее:

"liveBroadcastContent": "none",

На самом деле я не вижу способа применить фильтр в качестве параметра запроса. Там &eventType=none&type=video, как указано на странице API поиска. , но это работает только для LIVE / трансляций. Это немного непоследовательность / неполнота в API, ИМХО.

1
Mark H 12 Мар 2021 в 08:35