119 lines
6.4 KiB
Markdown
119 lines
6.4 KiB
Markdown
# ebany video bot
|
||
|
||

|
||

|
||

|
||

|
||
|
||
# Translation:
|
||
[](README.md)
|
||
[](R.ua.md)
|
||
[](R.ru.md)
|
||
---
|
||
|
||
Этот Telegram-бот предназначен для удобного скачивания медиафайлов по ссылкам из популярных социальных сетей.
|
||
|
||
Бот автоматически скачивает видео в лучшем доступном качестве, адаптирует их для нативного проигрывателя Telegram, а также может извлекать аудиодорожки.
|
||
|
||
## Возможности
|
||
|
||
* **Мультиплатформенность**:
|
||
* Поддерживает ссылки с **YouTube** (включая Shorts), **TikTok**, **Instagram** (Reels/Posts) и **SoundCloud**.
|
||
* Предлагает выбор: скачать как **Видео** или **Аудио**. (Для SoundCloud можно также скачать **обложку**).
|
||
* **Обработка видео**:
|
||
* Принудительное преобразование и выбор кодека в **H.264 (MP4)** для бесперебойного воспроизведения прямо в чате Telegram.
|
||
* Поддерживает потоковую передачу видео (пользователи могут начать просмотр до полной загрузки файла в кэш).
|
||
* Сохранение оригинального качества: видео отправляются как несжатые документы, чтобы избежать встроенного сжатия Telegram.
|
||
* **Извлечение аудио и метаданных**:
|
||
* Конвертирует аудиодорожки в формат **MP3** (320kbps).
|
||
* Автоматически встраивает высококачественную обложку прямо в скачанные файлы MP3.
|
||
* Извлекает оригинальные обложки треков (миниатюры) и отправляет их как несжатые файлы с динамическими, безопасными именами файлов.
|
||
* **Логирование**:
|
||
* Ведёт подробные логи с ежедневной ротацией в директории `logs/`.
|
||
* **Асинхронность**:
|
||
* Скачивание файлов не блокирует работу бота для других пользователей благодаря `asyncio.to_thread`.
|
||
|
||
## Требования
|
||
|
||
Для запуска бота вам потребуется:
|
||
|
||
1. **Python 3.8+**
|
||
2. **FFmpeg** (на уровне системы) — критически важно для корректной работы `yt-dlp` (объединение видео и аудио, конвертация кодеков).
|
||
|
||
### Установка FFmpeg:
|
||
|
||
* **Ubuntu/Debian**: `sudo apt update && sudo apt upgrade && sudo apt install ffmpeg`
|
||
* **Windows**:
|
||
* **Способ 1 (Рекомендуемый):** Откройте терминал (PowerShell или CMD) и выполните:
|
||
```cmd
|
||
winget install Gyan.FFmpeg
|
||
```
|
||
> **⚠️ Команда "winget" не найдена?** > Если вы используете более старую версию Windows 10, скачайте и установите **App Installer** из [официальных релизов на GitHub](https://github.com/microsoft/winget-cli/releases) (найдите файл `.msixbundle`).
|
||
|
||
* **Способ 2 (Ручной):** Скачайте архив из [официального репозитория](https://github.com/GyanD/codexffmpeg/releases), распакуйте его и добавьте путь к папке `bin` в переменные среды вашей системы (PATH).
|
||
```cmd
|
||
C:\ffmpeg\bin
|
||
```
|
||
* **MacOS**: `brew install ffmpeg`
|
||
|
||
## Установка и использование
|
||
|
||
### 1. Клонируйте репозиторий
|
||
|
||
```bash
|
||
git clone https://github.com/Vovan999222/ebany_video_bot.git
|
||
|
||
cd ebany_video_bot
|
||
```
|
||
|
||
### 2. Создайте виртуальное окружение (Рекомендуется)
|
||
|
||
```bash
|
||
python -m venv venv
|
||
|
||
# Windows:
|
||
venv\Scripts\activate
|
||
|
||
# Linux/Mac:
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 3. Установите зависимости
|
||
|
||
Вы можете установить библиотеки вручную:
|
||
|
||
```bash
|
||
pip install aiogram yt-dlp mutagen
|
||
```
|
||
|
||
Или создайте файл `requirements.txt` и установите через:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 4. Настройка
|
||
|
||
Откройте файл `config.py` и найдите следующую строку:
|
||
|
||
```python
|
||
TOKEN = "" # Вставьте ваш токен от @BotFather здесь
|
||
```
|
||
|
||
Вставьте токен вашего бота внутрь кавычек.
|
||
|
||
### 5. Запустите бота
|
||
|
||
```bash
|
||
python bot.py
|
||
```
|
||
|
||
## Технические детали
|
||
|
||
* **Ограничения**: Бот обрабатывает и отправляет файлы размером до **50 МБ** (ограничение Telegram Bot API).
|
||
* **Видео**: Настройки `yt-dlp` принудительно запрашивают формат `bestvideo[ext=mp4][vcodec^=avc]` для исключения кодеков AV1/VP9, которые не поддерживаются встроенным проигрывателем Telegram.
|
||
* **Аудио**: Обрабатывается через `FFmpegExtractAudio` с кодеком MP3.
|
||
|
||
## Лицензия
|
||
|
||
Этот проект распространяется под [лицензией MIT](https://raw.githubusercontent.com/Vovan999222/ebany_video_bot/refs/heads/main/LICENSE).
|