YouTube предлагает скачивать видео за подписку, но она стоит денег. Конечно же платить мы не будем, а лучше создадим своего бота для скачивания видео из YouTube с блэкджеком и... ну вы поняли :)
Что будем использовать:
- Python. Простой и ёмкий язык.
- Pyrogram. Библиотека для Client API. Она мне очень сильно нравится, так как имеет много крутых фишек.
- youtube_dl. Самая простая и популярная библиотека для скачивания видео.
- Сервер. На первое время подойдёт и компьютер. Но если нужно будет захостить или использовать регулярно, лучше конечно купить VDS.
Подготовка
Подготовим все библиотеки. Python с pip уже должны быть установлены.
Вот и всё :) Больше нам пока что ничего не понадобится. Позже можем наращивать функции — очереди сообщений, кэш, ведение статистики, выбор формата, качества и т.д. Но пока что нам это не надо. Может быть покажу это в следующих статьях.
Ниже вы увидите подробное описание программы, но если вы хотите перейти к исходному коду, листайте вниз, там будет ссылка на скачивание
Кодим. Оболочка бота
Так как мы профессиональные программисты, сделаем разбивку на файлы. Это избавит нас от зависимостей, а также упростит создание бота.
Сперва создадим youtube.py. Это будет наш ключевой файл, в котором будет содержаться "оболочка" бота. То есть это обработка внешних команд от пользователей. В самом начале импортируем все файлы, а после инициируем создание бота. Вы должны вставить свой токен, который вы получите от @BotFather.
Отлично! Теперь создаём команду, чтобы бот отвечал. Бот предложит скачать видео (а в будущем, занесёт в базу данных)
Этот странный восклицательный знак и слэш — то, с чего может начинаться команда.
Теперь бот научился здороваться. Можно научить и видео обрабатывать :)
Проверка ссылки
Пока что мы хотим скачивать видео только из YouTube. Именно поэтому стоит добавить проверку. Она будет валидировать видео, то есть проверять, какая это ссылка и ссылка ли вообще. Зачем? Будем ловить меньше ошибок и будем отсеивать неправильные видео на этапе получения.
Как я уже сказал, будем стараться на каждый логический этап создавать новый файл. Поэтому создадим validation.py
Здесь мы просто перебираем регуляркой видео. В случае, если это не ссылка из ютуба, то кидаем ошибку.
Скачивание
Финальный этап. Здесь нам нужно просто скачать видео. Создадим download.py и вставим:
На этом всё! Можно идти проверять бота :)
Исходный код (версия в статье)
Исходный код (самая новая версия)