117 lines
4.2 KiB
Markdown
117 lines
4.2 KiB
Markdown
# 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
|
||
```
|