audio_from_youtube/README.md

117 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```