Asynchronous Telegram bot for downloading video and audio from YouTube, TikTok, Instagram and SoundCloud.
Find a file
2026-04-09 17:04:16 +03:00
bot.py Enhance media download support for SoundCloud 2026-04-08 15:08:37 +03:00
config.py Update config.py 2026-04-05 22:03:01 +03:00
LICENSE Initial commit 2026-04-05 21:38:00 +03:00
README.md Обновить README.md 2026-04-09 17:04:16 +03:00
requirements.txt Update requirements.txt 2026-04-08 15:10:07 +03:00

ebany video bot

Python Telegram yt-dlp FFmpeg

Translation:

English Українська Русский

This Telegram bot is designed to easily download media files via links from popular social networks.

The bot automatically downloads videos in the best available quality, adapts them for Telegram's native player, and can also extract audio tracks.

Features

  • Multi-platform:
    • Supports links from YouTube (including Shorts), TikTok, Instagram (Reels/Posts), and SoundCloud.
    • Offers a choice: download as Video or Audio. (For SoundCloud, you can also download the Cover Art).
  • Video Processing:
    • Forced conversion and codec selection to H.264 (MP4) for seamless playback directly in the Telegram chat.
    • Supports video streaming (users can start watching before the file is fully downloaded to the cache).
    • Original quality preserved: videos are sent as uncompressed documents to avoid Telegram's built-in compression.
  • Audio & Metadata Extraction:
    • Converts audio tracks to MP3 format (320kbps).
    • Automatically embeds high-quality cover art directly into downloaded MP3 files.
    • Extracts original track covers (thumbnails) and sends them as uncompressed files with dynamic, safe filenames.
  • Logging:
    • Maintains detailed logs with daily rotation in the logs/ directory.
  • Asynchronous:
    • Downloading files does not block the bot's operation for other users, thanks to asyncio.to_thread.

Requirements

To run the bot, you need:

  1. Python 3.8+
  2. FFmpeg (system-level) — critical for yt-dlp to work properly (merging video and audio, codec conversion).

Installing FFmpeg:

  • Ubuntu/Debian: sudo apt update && sudo apt upgrade && sudo apt install ffmpeg
  • Windows:
    • Method 1 (Recommended): Open a terminal (PowerShell or CMD) and run:

      winget install Gyan.FFmpeg
      

      ⚠️ "winget" command not found? > If you are using an older version of Windows 10, download and install the App Installer from the official GitHub releases (look for the .msixbundle file).

    • Method 2 (Manual): Download the archive from the official repository, unzip it, and add the path to the bin folder to your system environment variables (PATH).

      C:\ffmpeg\bin
      
  • MacOS: brew install ffmpeg

Installation & Usage

1. Clone the repository

git clone https://github.com/Vovan999222/ebany_video_bot.git

cd ebany_video_bot
python -m venv venv

# Windows:
venv\Scripts\activate

# Linux/Mac:
source venv/bin/activate

3. Install dependencies

You can install the libraries manually:

pip install aiogram yt-dlp mutagen

Or create a requirements.txt file and install via:

pip install -r requirements.txt

4. Configuration

Open the config.py file and find the following line:

TOKEN = ""  # Paste your token from @BotFather here

Insert your bot token inside the quotes.

5. Run the bot

python bot.py

Technical Details

  • Limits: The bot processes and sends files up to 50 MB (Telegram Bot API restriction).
  • Video: yt-dlp settings are forced to request bestvideo[ext=mp4][vcodec^=avc] format to exclude AV1/VP9 codecs, which are not supported by Telegram's in-app player.
  • Audio: Processed via FFmpegExtractAudio with the MP3 codec.

License

This project is distributed under the MIT License.