Получение списка видео загруженных на канал на YouTube (свой или чужой) задача частая и достаточно легко решаемая с помощью YouTube API. Сегодня я покажу как на Python решить эту задачу и получить списки видео из любого публичного канала. Максимально подробно я все рассказал в видео:

Метод search.list YouTube API для получения списка видео по channelId

Метод YouTube API search.list предназначен для поиска разных ресурсов на YouTube (а не только видео). Однако с аргументом channelId равным id YouTube канала и аргументом type равным ‘video’ я как раз могу получить все видео на выбранном канале.

За один запрос я могу получить максимум 50 роликов. Если нужно больше, то придется организовывать итерацию с пагинацией для получения всех видео порционно. Для это в ответе search.list есть поле nextPageToken, кот. нужно передавать в аргументе pageToken search.list при последующем запросе. nextPageToken после каждого запроса новый!

За каждый запрос к YouTube API search.list потратит 100 юнитов квоты (которая для YouTube API составляет 10000 юнитов/сутки). Что достаточно много.

Запросы можно оптимизировать в зависимости от решаемых задач используя аргументы search.list:

  • order — для сортировки видео ПЕРЕД получением списка, таким обрадом мы можем за один запрос получить до 50 самых свежих видео (date), или самых просматриваемых (viewCount), или самых популярных (rating). К сожалению в YouTube API search.list нет возможности выбрать направление сортировки (orderby) чтобы выбрать, например, самые провальные по просмотрам видео.
  • publishedAfter / publishedBefore — для выбора периода в которые видео были опубликованы.

 

Исходники на Python

Основной исполняемый скрипт


В requirements.txt достаточно:


Если вы раньше не работали с Google API и не знакомы со всей схемой работы с YouTube API (а там нужно уметь создавать проект в Google Cloud Console и получать ключи доступа), то настоятельно рекомендую почитать эту статью.