findFilms/README.md
vrubelroman bc461d36a6 Подключили Telegram бот с полной функциональностью
- Создан полнофункциональный Telegram бот для поиска фильмов и торрентов
- Бот дублирует всю функциональность веб-интерфейса
- Реализован поиск фильмов через TMDB API с постерами
- Добавлен поиск торрентов на всех трекерах (RuTracker, Kinozal, RuTor, NoNameClub)
- Автоматическое добавление торрентов в qBittorrent
- Интерактивные кнопки для выбора фильмов и торрентов
- Обработка ошибок и пользовательских состояний
- Docker контейнеризация с правильной сетевой конфигурацией
- Увеличен таймаут HTTP запросов до 60 секунд
- Добавлена документация и скрипты запуска

Команды бота:
- /start, /help - справка
- /find - начать поиск фильма

Файлы:
- telegram_bot.py - основной код бота
- run_telegram_bot.py - скрипт запуска
- Dockerfile.telegram - Docker образ для бота
- docker-compose.yml - обновлен с сервисом бота
- requirements.txt - добавлена зависимость python-telegram-bot
- README.md - обновлена документация
- PROJECT_SUMMARY.md - полная сводка проекта
2025-10-09 12:39:19 +03:00

394 lines
No EOL
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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 - Полная документация
## 🎯 Описание проекта
**searchTorrentDownl** - это полнофункциональная система для поиска и загрузки фильмов через торренты. Приложение интегрирует поиск фильмов через TMDB API с поиском торрентов на популярных трекерах и автоматическим добавлением в qBittorrent клиент.
### 🎬 Бизнес-логика:
1. **Поиск фильмов** - пользователь вводит название фильма
2. **Выбор фильма** - из результатов поиска выбирается нужный фильм
3. **Поиск торрентов** - система ищет доступные торренты на всех подключенных трекерах
4. **Фильтрация и ранжирование** - торренты сортируются по качеству, размеру и количеству сидов
5. **Автоматическое добавление** - выбранный торрент автоматически добавляется в qBittorrent
6. **Загрузка** - файлы загружаются в настроенную папку
### 🔧 Техническая составляющая:
- **Frontend**: HTML/CSS/JavaScript с адаптивным дизайном
- **Backend**: FastAPI с асинхронной обработкой запросов
- **Поиск фильмов**: TMDB API для получения метаданных
- **Поиск торрентов**: TorAPI для работы с трекерами (RuTracker, Kinozal, RuTor, NoNameClub)
- **Клиент**: qBittorrent-nox на хосте для загрузки
- **Контейнеризация**: Docker для изоляции сервисов
- **Сеть**: Docker networks для связи между компонентами
## 🏗️ Архитектура системы
### Компоненты системы:
1. **FastAPI приложение** (Docker контейнер) - основной веб-сервис
2. **TorAPI-Search** (Docker контейнер) - поиск торрентов по названию
3. **TorAPI-qBittorrent** (Docker контейнер) - получение magnet ссылок по ID
4. **qBittorrent-nox** (хостовая система) - клиент для загрузки торрентов
## 📋 Технические требования
### Системные требования:
- **ОС**: Linux (Ubuntu/Debian)
- **Docker**: 20.10+
- **Docker Compose**: 2.0+
- **Python**: 3.12+
- **RAM**: минимум 2GB
- **Диск**: минимум 10GB свободного места
### Зависимости:
- FastAPI 0.115.0
- Uvicorn 0.30.6
- httpx 0.27.2
- BeautifulSoup4 4.12.3
- qBittorrent-nox 4.6.7+
## 🚀 Установка и настройка
### 1. Установка qBittorrent на хост
```bash
# Установка qBittorrent-nox
sudo apt update
sudo apt install qbittorrent-nox
# Создание пользователя для qBittorrent
sudo useradd -r -s /bin/false qbittorrent
sudo mkdir -p /home/qbittorrent/Downloads
sudo chown -R qbittorrent:qbittorrent /home/qbittorrent
# Создание systemd сервиса
sudo tee /etc/systemd/system/qbittorrent.service > /dev/null <<EOF
[Unit]
Description=qBittorrent Command Line Client
After=network.target
[Service]
Type=forking
User=qbittorrent
Group=qbittorrent
UMask=007
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8080
Restart=on-failure
RestartSec=5
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
EOF
# Включение и запуск сервиса
sudo systemctl enable qbittorrent
sudo systemctl start qbittorrent
```
### 2. Настройка qBittorrent
1. Откройте браузер: http://localhost:8080
2. Войдите с логином `admin` и паролем `vrubel07`
3. Настройте параметры:
- **Connection**: порт 6881, включить UPnP/NAT-PMP
- **BitTorrent**: включить DHT, PeX, Local Peer Discovery
- **Downloads**: папка `/home/qbittorrent/Downloads` (настроена автоматически)
**Важно**: Все загруженные файлы сохраняются в `/home/qbittorrent/Downloads/`
### 3. Запуск Docker контейнеров
```bash
# Клонирование репозитория
git clone <repository-url>
cd searchTorrentDownl
# Создание сети для TorAPI
docker network create torrentvideo_default
# Запуск всех сервисов
docker compose up -d --build
```
## ⚙️ Конфигурация
### Переменные окружения
#### Основное приложение (movie-search):
```bash
TMDB_API_KEY=6d58225585fb77af5945a964de41849f
TORAPI_URL=http://localhost:8088
TORRENT_SEARCH_URL=http://localhost:8443
TORRENT_ADD_URL=http://localhost:8444
QBITTORRENT_HOST=localhost
QBITTORRENT_PORT=8080
QBITTORRENT_USERNAME=admin
QBITTORRENT_PASSWORD=vrubel07
```
#### TorAPI-qBittorrent:
```bash
PROXY_ADDRESS=172.17.0.1
PROXY_PORT=8080
USERNAME=admin
PASSWORD=vrubel07
```
### Docker Compose конфигурация
```yaml
version: '3.8'
services:
movie-search:
build: .
ports:
- "8089:8000"
environment:
- TMDB_API_KEY=6d58225585fb77af5945a964de41849f
- TORAPI_URL=http://localhost:8088
- TORRENT_SEARCH_URL=http://localhost:8443
- TORRENT_ADD_URL=http://localhost:8444
- QBITTORRENT_HOST=localhost
- QBITTORRENT_PORT=8080
- QBITTORRENT_USERNAME=admin
- QBITTORRENT_PASSWORD=vrubel07
networks:
- torrentvideo_default
TorAPI-Search:
image: lifailon/torapi:latest
ports:
- "8443:8443"
networks:
- torrentvideo_default
TorAPI-qBittorrent:
image: lifailon/torapi:latest
ports:
- "8444:8443"
environment:
- PROXY_ADDRESS=172.17.0.1
- PROXY_PORT=8080
- USERNAME=admin
- PASSWORD=vrubel07
networks:
- torrentvideo_default
networks:
torrentvideo_default:
external: true
```
## 🔧 API Endpoints
### Основное приложение (порт 8089)
#### Веб-интерфейс:
- `GET /` - главная страница поиска
- `POST /search` - поиск фильмов
- `GET /torrents/{movie_title}` - страница с торрентами
#### API:
- `GET /api/search/{movie_title}` - поиск фильмов через TMDB
- `GET /api/torrents/{movie_title}` - поиск торрентов
- `GET /api/torrent/id/{torrent_id}` - получение информации о торренте по ID
- `POST /api/add-torrent` - добавление торрента в qBittorrent
### TorAPI-Search (порт 8443)
- `GET /api/search/title/{provider}?q={query}` - поиск торрентов по названию
- `GET /api/provider/list` - список доступных провайдеров
### TorAPI-qBittorrent (порт 8444)
- `GET /api/search/id/{provider}?id={torrent_id}` - получение magnet ссылки по ID
## 🎬 Поддерживаемые трекеры
- **RuTracker** - rutracker.org, rutracker.net, rutracker.nl
- **Kinozal** - kinozal.tv, kinozal.me, kinozal.guru
- **RuTor** - rutor.info, rutor.is
- **NoNameClub** - nnmclub.to
## 🔄 Алгоритм работы
### 1. Поиск фильма:
1. Пользователь вводит название фильма в веб-форму
2. FastAPI приложение обращается к TMDB API с запросом
3. Получает список фильмов с метаданными (постер, описание, рейтинг, год)
4. Отображает результаты в удобном интерфейсе
### 2. Поиск торрентов:
1. Пользователь выбирает фильм и нажимает "Найти торренты"
2. Приложение обращается к TorAPI-Search (порт 8443)
3. TorAPI ищет торренты на всех подключенных трекерах:
- RuTracker (rutracker.org, rutracker.net, rutracker.nl)
- Kinozal (kinozal.tv, kinozal.me, kinozal.guru)
- RuTor (rutor.info, rutor.is)
- NoNameClub (nnmclub.to)
4. Результаты фильтруются и ранжируются по релевантности, качеству и количеству сидов
### 3. Добавление торрента:
1. Пользователь нажимает "Добавить в клиент" на выбранном торренте
2. Приложение получает ID торрента и обращается к TorAPI-qBittorrent (порт 8444)
3. TorAPI-qBittorrent получает magnet ссылку по ID торрента
4. Приложение генерирует "чистую" magnet ссылку с публичными трекерами
5. Через qBittorrent Web API торрент добавляется в клиент
6. qBittorrent начинает загрузку в папку `/home/qbittorrent/Downloads`
### 4. Мониторинг загрузки:
1. Пользователь может отслеживать прогресс через qBittorrent веб-интерфейс
2. Файлы автоматически сохраняются в настроенную папку
3. После завершения загрузки файлы готовы к просмотру
## 🛠️ Устранение неполадок
### Проблема: qBittorrent не может добавить торренты
**Решение:**
1. Проверьте настройки qBittorrent (DHT, PeX, LPD включены)
2. Убедитесь, что порт 6881 открыт
3. Проверьте подключение к интернету
### Проблема: TorAPI не может подключиться к трекерам
**Решение:**
1. Проверьте, что трекеры доступны
2. Убедитесь, что нет блокировки на уровне роутера/провайдера
3. Проверьте логи контейнеров: `docker logs TorAPI-Search`
### Проблема: Приложение не может подключиться к qBittorrent
**Решение:**
1. Проверьте, что qBittorrent запущен: `sudo systemctl status qbittorrent`
2. Проверьте доступность: `curl http://localhost:8080/api/v2/app/version`
3. Проверьте учетные данные в переменных окружения
## 📊 Мониторинг
### Проверка статуса сервисов:
```bash
# qBittorrent
sudo systemctl status qbittorrent
# Docker контейнеры
docker ps
# Логи приложения
docker logs movie-search --tail 50
# Логи TorAPI
docker logs TorAPI-Search --tail 50
docker logs TorAPI-qBittorrent --tail 50
```
### Проверка торрентов в qBittorrent:
```bash
curl -s -X POST "http://localhost:8080/api/v2/auth/login" -d "username=admin&password=vrubel07" -c cookies.txt
curl -s -b cookies.txt "http://localhost:8080/api/v2/torrents/info" | jq '.[] | {name: .name, state: .state, progress: .progress}'
```
## 🔒 Безопасность
### Рекомендации:
1. Измените пароли по умолчанию
2. Настройте файрвол для ограничения доступа
3. Используйте HTTPS в продакшене
4. Регулярно обновляйте зависимости
### Настройка файрвола:
```bash
# Разрешить доступ к веб-интерфейсам
sudo ufw allow 8080/tcp # qBittorrent
sudo ufw allow 8089/tcp # Приложение
sudo ufw allow 6881/tcp # BitTorrent
sudo ufw allow 6881/udp # BitTorrent
```
## 📈 Производительность
### Оптимизация:
1. Настройте лимиты загрузки в qBittorrent
2. Используйте SSD для папки загрузок
3. Настройте кэширование в браузере
4. Мониторьте использование ресурсов
### Рекомендуемые настройки qBittorrent:
- Максимальная скорость загрузки: 80% от пропускной способности
- Максимальная скорость отдачи: 20% от пропускной способности
- Максимальное количество активных торрентов: 10-20
- Максимальное количество подключений: 200-500
## 🆘 Поддержка
При возникновении проблем:
1. Проверьте логи всех сервисов
2. Убедитесь, что все порты доступны
3. Проверьте настройки сети и файрвола
4. Создайте issue в репозитории проекта
## 📁 Структура проекта
```
searchTorrentDownl/
├── app.py # Основное приложение
├── telegram_bot.py # Telegram бот
├── run_telegram_bot.py # Скрипт запуска бота
├── test_telegram_bot.py # Тестирование бота
├── requirements.txt # Python зависимости
├── 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 бота
```
## 🎯 Возможности
- 🔍 **Поиск фильмов** по названию через TMDB API с полными метаданными
- 🎬 **Информация о фильмах** - постер, описание, рейтинг, год выпуска, актеры
- 🔗 **Поиск торрентов** на 4 популярных трекерах одновременно
- 📊 **Детальная информация** о торрентах - размер, разрешение, качество, количество сидов
- 🚀 **Автоматическое добавление** торрентов в qBittorrent одним кликом
- 🌐 **Веб-интерфейс** с удобным поиском и навигацией
- 📱 **Адаптивный дизайн** для работы на любых устройствах
- 🤖 **Telegram Bot** - полная функциональность в мессенджере
- 🐳 **Контейнеризация** для простого развертывания
- 🔌 **REST API** для интеграции с другими системами
-**Асинхронная обработка** для высокой производительности
- 🛡️ **Безопасность** - генерация чистых magnet ссылок с публичными трекерами
## ✅ Статус проекта
**🟢 ПРОЕКТ ПОЛНОСТЬЮ ФУНКЦИОНАЛЕН**
- ✅ Поиск фильмов работает
- ✅ Поиск торрентов работает
- ✅ Добавление торрентов в qBittorrent работает
- ✅ Загрузка файлов работает
-Веб-интерфейс работает
- ✅ API работает
- ✅ Telegram Bot работает
-Все сервисы интегрированы
## 🚀 Быстрый старт
### Запуск с помощью Docker Compose
```bash
docker compose up --build -d
```
### Доступ к приложению
- **Веб-интерфейс**: http://localhost:8089
- **qBittorrent**: http://localhost:8080 (admin/vrubel07)
- **API**: http://localhost:8089/api/search/{название_фильма}
- **Telegram Bot**: @your_bot_username (команда /start)
---
**Версия документации**: 1.0
**Дата обновления**: $(date)
**Автор**: AI Assistant