Получение всех новых подписных видеороликов в API v3 для YouTube
Мне нужно знать эквивалентный запрос в API данных YouTube v3 как этот запрос v2 для получения всех новых подписных видео.
https://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos
Я не видел простых и чистых запросов, которые так же просты, как версия v2 запросов
Ответы
Ответ 1
Вы можете получить эту информацию с помощью API Youtube V3, но это невероятно неэффективно:
- Сначала введите идентификатор канала из имени пользователя (один запрос).
- Теперь получите подписки на канал (пакетный - один запрос на 50 подписчиков).
- Теперь получите списки воспроизведения для каждого подписанного канала (пакетный - один запрос на 50 подписчиков).
- Получить самые последние плейлисты для системного плейлиста "uploads" каждого канала. (один запрос на юзер).
- Получить видео, относящееся к каждому элементу playlistItem (пакетный - один запрос 50 элементов playlistItems).
Теперь вы можете отсортировать видео по дате публикации и распечатать последние.
Если у вас есть 100 подписки и выбор из 5 видеороликов из каждого канала, это приведет к 114 запросам API и будет использовать около 500 единиц квот (дневной лимит составляет 50 миллионов единиц). Это займет около 2 минут, если вы не распараллеливаете вызовы API.
У этого метода есть несколько преимуществ перед использованием действий:
- Вы можете сделать это для любого пользователя с настройками общедоступной учетной записи, а не только для аутентифицированного пользователя, поэтому он работает как API V2 в этом отношении.
- Он не будет беспорядочно потерять видео, как это делает домашняя страница Youtube.
Доступна полная реализация Python: https://github.com/ali1234/ytsubs
Ответ 2
Нет точного эквивалента, но вы можете приблизиться к
youtube.activities.list(part = "snippet" , home = true)
затем отфильтруйте файл с snippet.type= upload
Ответ 3
Для тех, кто заинтересован в получении недавно загруженных видео "сегодня", например, как это было сделано в /feed/subscriptions
, используйте "API поиска" (ссылка).
В этом случае требуется 2 API. API поиска и API подписок (ссылка)
- Получить идентификаторы каналов с помощью API подписки
- Для каждого идентификатора канала используйте идентификатор поиска с параметрами
channelId
, publishedAfter
и publishedBefore
.
- Затем отфильтруйте результаты с
items.length == 0
.
Теперь вы можете фильтровать только самые последние видео, загруженные по подписанным каналам.
РЕДАКТИРОВАТЬ: API поиска стоит 100 квот.:
Для вызова этого метода стоимость квоты составляет 100 единиц.
API элемента списка воспроизведения стоит 3 квоты:
При вызове этого метода стоимость квоты составляет 1 единицу в дополнение к стоимости указанных частей ресурса.
Итак... намного дешевле кэшировать загруженные идентификаторы плейлистов из "API каналов" и использовать плейлист.
Или чтобы иметь возможность фильтрации по датам публикации, например, по API поиска, используйте API действий, который имеет параметры publishedBefore
и publishedAfter
.