# Neo Movies API REST API для поиска и получения информации о фильмах, использующий TMDB API. ## Особенности - Интеграция с Kinopoisk API для русского контента - Автоматическое переключение между TMDB и Kinopoisk - Поиск фильмов и сериалов - Информация о фильмах - Популярные, топ-рейтинговые, предстоящие фильмы - Поддержка русских плееров (Alloha, Lumex, Vibix, HDVB) - Swagger документация - Полная поддержка русского языка ## 🛠 Быстрый старт ### Локальная разработка 1. **Клонирование репозитория** ```bash git clone https://gitlab.com/foxixus/neomovies-api.git 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://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 # Сервис PORT=3000 BASE_URL=http://localhost:3000 FRONTEND_URL=http://localhost:3001 NODE_ENV=development # Email (Gmail) GMAIL_USER=your_gmail@gmail.com GMAIL_APP_PASSWORD=your_gmail_app_password # Русские плееры LUMEX_URL=https://p.lumex.space ALLOHA_TOKEN=your_alloha_token VIBIX_HOST=https://vibix.org VIBIX_TOKEN=18745|NzecUXT4gikPUtFkSEFlDLPmr9kWnQACTo1N0Ixq9240bcf1 HDVB_TOKEN=b9ae5f8c4832244060916af4aa9d1939 # Торренты (RedAPI) REDAPI_BASE_URL=http://redapi.cfhttp.top REDAPI_KEY=your_redapi_key # Google OAuth GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GOOGLE_REDIRECT_URL=http://localhost:3000/api/v1/auth/google/callback ``` ## 📋 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 /api/v1/auth/google/login # Начало авторизации через Google (redirect) GET /api/v1/auth/google/callback # Коллбек Google OAuth (возвращает JWT) # Поиск и категории 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) # Торренты GET /api/v1/torrents/search/{imdbId} # Поиск торрентов # Реакции (публичные) GET /api/v1/reactions/{mediaType}/{mediaId}/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/{mediaType}/{mediaId}/my-reaction # Моя реакция POST /api/v1/reactions/{mediaType}/{mediaId} # Установить реакцию DELETE /api/v1/reactions/{mediaType}/{mediaId} # Удалить реакцию 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** - данные о фильмах (международный контент) - **Kinopoisk API Unofficial** - данные о русском контенте - **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 ``` ## 🚀 Производительность По сравнению с 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