videoDownloadTGbot/README.md

197 lines
6.8 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.

# Telegram Video Download Bot
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
git clone <repository_url>
cd videoDownloadBot
```
### 2. Настройка переменных окружения
Скопируйте `.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 по username
2. Отправьте команду `/start`
3. Отправьте ссылку на видео (YouTube, Instagram или VK)
4. Дождитесь скачивания и получите файл
### Команды
- `/start` — начало работы с ботом
- `/stat` — статистика: количество пользователей и скачанных видео
## Структура проекта
```
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 в репозитории.