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