Telegram бот для загрузки видео с YouTube и других платформ
  • Python 99.5%
  • Dockerfile 0.5%
Find a file
2026-04-27 01:17:14 +04:00
.github Remove Docker hub 2025-04-13 20:06:25 +04:00
assets WIP: refactor (#460) 2025-01-14 19:32:19 +01:00
src fix: use dedicated temp directory with proper cleanup 2026-04-27 01:17:14 +04:00
.dockerignore let's try pyrogram 2.x again 2023-12-17 14:11:19 +01:00
.env.example fix: ensure temp file cleanup with dedicated /tmp/ytdlbot directory 2026-04-27 00:19:03 +04:00
.gitignore WIP: refactor (#460) 2025-01-14 19:32:19 +01:00
AGENTS.md fix: ensure temp directory cleanup after download 2026-04-26 17:19:44 +04:00
docker-compose.yml Указал своё авторство 2025-04-13 20:01:34 +04:00
Dockerfile Bump yt-dlp to latest with support for external JavaScript runtime (#566) 2025-11-23 15:10:02 +08:00
LICENSE Initial commit 2021-05-03 18:24:44 +08:00
pdm.lock Bump dependencies to the latest (#573) 2026-02-02 11:26:31 +08:00
pre-push.py add comments 2025-01-26 19:17:32 +01:00
pyproject.toml Bump dependencies to the latest 2026-04-23 00:08:21 +04:00
README.md Fix conflict 2026-02-14 17:15:48 +04:00
requirements.txt Bump dependencies to the latest 2026-04-23 00:08:21 +04:00
youtube-cookies.txt Update Docker compose (#480) 2025-01-28 18:28:04 +01:00

ytdlbot

Это форк бота для загрузки видео, файлов и музыки. Он создан для личного пользования, поэтому некоторые функции могут работать не так, как надо. Вот полный список изменений:

  • Перевод на русский язык (неполный)
  • Другое оформление различных текстов (используются эмодзи)
  • Переработана система миниатюр:
    • Миниатюра (обложка) берётся из сервиса, а не из первого кадра ролика
    • Миниатюра встраивается напрямую в файл, а не только при предпросмотре ролика
    • Миниатюра встраивается и в аудиофайлы
  • Изменил правила, по которым выбирается формат для загрузки:
    • По умолчанию выбираются видео с VP9-кодеком, так как его поддержка наиболее распространена по сравнению с AV1
    • Если есть русская аудиодорожка, то ролик загружается с ней
    • Выбираются форматы, которые будут весить меньше 2 гигабайт (если сервис поддерживает). Это значит, что большие ролики могут загрузиться в более низком разрешении, чем установлено в /settings
    • Ролики загружаются в наиболее оптимальном контейнере, а не принудительно в mp4 (который чаще всего весил больше остальных)
    • Если не удаётся получить никаких данных, то загружается ролик «как есть»
    • Музыка будет загружаться либо в AUDIO_FORMAT, либо в m4a, либо в любом доступном формате. Ранее использовался строгий формат, что мешало загрузке с многих сервисов
  • По умолчанию включено отображение дебаг-информации от yt-dlp
  • Добавил поддержку выбора разрешений (1440p/1080p/720p/480p/240p) и кодеков (vp9/avc1/av1/авто)
  • Используются Firefox cookies для корректной работы некоторых сервисов, например, Яндекс.Музыки
  • Преобразование аудио, встраивание миниатюр и генерация видео в mp4-контейнере теперь выполняются yt-dlp на этапе постобработки
  • У всех файлов теперь присутствуют встроенные метаданные (например, эпизоды в видео, описание, заголовок и т.д.)
  • Отключил команды /buy, так как они не нужны
  • Команда /stats показывает одинаковую информацию для создателя и остальных пользователей
  • Вернул функцию поиска роликов (временно отключил)
  • Принудительно использую IPv4. Помогло в ситуации, когда ролики перестали грузится.
  • Исправил ошибку, когда пользователь мог скинуть ссылку на канал и бот загружал все ролики с канала (костыль с "playlist_items": 1, надо исправить)
  • Добавлена поддержка прокси (YT_DLP_PROXY)
  • По умолчанию используется android_vr клиент.

docker image pdm-managed

YouTube Download Bot🚀🎬⬇️

This Telegram bot allows you to download videos from YouTube and other supported websites.

Usage

Just send a link directly to the bot.

Supported websites

  • YouTube

  • Any websites supported by yt-dlp

    • Instagram (Videos, Photos, Reels, IGTV & carousel)
    • Pixeldrain
    • KrakenFiles

Features

  1. fast download and upload.
  2. No ads
  3. download & upload progress bar
  4. download quality selection
  5. upload format: file, video, audio
  6. cache mechanism - download once for the same video.
  7. Supports multiple download engines (yt-dlp, aria2, requests).

Limitations

Due to limitations on servers and bandwidth, there are some restrictions on this free service.

  • Each user is limited to 1 free downloads every day.

Screenshots

Normal download

Instagram download

How to deploy?

This bot can be deployed on any platform that supports Python.

Run natively on your machine

Project use PDM to manage dependencies.

  1. Install PDM

    You can install using pip: pip install --user pdm or for detailed instructions: Official Docs

  2. Install modules using PDM: pdm install, or the old way use pip install -r requirements.txt

Important

All users who intend to download from YouTube are strongly encouraged to install one of the JS runtimes (like deno) supported by yt-dlp.

  1. Setting up config file
    cp .env.example .env
    

    Fill the fields in .env. For more information, see the comments in the .env.example file.

    - Required Fields

    • WORKERS: Number of workers (default is 100)
    • APP_ID: Telegram app ID
    • APP_HASH: Telegram app hash
    • BOT_TOKEN: Your telegram bot token
    • OWNER: Owner ID (separate by ,)
    • AUTHORIZED_USER: List of authorized users ids, (separate by ,)
    • DB_DSN: Your database URL (mysql+pymysql://user:pass@mysql/dbname) or SQLite (sqlite:///db.sqlite)
    • REDIS_HOST: Redis host

    - Optional Fields

    • ENABLE_FFMPEG: Enable FFMPEG for video processing (True/False)
    • AUDIO_FORMAT: Desired audio format (e.g.:- mp3, wav)
    • ENABLE_ARIA2: Enable Aria2 for downloads (True/False)
    • RCLONE_PATH: Path to Rclone executable
    • ENABLE_VIP: Enable VIP features (True/False)
    • PROVIDER_TOKEN: Payment provider token from Stripe
    • FREE_DOWNLOAD: Free downloads allowed per user
    • RATE_LIMIT: Rate limit for requests
    • TMPFILE_PATH: Path for temporary/download files (ensure the directory exists and is writable)
    • TG_NORMAL_MAX_SIZE: Maximum size for Telegram uploads in MB
    • CAPTION_URL_LENGTH_LIMIT: Maximum URL length in captions
    • POTOKEN: Your PO Token. PO-Token-Guide
    • BROWSERS: Browser to handle 'cookies from browser', i.e. firefox
  1. Activate virtual environment that created by PDM: source .venv/bin/activate

  2. Finally run the bot: python src/main.py

Docker

One line command to run the bot

# Или katze-942/ytdlbot, если вы хотите использовать мою версию
docker run --env-file .env bennythink/ytdlbot

Command

start - Let's start
about - What's this bot?
help - Help
spdl - Use to download specific link downloader links
direct - Download using aria2/requests engines
ytdl - Download video in group
settings - Set your preference
unsub - Unsubscribe from YouTube Channel
ping - Ping the Bot
stats - Server and bot stats
buy - Buy quota.

Test data

Tap to expand

Test video

https://www.youtube.com/watch?v=V3RtA-1b_2E

Test Playlist

https://www.youtube.com/playlist?list=PL1Hdq7xjQCJxQnGc05gS4wzHWccvEJy0w

Test twitter

https://twitter.com/nitori_sayaka/status/1526199729864200192 https://twitter.com/BennyThinks/status/1475836588542341124

Test instagram

Test Pixeldrain

https://pixeldrain.com/u/765ijw9i

Test KrakenFiles

https://krakenfiles.com/view/oqmSTF0T5t/file.html

Donation

Found this bot useful? You can donate to support the development of this bot.

Donation Platforms

Stripe

You can choose to donate via Stripe.

USD(Card, Apple Pay and Google Pay) CNY(Card, Apple Pay, Google Pay and Alipay)
USD CNY

Cryptocurrency

TRX or USDT(TRC20)

TF9peZjC2FYjU4xNMPg3uP4caYLJxtXeJS

License

Apache License 2.0