Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
exlends
Категории
  1. Home
  2. Categories
  3. Языки программирования
  4. Python
  5. Как я сделал Telegram-бота для скачивания ВК-Клипов

Как я сделал Telegram-бота для скачивания ВК-Клипов

Scheduled Pinned Locked Moved Python
3 Posts 1 Posters 74 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • kirilljsxK Offline
    kirilljsxK Offline
    kirilljsx
    js
    wrote on last edited by kirilljsx
    #1

    Дело было вечером, делать было нечего. Сидел, играл в Oblivion Remastered, и в голову ударила мысль:
    «А можно ли сделать бота, который скачивает ВК-клипы удаляет водный знак VK Clips и сразу отправляет их в Телеграм?»

    Ответ: да, можно. И даже проще, чем я думал.

    Ссылка на бота - https://t.me/vkclipssavebot


    🛠️ Что использовал?

    • Python (хотел JS, но захотелось чего-то новенького)
    • yt-dlp (скачивание видео)
    • python-telegram-bot (общение с Телеграмом)
    • dotenv (хранение токена)
    • nest_asyncio (чтобы асинхронность не сломалась)

    🚀 Пример кода: команда /start

    Вот как выглядит простейший обработчик команды /start:

    async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
        await update.message.reply_text(
            "Привет! Отправь ссылку на ВК-клип, и я скачу его для тебя 🎬"
        )
    

    Что делает этот код?

    • Когда пользователь пишет /start — бот отвечает приветственным сообщением.
    • Всё. Никаких секретов.

    🔋 Запуск бота

    А вот как запускается сам бот:

    async def main():
        app = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()
        app.add_handler(CommandHandler("start", start))
        await app.run_polling()
    

    Главное:

    • Укажите токен из @BotFather.
    • Добавьте обработчики команд.
    • Запустите через asyncio.run(main()).

    📩 Обработка ссылок

    Если бот получает ссылку на ВК-клип, он:

    1. Показывает кнопки с выбором разрешения (360p, 480p, 720p).
    2. Скачивает видео через yt-dlp.
    3. Проверяет размер (лимит Телеграма — 50 МБ для обычных ботов).
    4. Отправляет видео обратно пользователю.

    Пример кода для кнопок:

    keyboard = [
        [InlineKeyboardButton(f"{res}p", callback_data=f"res_{res}") for res in ["360", "480", "720"]]
    ]
    await update.message.reply_text("Выберите разрешение:", reply_markup=InlineKeyboardMarkup(keyboard))
    

    🧵 Асинхронность и многопользовательность

    Бот умеет работать с несколькими пользователями одновременно. Для этого я использовал Semaphore:

    semaphore = asyncio.Semaphore(5)  # До 5 загрузок одновременно
    
    async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
        async with semaphore:
            # Логика загрузки и отправки видео
    

    Зачем это нужно?
    Чтобы бот не зависал, когда несколько человек лезут к нему с запросами.


    📦 Что дальше?

    • Хочу обойти лимит Телеграма на 50 МБ (есть идеи, но это потом).
    • Добавить поддержку других платформ (например, YouTube Shorts).
    • Научить бота удалять водяные знаки (пока не разобрался, но над этим работаю).

    📲 Попробуйте сами!

    Если кому-то интересно — пишите, поделюсь лайфхаками. А пока:
    https://t.me/vkclipssavebot — качает ВК-клипы, пока ты играешь в Oblivion 😉


    P.S. Код не покажу — секрет фирмы 😎 Но если хотите повторить — начните с python-telegram-bot и yt-dlp. Всё работает))

    1 Reply Last reply
    0
    • kirilljsxK Offline
      kirilljsxK Offline
      kirilljsx
      js
      wrote last edited by
      #2
      This post is deleted!
      1 Reply Last reply
      👽
      0
      • kirilljsxK Offline
        kirilljsxK Offline
        kirilljsx
        js
        wrote last edited by
        #3
        This post is deleted!
        1 Reply Last reply
        0

        Категории

        • Главная
        • Новости
        • Фронтенд
        • Бекенд
        • Языки программирования

        Контакты

        • Сотрудничество
        • info@exlends.com
        • Наш чат
        • Наш ТГ канал

        © 2024 - 2025 ExLends, Inc. Все права защищены.

        Политика конфиденциальности
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups