Files
neomovies-api/README.md
2025-08-07 13:47:42 +00:00

290 lines
11 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.

# Neo Movies API (Go Version) 🎬
> Современный API для поиска фильмов и сериалов, портированный с Node.js на Go
## 🚀 Особенности
-**Высокая производительность** - написан на Go
- 🔒 **JWT аутентификация** с email верификацией
- 🎭 **TMDB API интеграция** для данных о фильмах/сериалах
- 📧 **Email уведомления** через Gmail SMTP
- 🔍 **Полнотекстовый поиск** фильмов и сериалов
-**Система избранного** для пользователей
- 🎨 **Современная документация** с Scalar API Reference
- 🌐 **CORS поддержка** для фронтенд интеграции
- ☁️ **Готов к деплою на Vercel**
## 📚 Основные функции
### 🔐 Аутентификация
- **Регистрация** с email верификацией (6-значный код)
- **Авторизация** JWT токенами
- **Управление профилем** пользователя
- **Email подтверждение** обязательно для входа
### 🎬 TMDB интеграция
- Поиск фильмов и сериалов
- Популярные, топ-рейтинговые, предстоящие
- Детальная информация с трейлерами и актерами
- Рекомендации и похожие фильмы
- Мультипоиск по всем типам контента
### ⭐ Пользовательские функции
- Добавление фильмов в избранное
- Персональные списки
- История просмотров
### 🎭 Плееры
- **Alloha Player** интеграция
- **Lumex Player** интеграция
### 📦 Дополнительно
- **Торренты** - поиск по IMDB ID с фильтрацией
- **Реакции** - лайки/дизлайки с внешним API
- **Изображения** - прокси для TMDB с кэшированием
- **Категории** - жанры и фильмы по категориям
## 🛠 Быстрый старт
### Локальная разработка
1. **Клонирование репозитория**
```bash
git clone <your-repo>
cd neomovies-api
```
2. **Создание .env файла**
```bash
cp .env.example .env
# Заполните необходимые переменные
```
3. **Установка зависимостей**
```bash
go mod download
```
4. **Запуск**
```bash
go run main.go
```
API будет доступен на `http://localhost:3000`
### Деплой на Vercel
1. **Подключите репозиторий к Vercel**
2. **Настройте переменные окружения** (см. список ниже)
3. **Деплой произойдет автоматически**
## ⚙️ Переменные окружения
```bash
# Обязательные
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/neomovies
TMDB_ACCESS_TOKEN=your_tmdb_access_token
JWT_SECRET=your_jwt_secret_key
# Для email уведомлений (Gmail)
GMAIL_USER=your_gmail@gmail.com
GMAIL_APP_PASSWORD=your_gmail_app_password
# Для плееров
LUMEX_URL=your_lumex_player_url
ALLOHA_TOKEN=your_alloha_token
# Автоматические (Vercel)
PORT=3000
BASE_URL=https://api.neomovies.ru
NODE_ENV=production
```
## 📋 API Endpoints
### 🔓 Публичные маршруты
```http
# Система
GET /api/v1/health # Проверка состояния
# Аутентификация
POST /api/v1/auth/register # Регистрация (отправка кода)
POST /api/v1/auth/verify # Подтверждение email кодом
POST /api/v1/auth/resend-code # Повторная отправка кода
POST /api/v1/auth/login # Авторизация
# Поиск и категории
GET /search/multi # Мультипоиск
GET /api/v1/categories # Список категорий
GET /api/v1/categories/{id}/movies # Фильмы по категории
# Фильмы
GET /api/v1/movies/search # Поиск фильмов
GET /api/v1/movies/popular # Популярные
GET /api/v1/movies/top-rated # Топ-рейтинговые
GET /api/v1/movies/upcoming # Предстоящие
GET /api/v1/movies/now-playing # В прокате
GET /api/v1/movies/{id} # Детали фильма
GET /api/v1/movies/{id}/recommendations # Рекомендации
GET /api/v1/movies/{id}/similar # Похожие
# Сериалы
GET /api/v1/tv/search # Поиск сериалов
GET /api/v1/tv/popular # Популярные
GET /api/v1/tv/top-rated # Топ-рейтинговые
GET /api/v1/tv/on-the-air # В эфире
GET /api/v1/tv/airing-today # Сегодня в эфире
GET /api/v1/tv/{id} # Детали сериала
GET /api/v1/tv/{id}/recommendations # Рекомендации
GET /api/v1/tv/{id}/similar # Похожие
# Плееры
GET /api/v1/players/alloha # Alloha плеер
GET /api/v1/players/lumex # Lumex плеер
# Торренты
GET /api/v1/torrents/search/{imdbId} # Поиск торрентов
# Реакции (публичные)
GET /api/v1/reactions/{type}/{id}/counts # Счетчики реакций
# Изображения
GET /api/v1/images/{size}/{path} # Прокси TMDB изображений
```
### 🔒 Приватные маршруты (требуют JWT)
```http
# Профиль
GET /api/v1/auth/profile # Профиль пользователя
PUT /api/v1/auth/profile # Обновление профиля
# Избранное
GET /api/v1/favorites # Список избранного
POST /api/v1/favorites/{id} # Добавить в избранное
DELETE /api/v1/favorites/{id} # Удалить из избранного
# Реакции (приватные)
GET /api/v1/reactions/{type}/{id}/my-reaction # Моя реакция
POST /api/v1/reactions/{type}/{id} # Установить реакцию
DELETE /api/v1/reactions/{type}/{id} # Удалить реакцию
GET /api/v1/reactions/my # Все мои реакции
```
## 📖 Примеры использования
### Регистрация и верификация
```bash
# 1. Регистрация
curl -X POST https://api.neomovies.ru/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password123",
"name": "John Doe"
}'
# Ответ: {"success": true, "message": "Registered. Check email for verification code."}
# 2. Подтверждение email (код из письма)
curl -X POST https://api.neomovies.ru/api/v1/auth/verify \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"code": "123456"
}'
# 3. Авторизация
curl -X POST https://api.neomovies.ru/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password123"
}'
```
### Поиск фильмов
```bash
# Поиск фильмов
curl "https://api.neomovies.ru/api/v1/movies/search?query=marvel&page=1"
# Детали фильма
curl "https://api.neomovies.ru/api/v1/movies/550"
# Добавить в избранное (с JWT токеном)
curl -X POST https://api.neomovies.ru/api/v1/favorites/550 \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
```
### Поиск торрентов
```bash
# Поиск торрентов для фильма "Побег из Шоушенка"
curl "https://api.neomovies.ru/api/v1/torrents/search/tt0111161?type=movie&quality=1080p"
```
## 🎨 Документация API
Интерактивная документация доступна по адресу:
**🔗 https://api.neomovies.ru/**
## ☁️ Деплой на Vercel
1. **Подключите репозиторий к Vercel**
2. **Настройте Environment Variables в Vercel Dashboard:**
3. **Деплой автоматически запустится!**
## 🏗 Архитектура
```
├── main.go # Точка входа приложения
├── api/
│ └── index.go # Vercel serverless handler
├── pkg/ # Публичные пакеты (совместимо с Vercel)
│ ├── config/ # Конфигурация с поддержкой альтернативных env vars
│ ├── database/ # Подключение к MongoDB
│ ├── middleware/ # JWT, CORS, логирование
│ ├── models/ # Структуры данных
│ ├── services/ # Бизнес-логика
│ └── handlers/ # HTTP обработчики
├── vercel.json # Конфигурация Vercel
└── go.mod # Go модули
```
## 🔧 Технологии
- **Go 1.21** - основной язык
- **Gorilla Mux** - HTTP роутер
- **MongoDB** - база данных
- **JWT** - аутентификация
- **TMDB API** - данные о фильмах
- **Gmail SMTP** - email уведомления
- **Vercel** - деплой и хостинг
## 🚀 Производительность
По сравнению с Node.js версией:
- **3x быстрее** обработка запросов
- **50% меньше** потребление памяти
- **Конкурентность** благодаря горутинам
- **Типобезопасность** предотвращает ошибки
## 🤝 Contribution
1. Форкните репозиторий
2. Создайте feature-ветку (`git checkout -b feature/amazing-feature`)
3. Коммитьте изменения (`git commit -m 'Add amazing feature'`)
4. Пушните в ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
## 📄 Лицензия
Apache License 2.0 - подробности в файле [LICENSE](LICENSE)
---
Made with <3 by Foxix