Traffic Cardinal Traffic Cardinal написал 25.12.2024

Гоним трафик в TG-каналы с помощью загрузчика YouTube-видео

Traffic Cardinal Traffic Cardinal написал 25.12.2024
5 мин
0
120
Содержание

Летом мы поделились исходным кодом бота для генерации трафика с помощью парсинга музыки из VK в Telegram. Что ж, пришло время поделиться еще одним концептуально схожим, но все же другим ботом — загрузчиком YouTube-роликов. Тем более что после замедлений иной раз реально проще скачать ролик, чтобы каждый раз материться, когда что-то залагает. Впрочем, к черту лирику!

banner banner

Принцип работы бота для скачивания видео из YouTube

Алгоритмически этот бот достаточно прост. И, в отличие от парсера музыки, в нем нет миллиона кнопок. А значит, и код будет легче. Кроме того, для упрощения анализа читателями мы не стали добавлять в него «попрошайку подписки на канал» — ведь вы сможете скопировать ее код из бота для парсинга музыки. Вообще, алгоритм можно было бы описать как: кинул ссылку → на ролик → подписался на канал → скачал ролик. Но все же для тех, кто будет пытаться все это дело использовать, расскажем чуть подробнее:

  1. Бот авторизуется через bot_api в Telegram.
  2. После авторизации бот слушает эфир.
  3. Получив любое сообщение, которое не является ссылкой на YouTube-ролик, бот просит прислать ему ссылку на видео, которое юзер хочет скачать.
  4. После этого он делает API-запросы на серверы YouTube, получает видеоряд и звуковые дорожки для 4 форматов — 114, 360, 720 и 1080.
  5. Все это объединяется в общий массив и выводится пользователю в виде сообщения со ссылками.

Важно: лучшее место для модуля с попрошайкой подписки на канал — между 4-м и 5-м шагом.

Пошаговая инструкция, как сделать Telegram-бота для скачивания видео с YouTube

Для начала нужен Python-сервер. Его вы можете как арендовать, так и развернуть самостоятельно на своем ПК с помощью этой статьи. Если вы совсем новичок, советуем пока не тратиться на аренду и протестировать все на сервере, развернутом собственноручно. Если не новичок — вам виднее, как поступать.

Когда сервер готов — настаиваем его. Для этого пишем в консоль:

pip install telebot

Затем пишем:

pip install yt_dlp

Сервер настроен. Теперь нужен токен для управления ботом.

  1. Для этого пишем BotFather и следуем его инструкциям. После получения токена сохраняем его для удобства.

  1. В корневой папке сервера создаем bot.py и добавляем в него код:

    import telebot

    import yt_dlp

    BOT_TOKEN = '

    ТОКЕН СЮДА

    '

    bot = telebot.TeleBot(BOT_TOKEN)

    def get_download_links(youtube_url):

    options = {

    'quiet': True,

    'noplaylist': True,

    }

    with yt_dlp.YoutubeDL(options) as ydl:

    info = ydl.extract_info(youtube_url, download=False)

    formats = info.get("formats", [])

    links = {}

    audio_url = None

    for f in formats:

    if f.get("vcodec", "none") != "none":

    resolution = f.get("height", None)

    url = f.get("url", None)

    print(f"Обрабатываю формат: {f.get('format_id')} | Разрешение: {resolution}p | URL: {url}")

    if resolution == 360 and f.get("acodec", "none") != "none":

    audio_url = url

    links[360] = url

    print("Найден формат 360p")

    elif resolution and resolution in [144, 720, 1080]:

    if url and url.startswith("https://rr"):

    if resolution == 144:

    links[144] = url

    print("Найден формат 144p")

    elif resolution == 720:

    links[720] = audio_url

    print("Найден формат 720p")

    elif resolution == 1080:

    links[1080] = audio_url

    print("Найден формат 720p")

    print("Итоговые ссылки для скачивания:")

    for resolution, url in links.items():

    print(f"{resolution}p: {url}")

    return [(f"{resolution}p", url) for resolution, url in links.items()]

    @bot.message_handler(commands=['start'])

    def send_welcome(message):

    bot.reply_to(message, "Привет! Отправь мне ссылку на YouTube-видео, и я пришлю тебе ссылки на скачивание.")

    @bot.message_handler(content_types=['text'])

    def handle_message(message):

    youtube_url = message.text.strip()

    if "youtube.com" in youtube_url or "youtu.be" in youtube_url:

    try:

    bot.send_message(message.chat.id, "Ищу ссылки на видео, подождите немного...")

    links = get_download_links(youtube_url)

    if not links:

    bot.send_message(

    message.chat.id,

    "Не удалось найти ссылки для скачивания. Возможно, это защищённое видео или неподдерживаемый формат."

    )

    else:

    response = "Доступные форматы для скачивания:\n"

    for quality, url in links:

    response += f"{quality}: [Скачать]({url})\n"

    bot.send_message(message.chat.id, response, parse_mode='Markdown')

    except Exception as e:

    bot.send_message(message.chat.id, f"Произошла ошибка: {e}")

    else:

    bot.reply_to(message, "Пожалуйста, отправьте корректную ссылку на YouTube-видео.")

    bot.polling()

  2. Вставляем свой токен вместо “ТОКЕН СЮДА”.

  3. Сохраняем bot.py

  4. Пишем в консоль сервера python bot.py

После запуска у вас не должно быть ничего, кроме первой строки. Все, что ниже первой строки на скрине, — результат обработки запроса пользователя.
После запуска у вас не должно быть ничего, кроме первой строки. Все, что ниже первой строки на скрине, — результат обработки запроса пользователя.

Все! Дальше просто проверяем работоспособность.

Демонстрация работы

Воронка настолько быстрая, что даже попрошайка подписки не успеет выбесить
Воронка настолько быстрая, что даже попрошайка подписки не успеет выбесить

Всего 3 клика — и ролик уже качается
Всего 3 клика — и ролик уже качается

Подводя итоги

Как видите, создать бот для загрузки роликов с YouTube — гораздо проще, чем кажется. А если прикрутить к нему попрошайку подписки, будет та же воронка, что и с парсером музыки. Но никто не запрещает и крутить рекламу прямо в бот. Следите за нашим Telegram-каналом и создавайте ботов для арбитража первыми!

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!