Как спарсить видео(не Shorts) с youtube?

Мне нужно с канала отдельно парсить последнее видео (не shorts, не опубликованные трансляции, а именно обычное видео), но я не понимаю как это можно сделать. Вот мой код:

from googleapiclient.discovery import build

API_KEY = ''
CHANNEL_ID = ''

def getVideo():
    youtube = build("youtube", "v3", developerKey=API_KEY)

    # Получаем информацию о видео с канала
    videos = youtube.search().list(
        part='snippet',
        channelId=CHANNEL_ID,
        eventType='none',
        type='video',
        videoType='any',
        order='date',
        maxResults=1,
    ).execute()

    if videos['items']:
        video_id = videos['items'][0]['id']['videoId']
        video_url = f'https://www.youtube.com/watch?v={video_id}'
        print(f"Ссылка на последнее видео: {video_url}")
    else:
        print("На канале нет видео.")

if __name__ == '__main__':
    getVideo()

Но есть проблема, изменив значение поля eventType на upcoming и live я могу спокойно получать трансляции и запланированные, но как мне получить непосредственно последнее видео? Если добавлю параметр videoDuration с значением medium или long, то shorts не попадают, но отображаются опубликованные трансляции. По этому даже по длительности видео я не могу сортировать (на канале могут быть как видео так трансляции одинаковые по времени). Как мне в таком случае делать запрос?

И дополнительно, можно ли youtube api чем-то заменить, поскольку мне необходимо моментально получать видео после его выхода, а апи в этом плане прогружается минут через 5. Использование одного request не даёт результатов, элементы не ищутся, а selenium открывает окно браузера, которое мне мешает.


Ответы (0 шт):