# YouTube → MP3 Telegram Service Сервис для скачивания аудио из YouTube видео через Telegram ботов. ## Описание Сервис состоит из двух Telegram ботов: 1. **User-bot** — принимает ссылки на YouTube видео и возвращает MP3 файлы 2. **Admin-bot** — получает уведомления о всех скачанных файлах с метаданными ## Требования - Docker и Docker Compose - Ubuntu 24.04 (или другая Linux система) - Токены Telegram ботов ## Установка и запуск 1. Скопируйте `.env.example` в `.env`: ```bash cp .env.example .env ``` 2. Отредактируйте `.env` и укажите токены ваших ботов: ```env IS_PROD=false TG_USER_BOT_TOKEN_TEST=your_test_user_bot_token TG_ADMIN_BOT_TOKEN_TEST=your_test_admin_bot_token TG_USER_BOT_TOKEN_PROD=your_prod_user_bot_token TG_ADMIN_BOT_TOKEN_PROD=your_prod_admin_bot_token ``` 3. Запустите сервис: ```bash docker compose up -d --build ``` 4. Просмотр логов: ```bash docker compose logs -f ``` 5. Остановка сервиса: ```bash docker compose down ``` ## Использование ### User-bot Отправьте боту ссылку на YouTube видео: - `https://www.youtube.com/watch?v=...` - `https://youtu.be/...` Бот обработает запрос и отправит вам MP3 файл с названием, идентичным названию видео. ### Admin-bot 1. Напишите admin-bot команду `/start` для регистрации в качестве администратора 2. Вы будете получать уведомления о всех скачанных файлах: - Название файла - Username пользователя (или user_id) - Исходная ссылка на видео - Сам MP3 файл ## Особенности - **Очередь задач**: Все запросы обрабатываются последовательно (FIFO) - **Безопасные имена файлов**: Автоматическая очистка запрещённых символов - **Обработка ошибок**: Информативные сообщения об ошибках - **Логирование**: Подробные логи всех операций - **Временные файлы**: Автоматическое удаление после отправки ## Структура проекта ``` . ├── app/ │ ├── __init__.py │ ├── main.py # Главный файл запуска │ ├── config.py # Конфигурация │ ├── user_bot.py # User-bot │ ├── admin_bot.py # Admin-bot │ ├── queue_manager.py # Менеджер очереди │ ├── youtube_downloader.py # Скачивание и конвертация │ └── admin_manager.py # Управление администраторами ├── docker-compose.yml ├── Dockerfile ├── requirements.txt ├── .env.example └── README.md ``` ## Переменные окружения - `IS_PROD` — режим работы (`true`/`false`) - `TG_USER_BOT_TOKEN_PROD` — токен user-bot для продакшена - `TG_ADMIN_BOT_TOKEN_PROD` — токен admin-bot для продакшена - `TG_USER_BOT_TOKEN_TEST` — токен user-bot для теста - `TG_ADMIN_BOT_TOKEN_TEST` — токен admin-bot для теста - `ADMIN_CHAT_ID` — (опционально) ID чата для отправки уведомлений - `WORKDIR` — рабочая директория для временных файлов (по умолчанию `/data`) - `LOG_LEVEL` — уровень логирования (по умолчанию `INFO`) ## Логи Логи доступны через: ```bash docker compose logs -f ``` Или для конкретного сервиса: ```bash docker compose logs -f youtube-mp3-service ```