2025-12-10 14:46:09 +03:00
|
|
|
|
# Telegram Video Download Bot
|
|
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
Telegram бот для скачивания видео с YouTube, Instagram и VK. Поддерживает раздельное развертывание сервисов для работы с VPN и без VPN.
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
## Возможности
|
|
|
|
|
|
|
|
|
|
|
|
- 📹 Скачивание видео с YouTube
|
|
|
|
|
|
- 📸 Скачивание видео с Instagram (требуются cookies)
|
|
|
|
|
|
- 🎬 Скачивание видео с VK (через отдельный микросервис)
|
|
|
|
|
|
- 📊 Статистика скачанных видео и пользователей
|
|
|
|
|
|
- 🔄 Автоматическое сохранение статистики в базу данных
|
|
|
|
|
|
|
|
|
|
|
|
## Требования
|
|
|
|
|
|
|
|
|
|
|
|
- Docker и Docker Compose
|
|
|
|
|
|
- Telegram Bot Token (получить у [@BotFather](https://t.me/BotFather))
|
|
|
|
|
|
- Для Instagram: файл с cookies (см. раздел Instagram ниже)
|
|
|
|
|
|
|
|
|
|
|
|
## Быстрый старт
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Клонирование репозитория
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-12-10 16:22:18 +03:00
|
|
|
|
git clone <repository_url>
|
|
|
|
|
|
cd videoDownloadBot
|
2025-12-10 14:46:09 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
### 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 может блокировать запросы.
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
### 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`
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
|
|
|
|
|
## Использование
|
|
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
1. Найдите вашего бота в Telegram по username
|
2025-12-10 14:46:09 +03:00
|
|
|
|
2. Отправьте команду `/start`
|
2025-12-10 16:22:18 +03:00
|
|
|
|
3. Отправьте ссылку на видео (YouTube, Instagram или VK)
|
|
|
|
|
|
4. Дождитесь скачивания и получите файл
|
|
|
|
|
|
|
|
|
|
|
|
### Команды
|
|
|
|
|
|
|
|
|
|
|
|
- `/start` — начало работы с ботом
|
|
|
|
|
|
- `/stat` — статистика: количество пользователей и скачанных видео
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
|
|
|
|
|
## Структура проекта
|
|
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
```
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
## Поддержка
|
2025-12-10 14:46:09 +03:00
|
|
|
|
|
2025-12-10 16:22:18 +03:00
|
|
|
|
При возникновении проблем создайте issue в репозитории.
|