добавлено описание архитектуры

This commit is contained in:
vrubelroman 2025-12-10 16:22:18 +03:00
parent d05fc6f522
commit ab82f94032
3 changed files with 535 additions and 14 deletions

195
README.md
View file

@ -1,30 +1,197 @@
# Telegram Video Download Bot
Бот для скачивания видео из различных источников (YouTube, Instagram, VK).
Telegram бот для скачивания видео с YouTube, Instagram и VK. Поддерживает раздельное развертывание сервисов для работы с VPN и без VPN.
## Запуск
## Возможности
- 📹 Скачивание видео с YouTube
- 📸 Скачивание видео с Instagram (требуются cookies)
- 🎬 Скачивание видео с VK (через отдельный микросервис)
- 📊 Статистика скачанных видео и пользователей
- 🔄 Автоматическое сохранение статистики в базу данных
## Требования
- Docker и Docker Compose
- Telegram Bot Token (получить у [@BotFather](https://t.me/BotFather))
- Для Instagram: файл с cookies (см. раздел Instagram ниже)
## Быстрый старт
### 1. Клонирование репозитория
```bash
docker-compose up -d
git clone <repository_url>
cd videoDownloadBot
```
## Поддерживаемые источники
### 2. Настройка переменных окружения
- YouTube (youtube.com, youtu.be)
- Instagram (instagram.com)
- VK (vk.com, vkontakte.ru)
Скопируйте `.env.example` в `.env` и заполните:
```bash
cp .env.example .env
nano .env # или используйте любой редактор
```
**Необходимые переменные:**
```env
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_BOT_USERNAME=your_bot_username
VK_DOWNLOADER_URL=http://localhost:5555
```
- **TELEGRAM_BOT_TOKEN** — токен бота от @BotFather
- **TELEGRAM_BOT_USERNAME** — username бота (без @), используется в подписи видео
- **VK_DOWNLOADER_URL** — URL VK сервиса (для локальной разработки: `http://localhost:5555`, для продакшена: `http://<ip>:5555`)
### 3. Настройка Instagram (опционально)
Если планируете скачивать видео с Instagram:
1. Экспортируйте cookies из браузера (см. `INSTAGRAM_COOKIES_INSTRUCTIONS.md`)
2. Сохраните файл как `instagram_cookies.txt` в корне проекта
3. Формат: Netscape cookies file
**Примечание:** Без cookies Instagram может блокировать запросы.
### 4. Запуск основного бота
```bash
docker compose up -d
```
Бот запустится и будет готов к работе!
Проверить статус:
```bash
docker compose ps
docker compose logs -f bot
```
### 5. Запуск VK сервиса (опционально)
VK сервис можно запустить на том же хосте или на отдельном хосте без VPN:
```bash
cd vk-downloader
docker compose up -d
```
Для работы на отдельном хосте:
1. Скопируйте папку `vk-downloader` на целевой хост
2. Запустите: `docker compose up -d`
3. Обновите `VK_DOWNLOADER_URL` в `.env` основного бота: `http://<ip_хоста>:5555`
## Использование
1. Найдите бота в Telegram
1. Найдите вашего бота в Telegram по username
2. Отправьте команду `/start`
3. Отправьте ссылку на видео
4. Получите скачанное видео
3. Отправьте ссылку на видео (YouTube, Instagram или VK)
4. Дождитесь скачивания и получите файл
### Команды
- `/start` — начало работы с ботом
- `/stat` — статистика: количество пользователей и скачанных видео
## Структура проекта
- `bot.py` - основной код бота
- `docker-compose.yml` - конфигурация Docker Compose
- `Dockerfile` - образ Docker для бота
- `requirements.txt` - зависимости Python
```
videoDownloadBot/
├── bot.py # Основной код бота
├── requirements.txt # Python зависимости
├── Dockerfile # Образ для основного бота
├── docker-compose.yml # Конфигурация основного бота
├── .env.example # Пример конфигурации
├── instagram_cookies.txt # Cookies для Instagram (создать вручную)
├── data/ # База данных SQLite (создается автоматически)
├── video/ # Временные файлы видео (создается автоматически)
└── vk-downloader/ # Микросервис для VK
├── app.py # Flask API сервис
├── Dockerfile # Образ для VK сервиса
└── docker-compose.yml # Конфигурация VK сервиса
```
## Обновление
```bash
git pull
docker compose build
docker compose up -d
```
## Логи
Просмотр логов основного бота:
```bash
docker compose logs -f bot
```
Просмотр логов VK сервиса:
```bash
cd vk-downloader
docker compose logs -f
```
## Остановка
```bash
# Основной бот
docker compose down
# VK сервис
cd vk-downloader
docker compose down
```
## Развертывание на продакшене
### Вариант 1: Все на одном хосте (с VPN)
1. Настройте VPN для доступа к YouTube и Instagram
2. Запустите основной бот и VK сервис на одном хосте
3. В `.env` укажите: `VK_DOWNLOADER_URL=http://localhost:5555`
### Вариант 2: Раздельное развертывание (рекомендуется)
**Хост 1 (с VPN):**
- Основной бот (YouTube, Instagram)
- В `.env`: `VK_DOWNLOADER_URL=http://<ip_хоста_2>:5555`
**Хост 2 (без VPN):**
- VK сервис (`vk-downloader/`)
- В `.env` основного бота: IP этого хоста
**Преимущества:**
- VK работает быстрее без VPN
- Меньше нагрузка на VPN канал
- Возможность масштабирования VK сервиса отдельно
## Troubleshooting
### Бот не отвечает
- Проверьте логи: `docker compose logs bot`
- Убедитесь, что токен правильный в `.env`
### Instagram не работает
- Проверьте наличие `instagram_cookies.txt`
- Обновите cookies (они могут истечь)
### VK не работает
- Проверьте, что VK сервис запущен: `cd vk-downloader && docker compose ps`
- Проверьте URL в `.env`: `VK_DOWNLOADER_URL`
- Проверьте доступность порта 5555
### База данных не сохраняется
- Проверьте права на папку `data/`
- Убедитесь, что volume смонтирован в `docker-compose.yml`
## Лицензия
MIT
## Поддержка
При возникновении проблем создайте issue в репозитории.