Как я написал Telegram-бота для скачивания видео и аудио из YouTube и TikTok(и не только)
сам бот: https://t.me/SaveTubeMediaBot
Привет, хочу поделиться своим опытом создания полезного инструмента — Telegram-бота, который по ссылке скачивает и отправляет пользователю видео из YouTube и TikTok без водяных знаков и отдельно его аудиодорожку.
Идея
Всё началось с простой боли: постоянно натыкаешься на интересные тиктоки, но чтобы их сохранить, нужно либо делать скриншот экрана(видео), либо скачать через кнопку в самом тик ток, но там видео скачивается с водяным знаков. Я подумал: а что если сделать простого бота прямо в Telegram, куда можно скинуть ссылку и моментально получить чистое видео + звук?
Целевая аудитория такого бота огромна: это и обычные пользователи, желающие сохранить понравившийся клип, и маркетологи, анализирующие тренды, и мемоделы, собирающие материал для своего творчества.
Стек технологий
1. Python: Мой основной язык программирования.
2. aiogram: Асинхронная и мощная библиотека для работы с Telegram API.
3. yt_dlp: Неофициальная библиотека Python для парсинга YouTube и TikTok. Именно она делает всю «магию» по получению данных без водяных знаков.
4. FFmpeg: Необходимый инструмент для обработки видео и извлечения аудио. Бот будет запускать его системные команды.
5. Хостинг: Выбор пал на обычный VPS от на убунто за 660р в месяц(ВАЖНО! сервер должен быть расположен не в РОССИИ, мой находится в Европе, иначе видео не будут скачиваться библиотекой)
Архитектура и логика работы
Я разбил работу бота на несколько ключевых этапов:
1. Получение ссылки: Пользователь отправляет боту сообщение с ссылкой на YouTube и TikTok.
2. Валидация: Бот проверяет, что ссылка корректная(содержит только ссылки на ютуб/тик ток)
3. Парсинг: С помощью yt_dlp бот извлекает метаданные о видео, включая прямую ссылку на видео без водяного знака.
4. Скачивание: Бот загружает видеофайл на сервер, затем отправляет его пользователю.
5. Извлечение аудио: С помощью системного вызова FFmpeg бот конвертирует видео в MP3-файл, затем отправляет MP3 файл после видео.
Вот собственно сам код который делает магию скачивания видео из Ютуба и Тик Ток(и не только):
import yt_dlp
def download_youtube_video(url):
ydl_opts = { 'outtmpl': '%(title)s.%(ext)s', # Имя файла будет как название видео }
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
if __name__ == '__main__':
video_url = input("Введите ссылку на видео YouTube или TikTok: ") download_youtube_video(video_url)
Этот код скачает даже из Запрещеннограма, но с ним будет сложнее он блокирует IP с которого часто отправляются запросы на скачку видео. По сути эта библиотека и код который я дал, скачает даже с VK Видео, поэтому пробуйте пишите свое мнение.
P.S Еще раз скажу, если вы запустили код который я предоставил и у вас ошибка, значит вы пытаетесь скачать видео находясь в РОССИИ! Включите либо VPN, и скачка будет нормальной, либо переезжайте)