2025-08-07 18:25:43 +00:00
|
|
|
|
# Neo Movies API
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 18:25:43 +00:00
|
|
|
|
REST API для поиска и получения информации о фильмах, использующий TMDB API.
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-08-07 18:25:43 +00:00
|
|
|
|
## Особенности
|
2025-01-03 19:46:10 +00:00
|
|
|
|
|
2025-10-18 21:04:46 +00:00
|
|
|
|
- Интеграция с Kinopoisk API для русского контента
|
|
|
|
|
|
- Автоматическое переключение между TMDB и Kinopoisk
|
|
|
|
|
|
- Поиск фильмов и сериалов
|
2025-08-07 18:25:43 +00:00
|
|
|
|
- Информация о фильмах
|
2025-10-18 21:04:46 +00:00
|
|
|
|
- Популярные, топ-рейтинговые, предстоящие фильмы
|
|
|
|
|
|
- Поддержка русских плееров (Alloha, Lumex, Vibix, HDVB)
|
2025-08-07 18:25:43 +00:00
|
|
|
|
- Swagger документация
|
2025-10-18 21:04:46 +00:00
|
|
|
|
- Полная поддержка русского языка
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
## 🛠 Быстрый старт
|
|
|
|
|
|
|
|
|
|
|
|
### Локальная разработка
|
|
|
|
|
|
|
|
|
|
|
|
1. **Клонирование репозитория**
|
2025-01-03 19:46:10 +00:00
|
|
|
|
```bash
|
2025-08-26 20:57:07 +00:00
|
|
|
|
git clone https://gitlab.com/foxixus/neomovies-api.git
|
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
|
|
|
|
|
|
# Обязательные
|
2025-10-18 21:04:46 +00:00
|
|
|
|
MONGO_URI=mongodb://localhost:27017/neomovies
|
|
|
|
|
|
MONGO_DB_NAME=neomovies
|
|
|
|
|
|
TMDB_ACCESS_TOKEN=your_tmdb_access_token
|
|
|
|
|
|
JWT_SECRET=your_jwt_secret_key
|
|
|
|
|
|
|
|
|
|
|
|
# Kinopoisk API
|
|
|
|
|
|
KPAPI_KEY=920aaf6a-9f64-46f7-bda7-209fb1069440
|
|
|
|
|
|
KPAPI_BASE_URL=https://kinopoiskapiunofficial.tech/api
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
2025-08-08 16:47:02 +00:00
|
|
|
|
# Сервис
|
|
|
|
|
|
PORT=3000
|
|
|
|
|
|
BASE_URL=http://localhost:3000
|
2025-10-18 21:04:46 +00:00
|
|
|
|
FRONTEND_URL=http://localhost:3001
|
2025-08-08 16:47:02 +00:00
|
|
|
|
NODE_ENV=development
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
2025-08-08 16:47:02 +00:00
|
|
|
|
# Email (Gmail)
|
2025-10-18 21:04:46 +00:00
|
|
|
|
GMAIL_USER=your_gmail@gmail.com
|
|
|
|
|
|
GMAIL_APP_PASSWORD=your_gmail_app_password
|
2025-07-07 18:23:34 +03:00
|
|
|
|
|
2025-10-18 21:04:46 +00:00
|
|
|
|
# Русские плееры
|
|
|
|
|
|
LUMEX_URL=https://p.lumex.space
|
|
|
|
|
|
ALLOHA_TOKEN=your_alloha_token
|
|
|
|
|
|
VIBIX_HOST=https://vibix.org
|
|
|
|
|
|
VIBIX_TOKEN=18745|NzecUXT4gikPUtFkSEFlDLPmr9kWnQACTo1N0Ixq9240bcf1
|
|
|
|
|
|
HDVB_TOKEN=b9ae5f8c4832244060916af4aa9d1939
|
2025-08-08 16:47:02 +00:00
|
|
|
|
|
|
|
|
|
|
# Торренты (RedAPI)
|
|
|
|
|
|
REDAPI_BASE_URL=http://redapi.cfhttp.top
|
2025-10-18 21:04:46 +00:00
|
|
|
|
REDAPI_KEY=your_redapi_key
|
2025-08-08 16:47:02 +00:00
|
|
|
|
|
|
|
|
|
|
# Google OAuth
|
2025-10-18 21:04:46 +00:00
|
|
|
|
GOOGLE_CLIENT_ID=your_google_client_id
|
|
|
|
|
|
GOOGLE_CLIENT_SECRET=your_google_client_secret
|
2025-08-08 16:47:02 +00:00
|
|
|
|
GOOGLE_REDIRECT_URL=http://localhost:3000/api/v1/auth/google/callback
|
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 # Авторизация
|
2025-08-08 16:47:02 +00:00
|
|
|
|
GET /api/v1/auth/google/login # Начало авторизации через Google (redirect)
|
|
|
|
|
|
GET /api/v1/auth/google/callback # Коллбек Google OAuth (возвращает JWT)
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
# Поиск и категории
|
|
|
|
|
|
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 # Похожие
|
|
|
|
|
|
|
2025-10-18 21:04:46 +00:00
|
|
|
|
# Плееры (новый формат с типом ID)
|
|
|
|
|
|
GET /api/v1/players/alloha/{id_type}/{id} # Alloha плеер (kp/301 или imdb/tt0133093)
|
|
|
|
|
|
GET /api/v1/players/lumex/{id_type}/{id} # Lumex плеер (kp/301 или imdb/tt0133093)
|
|
|
|
|
|
GET /api/v1/players/vibix/{id_type}/{id} # Vibix плеер (kp/301 или imdb/tt0133093)
|
|
|
|
|
|
GET /api/v1/players/hdvb/{id_type}/{id} # HDVB плеер (kp/301 или imdb/tt0133093)
|
|
|
|
|
|
GET /api/v1/players/vidsrc/{media_type}/{imdb_id} # Vidsrc (только IMDB)
|
|
|
|
|
|
GET /api/v1/players/vidlink/movie/{imdb_id} # Vidlink фильмы (только IMDB)
|
|
|
|
|
|
GET /api/v1/players/vidlink/tv/{tmdb_id} # Vidlink сериалы (только TMDB)
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
# Торренты
|
|
|
|
|
|
GET /api/v1/torrents/search/{imdbId} # Поиск торрентов
|
|
|
|
|
|
|
|
|
|
|
|
# Реакции (публичные)
|
2025-08-08 16:47:02 +00:00
|
|
|
|
GET /api/v1/reactions/{mediaType}/{mediaId}/counts # Счетчики реакций
|
2025-08-07 13:47:42 +00:00
|
|
|
|
|
|
|
|
|
|
# Изображения
|
|
|
|
|
|
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} # Удалить из избранного
|
|
|
|
|
|
|
|
|
|
|
|
# Реакции (приватные)
|
2025-08-08 16:47:02 +00:00
|
|
|
|
GET /api/v1/reactions/{mediaType}/{mediaId}/my-reaction # Моя реакция
|
|
|
|
|
|
POST /api/v1/reactions/{mediaType}/{mediaId} # Установить реакцию
|
|
|
|
|
|
DELETE /api/v1/reactions/{mediaType}/{mediaId} # Удалить реакцию
|
|
|
|
|
|
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** - аутентификация
|
2025-10-18 21:04:46 +00:00
|
|
|
|
- **TMDB API** - данные о фильмах (международный контент)
|
|
|
|
|
|
- **Kinopoisk API Unofficial** - данные о русском контенте
|
2025-08-07 13:47:42 +00:00
|
|
|
|
- **Gmail SMTP** - email уведомления
|
|
|
|
|
|
- **Vercel** - деплой и хостинг
|
|
|
|
|
|
|
2025-10-18 21:04:46 +00:00
|
|
|
|
## 🌍 Kinopoisk API интеграция
|
|
|
|
|
|
|
|
|
|
|
|
API автоматически переключается между TMDB и Kinopoisk в зависимости от языка запроса:
|
|
|
|
|
|
|
|
|
|
|
|
- **Русский язык (`lang=ru`)** → Kinopoisk API
|
|
|
|
|
|
- Русские названия фильмов
|
|
|
|
|
|
- Рейтинги Кинопоиска
|
|
|
|
|
|
- Поддержка Kinopoisk ID
|
|
|
|
|
|
|
|
|
|
|
|
- **Английский язык (`lang=en`)** → TMDB API
|
|
|
|
|
|
- Международные названия
|
|
|
|
|
|
- Рейтинги IMDB/TMDB
|
|
|
|
|
|
- Поддержка IMDB/TMDB ID
|
|
|
|
|
|
|
|
|
|
|
|
### Формат ID в плеерах
|
|
|
|
|
|
|
|
|
|
|
|
Все русские плееры поддерживают два типа идентификаторов:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# По Kinopoisk ID (приоритет для русского контента)
|
|
|
|
|
|
GET /api/v1/players/alloha/kp/301
|
|
|
|
|
|
|
|
|
|
|
|
# По IMDB ID (fallback)
|
|
|
|
|
|
GET /api/v1/players/alloha/imdb/tt0133093
|
|
|
|
|
|
|
|
|
|
|
|
# Примеры для других плееров
|
|
|
|
|
|
GET /api/v1/players/lumex/kp/301
|
|
|
|
|
|
GET /api/v1/players/vibix/kp/301
|
|
|
|
|
|
GET /api/v1/players/hdvb/kp/301
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-08-07 13:47:42 +00:00
|
|
|
|
## 🚀 Производительность
|
|
|
|
|
|
|
|
|
|
|
|
По сравнению с 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
|