Files
neomovies-api/README.md

316 lines
12 KiB
Markdown
Raw Normal View History

2025-08-07 18:25:43 +00:00
# Neo Movies API
2025-08-07 18:25:43 +00:00
REST API для поиска и получения информации о фильмах, использующий TMDB API.
2025-08-07 18:25:43 +00:00
## Особенности
- Интеграция с Kinopoisk API для русского контента
- Автоматическое переключение между TMDB и Kinopoisk
- Поиск фильмов и сериалов
2025-08-07 18:25:43 +00:00
- Информация о фильмах
- Популярные, топ-рейтинговые, предстоящие фильмы
- Поддержка русских плееров (Alloha, Lumex, Vibix, HDVB)
2025-08-07 18:25:43 +00:00
- Swagger документация
- Полная поддержка русского языка
2025-08-07 13:47:42 +00:00
## 🛠 Быстрый старт
### Локальная разработка
1. **Клонирование репозитория**
```bash
2025-08-26 20:57:07 +00:00
git clone https://gitlab.com/foxixus/neomovies-api.git
cd neomovies-api
```
2025-08-07 13:47:42 +00:00
2. **Создание .env файла**
```bash
2025-08-07 13:47:42 +00:00
cp .env.example .env
# Заполните необходимые переменные
```
2025-08-07 13:47:42 +00:00
3. **Установка зависимостей**
```bash
2025-08-07 13:47:42 +00:00
go mod download
```
2025-08-07 13:47:42 +00:00
4. **Запуск**
```bash
go run main.go
```
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://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
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)
GMAIL_USER=your_gmail@gmail.com
GMAIL_APP_PASSWORD=your_gmail_app_password
2025-07-07 18:23:34 +03: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
REDAPI_KEY=your_redapi_key
2025-08-08 16:47:02 +00:00
# Google OAuth
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-08-07 13:47:42 +00:00
## 📋 API Endpoints
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 # Похожие
# Плееры (новый формат с типом 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-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-08-07 13:47:42 +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-08-07 13:47:42 +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-08-07 13:47:42 +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-08-07 13:47:42 +00:00
## 🎨 Документация API
Интерактивная документация доступна по адресу:
2025-08-07 13:47:42 +00:00
**🔗 https://api.neomovies.ru/**
2025-08-07 13:47:42 +00:00
## ☁️ Деплой на Vercel
2025-08-07 13:47:42 +00:00
1. **Подключите репозиторий к Vercel**
2. **Настройте Environment Variables в Vercel Dashboard:**
3. **Деплой автоматически запустится!**
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-08-07 13:47:42 +00:00
## 🔧 Технологии
- **Go 1.21** - основной язык
- **Gorilla Mux** - HTTP роутер
- **MongoDB** - база данных
- **JWT** - аутентификация
- **TMDB API** - данные о фильмах (международный контент)
- **Kinopoisk API Unofficial** - данные о русском контенте
2025-08-07 13:47:42 +00:00
- **Gmail SMTP** - email уведомления
- **Vercel** - деплой и хостинг
## 🌍 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