Как спарсить видео(не 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 открывает окно браузера, которое мне мешает.