2025-08-07 13:47:42 +00:00
|
|
|
|
# Neo Movies API (Go Version) 🎬
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
> Современный API для поиска фильмов и сериалов, портированный с Node.js на Go
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 🚀 Особенности
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
- ⚡ **Высокая производительность** - написан на Go
|
|
|
|
|
|
- 🔒 **JWT аутентификация** с email верификацией
|
|
|
|
|
|
- 🎭 **TMDB API интеграция** для данных о фильмах/сериалах
|
|
|
|
|
|
- 📧 **Email уведомления** через Gmail SMTP
|
|
|
|
|
|
- 🔍 **Полнотекстовый поиск** фильмов и сериалов
|
|
|
|
|
|
- ⭐ **Система избранного** для пользователей
|
|
|
|
|
|
- 🎨 **Современная документация** с Scalar API Reference
|
|
|
|
|
|
- 🌐 **CORS поддержка** для фронтенд интеграции
|
|
|
|
|
|
- ☁️ **Готов к деплою на Vercel**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 📚 Основные функции
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
### 🔐 Аутентификация
|
|
|
|
|
|
- **Регистрация** с email верификацией (6-значный код)
|
|
|
|
|
|
- **Авторизация** JWT токенами
|
|
|
|
|
|
- **Управление профилем** пользователя
|
|
|
|
|
|
- **Email подтверждение** обязательно для входа
|
|
|
|
|
|
|
|
|
|
|
|
### 🎬 TMDB интеграция
|
|
|
|
|
|
- Поиск фильмов и сериалов
|
|
|
|
|
|
- Популярные, топ-рейтинговые, предстоящие
|
|
|
|
|
|
- Детальная информация с трейлерами и актерами
|
|
|
|
|
|
- Рекомендации и похожие фильмы
|
|
|
|
|
|
- Мультипоиск по всем типам контента
|
|
|
|
|
|
|
|
|
|
|
|
### ⭐ Пользовательские функции
|
|
|
|
|
|
- Добавление фильмов в избранное
|
|
|
|
|
|
- Персональные списки
|
|
|
|
|
|
- История просмотров
|
|
|
|
|
|
|
|
|
|
|
|
### 🎭 Плееры
|
|
|
|
|
|
- **Alloha Player** интеграция
|
|
|
|
|
|
- **Lumex Player** интеграция
|
|
|
|
|
|
|
|
|
|
|
|
### 📦 Дополнительно
|
|
|
|
|
|
- **Торренты** - поиск по IMDB ID с фильтрацией
|
|
|
|
|
|
- **Реакции** - лайки/дизлайки с внешним API
|
|
|
|
|
|
- **Изображения** - прокси для TMDB с кэшированием
|
|
|
|
|
|
- **Категории** - жанры и фильмы по категориям
|
|
|
|
|
|
|
|
|
|
|
|
## 🛠 Быстрый старт
|
|
|
|
|
|
|
|
|
|
|
|
### Локальная разработка
|
|
|
|
|
|
|
|
|
|
|
|
1. **Клонирование репозитория**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
git clone <your-repo>
|
2025-01-03 19:46:10 +00:00
|
|
|
|
cd neomovies-api
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
2. **Создание .env файла**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
# Заполните необходимые переменные
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
3. **Установка зависимостей**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
go mod download
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
4. **Запуск**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
go run main.go
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
2025-07-07 18:23:34 +03:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
API будет доступен на `http://localhost:3000`
|
|
|
|
|
|
|
|
|
|
|
|
### Деплой на Vercel
|
|
|
|
|
|
|
|
|
|
|
|
1. **Подключите репозиторий к Vercel**
|
|
|
|
|
|
2. **Настройте переменные окружения** (см. список ниже)
|
|
|
|
|
|
3. **Деплой произойдет автоматически**
|
|
|
|
|
|
|
|
|
|
|
|
## ⚙️ Переменные окружения
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# Обязательные
|
|
|
|
|
|
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/neomovies
|
2025-01-03 19:46:10 +00:00
|
|
|
|
TMDB_ACCESS_TOKEN=your_tmdb_access_token
|
2025-07-07 18:23:34 +03:00
|
|
|
|
JWT_SECRET=your_jwt_secret_key
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
# Для email уведомлений (Gmail)
|
2025-07-07 18:23:34 +03:00
|
|
|
|
GMAIL_USER=your_gmail@gmail.com
|
|
|
|
|
|
GMAIL_APP_PASSWORD=your_gmail_app_password
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
# Для плееров
|
2025-07-07 18:23:34 +03:00
|
|
|
|
LUMEX_URL=your_lumex_player_url
|
|
|
|
|
|
ALLOHA_TOKEN=your_alloha_token
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
# Автоматические (Vercel)
|
|
|
|
|
|
PORT=3000
|
|
|
|
|
|
BASE_URL=https://api.neomovies.ru
|
|
|
|
|
|
NODE_ENV=production
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 📋 API Endpoints
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
### 🔓 Публичные маршруты
|
|
|
|
|
|
|
|
|
|
|
|
```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 изображений
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
### 🔒 Приватные маршруты (требуют 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 # Все мои реакции
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 📖 Примеры использования
|
|
|
|
|
|
|
|
|
|
|
|
### Регистрация и верификация
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
# 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"
|
|
|
|
|
|
}'
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
### Поиск фильмов
|
|
|
|
|
|
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
# Поиск фильмов
|
|
|
|
|
|
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"
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
### Поиск торрентов
|
|
|
|
|
|
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-07 13:47:42 +00:00
|
|
|
|
# Поиск торрентов для фильма "Побег из Шоушенка"
|
|
|
|
|
|
curl "https://api.neomovies.ru/api/v1/torrents/search/tt0111161?type=movie&quality=1080p"
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 🎨 Документация API
|
|
|
|
|
|
|
|
|
|
|
|
Интерактивная документация доступна по адресу:
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
**🔗 https://api.neomovies.ru/**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## ☁️ Деплой на Vercel
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
1. **Подключите репозиторий к Vercel**
|
|
|
|
|
|
2. **Настройте Environment Variables в Vercel Dashboard:**
|
|
|
|
|
|
3. **Деплой автоматически запустится!**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 🏗 Архитектура
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
├── 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 модули
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
## 🔧 Технологии
|
|
|
|
|
|
|
|
|
|
|
|
- **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
|