- Удалены ненужные файлы: node_modules, package.json, package-lock.json, get_rutracker_cookie.js, __pycache__ - Создан скрипт автоматического развертывания deploy.sh - Создан файл .gitignore для исключения временных файлов - Создан env.example с примером конфигурации - Полностью переписана документация README.md с подробными инструкциями - Обновлен PROJECT_SUMMARY.md с инструкциями по развертыванию - Проект готов к развертыванию на новом компьютере
469 lines
No EOL
15 KiB
Markdown
469 lines
No EOL
15 KiB
Markdown
# 🎬 searchTorrentDownl
|
||
|
||
**Полнофункциональная система для поиска и загрузки фильмов через торренты с Telegram ботом**
|
||
|
||
[](https://www.docker.com/)
|
||
[](https://python.org/)
|
||
[](https://fastapi.tiangolo.com/)
|
||
[](https://telegram.org/)
|
||
|
||
## 🎯 Описание проекта
|
||
|
||
**searchTorrentDownl** - это современная система для поиска и загрузки фильмов, которая объединяет:
|
||
- 🌐 **Веб-интерфейс** с адаптивным дизайном
|
||
- 🤖 **Telegram бот** с полной функциональностью
|
||
- 🔍 **Поиск фильмов** через TMDB API
|
||
- 🎬 **Поиск торрентов** на популярных трекерах
|
||
- ⬇️ **Автоматическое добавление** в qBittorrent
|
||
- 🔔 **Уведомления** о завершении загрузки
|
||
|
||
### ✨ Основные возможности
|
||
|
||
- **🎬 Поиск фильмов** - интеллектуальный поиск с постерами и описаниями
|
||
- **🔍 Поиск торрентов** - на всех популярных трекерах (RuTracker, Kinozal, RuTor, NoNameClub)
|
||
- **📱 Telegram бот** - полная функциональность в мессенджере
|
||
- **🌐 Веб-интерфейс** - удобный поиск и навигация
|
||
- **⬇️ Автоматическая загрузка** - добавление торрентов в qBittorrent одним кликом
|
||
- **🔔 Уведомления** - сообщения о завершении загрузки в Telegram
|
||
- **🐳 Docker** - полная контейнеризация для простого развертывания
|
||
|
||
## 🏗️ Архитектура системы
|
||
|
||
```
|
||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||
│ Telegram Bot │ │ Web Interface │ │ qBittorrent │
|
||
│ (Docker) │ │ (Docker) │ │ (Host) │
|
||
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
|
||
│ │ │
|
||
└──────────────────────┼──────────────────────┘
|
||
│
|
||
┌─────────────┴─────────────┐
|
||
│ FastAPI App │
|
||
│ (Movie Search API) │
|
||
└─────────────┬─────────────┘
|
||
│
|
||
┌─────────────┴─────────────┐
|
||
│ TMDB API │
|
||
│ (Movie Information) │
|
||
└─────────────┬─────────────┘
|
||
│
|
||
┌─────────────┴─────────────┐
|
||
│ TorAPI │
|
||
│ (Torrent Search) │
|
||
└───────────────────────────┘
|
||
```
|
||
|
||
### 🔧 Компоненты системы
|
||
|
||
1. **FastAPI приложение** (Docker) - основной веб-сервис и API
|
||
2. **Telegram Bot** (Docker) - бот для мессенджера
|
||
3. **TorAPI-Search** (Docker) - поиск торрентов по названию
|
||
4. **TorAPI-qBittorrent** (Docker) - получение magnet ссылок
|
||
5. **qBittorrent-nox** (Host) - клиент для загрузки торрентов
|
||
|
||
## 📋 Системные требования
|
||
|
||
### Минимальные требования
|
||
- **ОС**: Linux (Ubuntu 20.04+, Debian 11+)
|
||
- **RAM**: 2GB
|
||
- **Диск**: 10GB свободного места
|
||
- **CPU**: 2 ядра
|
||
|
||
### Необходимое ПО
|
||
- **Docker**: 20.10+
|
||
- **Docker Compose**: 2.0+
|
||
- **qBittorrent-nox**: 4.6.7+
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### 1️⃣ Автоматическое развертывание (рекомендуется)
|
||
|
||
```bash
|
||
# Клонируйте репозиторий
|
||
git clone <repository-url>
|
||
cd searchTorrentDownl
|
||
|
||
# Запустите скрипт развертывания
|
||
chmod +x deploy.sh
|
||
./deploy.sh
|
||
```
|
||
|
||
Скрипт автоматически:
|
||
- Установит все зависимости
|
||
- Настроит qBittorrent
|
||
- Запустит все сервисы
|
||
- Покажет статус системы
|
||
|
||
### 2️⃣ Ручное развертывание
|
||
|
||
#### Шаг 1: Установка зависимостей
|
||
|
||
```bash
|
||
# Обновление системы
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# Установка Docker
|
||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||
sudo sh get-docker.sh
|
||
sudo usermod -aG docker $USER
|
||
|
||
# Установка Docker Compose
|
||
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
sudo chmod +x /usr/local/bin/docker-compose
|
||
|
||
# Установка qBittorrent
|
||
sudo apt install -y qbittorrent-nox
|
||
```
|
||
|
||
#### Шаг 2: Настройка qBittorrent
|
||
|
||
```bash
|
||
# Создание пользователя
|
||
sudo useradd -r -s /bin/false qbittorrent
|
||
|
||
# Создание systemd сервиса
|
||
sudo tee /etc/systemd/system/qbittorrent.service > /dev/null <<EOF
|
||
[Unit]
|
||
Description=qBittorrent-nox
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=qbittorrent
|
||
Group=qbittorrent
|
||
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8080
|
||
Restart=always
|
||
RestartSec=5
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
# Запуск сервиса
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable qbittorrent
|
||
sudo systemctl start qbittorrent
|
||
```
|
||
|
||
#### Шаг 3: Настройка проекта
|
||
|
||
```bash
|
||
# Создание Docker сети
|
||
docker network create torrentvideo_default
|
||
|
||
# Копирование конфигурации
|
||
cp env.example .env
|
||
|
||
# Редактирование конфигурации
|
||
nano .env
|
||
```
|
||
|
||
#### Шаг 4: Запуск сервисов
|
||
|
||
```bash
|
||
# Запуск всех сервисов
|
||
docker compose up -d --build
|
||
|
||
# Проверка статуса
|
||
docker ps
|
||
```
|
||
|
||
## ⚙️ Конфигурация
|
||
|
||
### 🔑 Получение API ключей
|
||
|
||
#### TMDB API Key
|
||
1. Зарегистрируйтесь на [themoviedb.org](https://www.themoviedb.org/)
|
||
2. Перейдите в [Settings > API](https://www.themoviedb.org/settings/api)
|
||
3. Создайте новый API ключ
|
||
4. Скопируйте ключ в файл `.env`
|
||
|
||
#### Telegram Bot Token
|
||
1. Найдите [@BotFather](https://t.me/BotFather) в Telegram
|
||
2. Отправьте команду `/newbot`
|
||
3. Следуйте инструкциям для создания бота
|
||
4. Скопируйте токен в файл `.env`
|
||
|
||
### 📝 Файл конфигурации (.env)
|
||
|
||
```bash
|
||
# TMDB API Key
|
||
TMDB_API_KEY=your_tmdb_api_key_here
|
||
|
||
# Telegram Bot Token
|
||
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
|
||
|
||
# qBittorrent настройки
|
||
QBITTORRENT_USERNAME=admin
|
||
QBITTORRENT_PASSWORD=admin
|
||
QBITTORRENT_HOST=host.docker.internal
|
||
QBITTORRENT_PORT=8080
|
||
|
||
# TorAPI настройки
|
||
TORRENT_SEARCH_URL=http://host.docker.internal:8443
|
||
TORRENT_ADD_URL=http://host.docker.internal:8088
|
||
```
|
||
|
||
## 🌐 Использование
|
||
|
||
### Веб-интерфейс
|
||
1. Откройте http://localhost:8089
|
||
2. Введите название фильма
|
||
3. Выберите фильм из результатов
|
||
4. Выберите торрент для скачивания
|
||
5. Торрент автоматически добавится в qBittorrent
|
||
|
||
### Telegram Bot
|
||
1. Найдите вашего бота в Telegram
|
||
2. Отправьте команду `/start` или `/find`
|
||
3. Введите название фильма
|
||
4. Выберите фильм из списка
|
||
5. Нажмите "Найти торренты"
|
||
6. Выберите нужный торрент
|
||
7. Получите уведомление о завершении загрузки
|
||
|
||
### qBittorrent
|
||
- **Веб-интерфейс**: http://localhost:8080
|
||
- **Логин по умолчанию**: admin / admin
|
||
- **Настройка папок**: Settings > Downloads
|
||
|
||
## 📁 Структура проекта
|
||
|
||
```
|
||
searchTorrentDownl/
|
||
├── app.py # Основное FastAPI приложение
|
||
├── telegram_bot.py # Telegram бот
|
||
├── run_telegram_bot.py # Скрипт запуска бота
|
||
├── deploy.sh # Скрипт автоматического развертывания
|
||
├── start_all.sh # Скрипт запуска (локально)
|
||
├── requirements.txt # Python зависимости
|
||
├── env.example # Пример конфигурации
|
||
├── Dockerfile # Docker образ основного приложения
|
||
├── Dockerfile.telegram # Docker образ Telegram бота
|
||
├── docker-compose.yml # Docker Compose конфигурация
|
||
├── templates/ # HTML шаблоны
|
||
│ ├── index.html # Главная страница
|
||
│ ├── results.html # Результаты поиска фильмов
|
||
│ ├── torrents.html # Результаты поиска торрентов
|
||
│ └── error.html # Страница ошибок
|
||
├── README.md # Основная документация
|
||
├── TELEGRAM_BOT_README.md # Документация Telegram бота
|
||
└── PROJECT_SUMMARY.md # Сводка проекта
|
||
```
|
||
|
||
## 🔧 Управление сервисами
|
||
|
||
### Основные команды
|
||
|
||
```bash
|
||
# Запуск всех сервисов
|
||
docker compose up -d
|
||
|
||
# Остановка всех сервисов
|
||
docker compose down
|
||
|
||
# Перезапуск сервисов
|
||
docker compose restart
|
||
|
||
# Просмотр логов
|
||
docker compose logs -f
|
||
|
||
# Просмотр статуса
|
||
docker ps
|
||
```
|
||
|
||
### Управление отдельными сервисами
|
||
|
||
```bash
|
||
# Запуск только веб-приложения
|
||
docker compose up -d movie-search
|
||
|
||
# Запуск только Telegram бота
|
||
docker compose up -d telegram-bot
|
||
|
||
# Перезапуск TorAPI
|
||
docker compose restart torapi-search torapi-qbittorrent
|
||
```
|
||
|
||
### Управление qBittorrent
|
||
|
||
```bash
|
||
# Запуск
|
||
sudo systemctl start qbittorrent
|
||
|
||
# Остановка
|
||
sudo systemctl stop qbittorrent
|
||
|
||
# Статус
|
||
sudo systemctl status qbittorrent
|
||
|
||
# Логи
|
||
sudo journalctl -u qbittorrent -f
|
||
```
|
||
|
||
## 🐛 Устранение неполадок
|
||
|
||
### Проблемы с Docker
|
||
|
||
```bash
|
||
# Проверка статуса контейнеров
|
||
docker ps -a
|
||
|
||
# Просмотр логов
|
||
docker logs <container_name>
|
||
|
||
# Пересборка контейнеров
|
||
docker compose up -d --build --force-recreate
|
||
```
|
||
|
||
### Проблемы с qBittorrent
|
||
|
||
```bash
|
||
# Проверка статуса
|
||
sudo systemctl status qbittorrent
|
||
|
||
# Перезапуск
|
||
sudo systemctl restart qbittorrent
|
||
|
||
# Проверка портов
|
||
netstat -tlnp | grep 8080
|
||
```
|
||
|
||
### Проблемы с сетью
|
||
|
||
```bash
|
||
# Проверка Docker сетей
|
||
docker network ls
|
||
|
||
# Создание сети заново
|
||
docker network rm torrentvideo_default
|
||
docker network create torrentvideo_default
|
||
```
|
||
|
||
### Проблемы с API
|
||
|
||
```bash
|
||
# Проверка TMDB API
|
||
curl "https://api.themoviedb.org/3/movie/550?api_key=YOUR_API_KEY"
|
||
|
||
# Проверка Telegram Bot
|
||
curl "https://api.telegram.org/botYOUR_BOT_TOKEN/getMe"
|
||
|
||
# Проверка TorAPI
|
||
curl "http://localhost:8443/api/provider/list"
|
||
```
|
||
|
||
## 📊 Мониторинг
|
||
|
||
### Логи сервисов
|
||
|
||
```bash
|
||
# Все сервисы
|
||
docker compose logs -f
|
||
|
||
# Конкретный сервис
|
||
docker logs -f movie-search
|
||
docker logs -f telegram-bot
|
||
docker logs -f TorAPI-Search
|
||
docker logs -f TorAPI-qBittorrent
|
||
```
|
||
|
||
### Мониторинг ресурсов
|
||
|
||
```bash
|
||
# Использование ресурсов контейнерами
|
||
docker stats
|
||
|
||
# Использование диска
|
||
df -h
|
||
|
||
# Использование памяти
|
||
free -h
|
||
```
|
||
|
||
## 🔒 Безопасность
|
||
|
||
### Рекомендации
|
||
|
||
1. **Измените пароли по умолчанию**
|
||
```bash
|
||
# В файле .env
|
||
QBITTORRENT_PASSWORD=your_secure_password
|
||
```
|
||
|
||
2. **Настройте файрвол**
|
||
```bash
|
||
sudo ufw allow 8080 # qBittorrent
|
||
sudo ufw allow 8089 # Web interface
|
||
sudo ufw enable
|
||
```
|
||
|
||
3. **Используйте HTTPS в продакшене**
|
||
- Настройте reverse proxy (nginx)
|
||
- Получите SSL сертификат
|
||
|
||
4. **Регулярно обновляйте зависимости**
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d --build
|
||
```
|
||
|
||
## 🚀 Развертывание в продакшене
|
||
|
||
### Настройка reverse proxy (nginx)
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:8089;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
```
|
||
|
||
### Использование Docker Swarm
|
||
|
||
```bash
|
||
# Инициализация Swarm
|
||
docker swarm init
|
||
|
||
# Развертывание стека
|
||
docker stack deploy -c docker-compose.yml searchtorrentdownl
|
||
```
|
||
|
||
## 🤝 Вклад в проект
|
||
|
||
1. Форкните репозиторий
|
||
2. Создайте ветку для новой функции
|
||
3. Внесите изменения
|
||
4. Создайте Pull Request
|
||
|
||
## 📄 Лицензия
|
||
|
||
Этот проект распространяется под лицензией MIT. См. файл [LICENSE](LICENSE) для подробностей.
|
||
|
||
## 🆘 Поддержка
|
||
|
||
При возникновении проблем:
|
||
|
||
1. Проверьте [раздел устранения неполадок](#-устранение-неполадок)
|
||
2. Изучите логи сервисов
|
||
3. Создайте issue в репозитории
|
||
4. Опишите проблему и приложите логи
|
||
|
||
## 📈 Планы развития
|
||
|
||
- [ ] Поддержка дополнительных трекеров
|
||
- [ ] Веб-интерфейс для управления ботом
|
||
- [ ] Система уведомлений по email
|
||
- [ ] API для интеграции с другими приложениями
|
||
- [ ] Поддержка сериалов и аниме
|
||
- [ ] Мобильное приложение
|
||
|
||
---
|
||
|
||
**Создано с ❤️ для удобного поиска и загрузки фильмов** |