videoDownloadTGbot/README.md

6.8 KiB
Raw Blame History

Telegram Video Download Bot

Telegram бот для скачивания видео с YouTube, Instagram и VK. Поддерживает раздельное развертывание сервисов для работы с VPN и без VPN.

Возможности

  • 📹 Скачивание видео с YouTube
  • 📸 Скачивание видео с Instagram (требуются cookies)
  • 🎬 Скачивание видео с VK (через отдельный микросервис)
  • 📊 Статистика скачанных видео и пользователей
  • 🔄 Автоматическое сохранение статистики в базу данных

Требования

  • Docker и Docker Compose
  • Telegram Bot Token (получить у @BotFather)
  • Для Instagram: файл с cookies (см. раздел Instagram ниже)

Быстрый старт

1. Клонирование репозитория

git clone <repository_url>
cd videoDownloadBot

2. Настройка переменных окружения

Скопируйте .env.example в .env и заполните:

cp .env.example .env
nano .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. Запуск основного бота

docker compose up -d

Бот запустится и будет готов к работе!

Проверить статус:

docker compose ps
docker compose logs -f bot

5. Запуск VK сервиса (опционально)

VK сервис можно запустить на том же хосте или на отдельном хосте без VPN:

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 сервиса

Обновление

git pull
docker compose build
docker compose up -d

Логи

Просмотр логов основного бота:

docker compose logs -f bot

Просмотр логов VK сервиса:

cd vk-downloader
docker compose logs -f

Остановка

# Основной бот
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 в репозитории.