# 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 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://:5555`) ### 3. Настройка Instagram (опционально) Если планируете скачивать видео с Instagram: 1. Экспортируйте cookies из браузера (см. `INSTAGRAM_COOKIES_INSTRUCTIONS.md`) 2. Сохраните файл как `instagram_cookies.txt` в корне проекта 3. Формат: Netscape cookies file **Автоматическое обновление cookies:** - Бот автоматически проверяет срок действия cookies каждые 24 часа - Если cookies истекают через 3 дня (настраивается через `INSTAGRAM_AUTO_UPDATE_DAYS`), бот попытается автоматически обновить их из браузера - Поддерживаются браузеры: Chrome, Firefox, Edge, Opera (по приоритету) - Для автоматического обновления браузер должен быть установлен и доступен **Примечание:** Без cookies Instagram может блокировать запросы. При первом запуске или если автоматическое обновление не сработало, обновите cookies вручную. ### 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://: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://: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 в репозитории.