Fix bot polling, downloads, and file delivery
This commit is contained in:
commit
8a21cbe18a
16 changed files with 1712 additions and 0 deletions
117
README.md
Normal file
117
README.md
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
# 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
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue