Получение ссылки на новое видео youtube
Я пишу код, в котором частью является функция рассылки уведомлений о новых видео YouTube (а также трансляциях, shorts) какого-то канала. Мне нужны просто ссылка и название, ничего другого. Я могу реализовать это с помощью обычного bs4, но я сомневаюсь, что это оптимальное решение. Я уверен, что это следует делать с помощью YouTube API, но сам я в нём, увы, разобраться не могу.
Ответы (2 шт):
Под вашу задачу хорошо подойдет библиотека yt-dlp
Установка такая:
pip install yt-dlp
После установки библиотеку можно использовать прямо из консольного интерфейса.
Формат:
yt-dlp --arg-1 --arg-2 --arg-3 value <ссылка на канал/плейлист/видео>
Например:
yt-dlp --skip-download --print-json --flat-playlist https://www.youtube.com/@MrBeast/videos
После выполнения данной команды, запущенный процесс вернет вам краткую информацию о каждом видео на канале. Там есть и название и ссылка.
Все параметры, конечно, перечислять не буду, их там очень много, описание каждого можете посмотреть в README.md в репозитории на GitHub.
Ну и конечно, можно использовать как библиотеку для Python:
from yt_dlp import YoutubeDL
options = {
'extract_flat': True
}
def get_channel_videos(channel_url: str) -> list[dict[str, str]]:
with YoutubeDL(options) as ydl:
channel_data = ydl.extract_info(channel_url, download=False)
return [
{'title': video.get('title'), 'url': video.get('url')}
for video in channel_data['entries']
]
for video in get_channel_videos('https://www.youtube.com/@MrBeast/videos'):
print(video['title'], video['url'])
Опять же, формат вывода у метода extract_info
— это очень большой и сложный json
— он же dict
в Python.
На первый раз, для более детального анализа рекомендую выгрузить результат выполнения метода в какой-нибудь файл и вручную изучить что интересного можно узнать о видео.
Конкретно по вашей задаче — имеет смысл добавить аргумент playlistend
, который ограничивает количество получаемых видео до 10 штук, чтобы не выгружать весь канал:
options = {
'extract_flat': True,
'playlistend': 10
}
И затем, сравнивая со старым списком, можно посмотреть какие видео были добавлены на канал
С помощью обычного bs4 это будет и проще, поскольку вы его понимаете(на сколько я понял), и, возможно, оптимальнее по времени, ведь Вы умеете с ним работать.
Я бы на Вашем месте сделал именно так.