findFilms/README.md
vrubelroman 90ad38bca7 Очистка проекта и улучшение документации
- Удалены ненужные файлы: node_modules, package.json, package-lock.json, get_rutracker_cookie.js, __pycache__
- Создан скрипт автоматического развертывания deploy.sh
- Создан файл .gitignore для исключения временных файлов
- Создан env.example с примером конфигурации
- Полностью переписана документация README.md с подробными инструкциями
- Обновлен PROJECT_SUMMARY.md с инструкциями по развертыванию
- Проект готов к развертыванию на новом компьютере
2025-10-09 13:05:28 +03:00

469 lines
No EOL
15 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 🎬 searchTorrentDownl
**Полнофункциональная система для поиска и загрузки фильмов через торренты с Telegram ботом**
[![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker)](https://www.docker.com/)
[![Python](https://img.shields.io/badge/Python-3.12+-green?logo=python)](https://python.org/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.115.0-red?logo=fastapi)](https://fastapi.tiangolo.com/)
[![Telegram](https://img.shields.io/badge/Telegram-Bot-blue?logo=telegram)](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 для интеграции с другими приложениями
- [ ] Поддержка сериалов и аниме
- [ ] Мобильное приложение
---
**Создано с ❤️ для удобного поиска и загрузки фильмов**