Skip to content

Repository files navigation

🎬 Cinema

Мобильно-адаптивный веб-клиент и прокси-сервер для просмотра контента с неофициальных зеркал (rezka.fi, rezka.si). Бэкенд написан на Go, фронтенд — чистый HTML/CSS/JS (без сборщиков, работает очень быстро).

✨ Главные фичи

  • Умное переключение зеркал: Если rezka.fi заблокирован или не отвечает, сервер автоматически переключается на rezka.si и повторяет запрос.
  • Встроенный Видео-Прокси (/api/p): Весь видео-трафик может проксироваться через ваш сервер. Это обходит проблему "IP-lock" (когда видео отдается только тому IP-адресу, который запрашивал ссылку).
  • Плеер на hls.js: Полная кроссбраузерная совместимость (Chrome, Safari, Android, iOS, Smart TV).
  • Удобный UI: Специально подогнан под мобильные экраны (Bottom Navigation) и пульты телевизоров (поддержка скролла).
  • Graceful Shutdown: Сервер корректно завершает работу, обрывая соединения без ошибок.
  • Минимум сторонних зависимостей: Парсинг HTML написан с нуля на базе goquery без устаревших оберток.

🚀 Как запустить (Docker)

Рекомендуемый способ установки на любой сервер (Ubuntu/Debian) — через Docker.

1. Клонируйте репозиторий:

git clone https://github.com/ASM717/cinema.git
cd cinema

2. Запустите через Makefile:

# Если ваш пользователь состоит в группе docker:
make docker-up

# Если нужны root-права:
make sudo-up

Проект запустится в фоне и будет доступен на порту 8080 (по умолчанию проброс в docker-compose.yml настроен как 8080:8080).

Открыть приложение: http://IP_ВАШЕГО_СЕРВЕРА:8080/

Другие команды Makefile:

  • make docker-down / make sudo-down — остановить контейнеры.
  • make docker-rebuild — полная пересборка Docker-образа при обновлении кода.
  • make run — для локальной разработки (запускает напрямую через go run).

🛠 Запуск без Docker (Локальная разработка)

Убедитесь, что у вас установлен Go 1.24+.

git clone https://github.com/ASM717/cinema.git
cd cinema
go mod tidy
make run

Локальная версия запустится по адресу: http://localhost:8080.


⚙️ Структура API

Можете использовать бэкенд для написания собственных клиентов (например, нативного iOS/Android приложения). Все ответы приходят в формате JSON.

Метод Путь Описание
GET /api/status Проверка авторизованной сессии и версии сервера
POST /api/login Вход в аккаунт ({"login":"...","password":"..."})
POST /api/logout Выход из аккаунта
GET /api/newest?genre=... Получение новинок (films, series, cartoons, animation)
GET /api/popular?genre=... Получение популярных тайтлов
GET /api/search?q=текст Поиск по сайту
GET /api/video?url=... Инициализация плеера (возвращает список переводов/озвучек)
GET /api/episodes?url=...&tr=ID Получение списка сезонов и серий для сериалов
GET /api/stream?url=...&tr=ID&season=1&episode=1 Получение прямых ссылок на MP4 и M3U8 (HLS) потоки
GET /api/p?url=... Проксирование видео (поддерживает Range-запросы)

📱 Скриншоты и советы

  • Добавление на экран (PWA): На iPhone откройте Safari, нажмите кнопку ПоделитьсяНа экран Домой. Проект будет работать как полноценное приложение без рамок браузера.
  • Фазировка кеша: Если после обновления кода у вас старая версия UI, используйте функцию «Жесткая перезагрузка» или очистите кеш браузера (Cmd+Shift+R / Ctrl+F5).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages