Rewrite of ESH-Media v1 with separated main/renderer/shared architecture (vite-plugin-electron, React 18, react-router-dom). Includes NeDB storage, electron-store config, proxy manager with FoxyProxy/uBlock extensions, custom server-checked updater, NSIS installer. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
16 KiB
16 KiB
Media Center v2 - Детальное Описание и Требования
Общее Описание
Electron-приложение представляет собой специализированный медиацентр для просмотра фильмов и сериалов. Это кастомный браузер, оптимизированный для работы с различными онлайн-кинотеатрами и видеохостингами.
Основные Функции
1. Главная Страница (Home)
- Назначение: Отображение карточек с предзаготовленными сайтами для просмотра фильмов
- Функционал:
- Отображение карточек сайтов (название, логотип, краткое описание)
- Клик по карточке открывает сайт в новой вкладке
- Возможность добавления новых сайтов через конфигурацию
- Индикация доступности сайта (онлайн/офлайн)
2. Закладки (Bookmarks)
- Назначение: Сохранение избранных фильмов и сериалов
- Функционал:
- Карточки с сохраненными фильмами/сериалами
- Информация: название, постер, сайт-источник, прямая ссылка
- Возможность удаления закладок
- Клик открывает сохраненную страницу
- Группировка по сайтам (опционально)
3. Активные Вкладки (Active Tabs)
- Назначение: Управление открытыми вкладками
- Функционал:
- Список всех открытых вкладок
- Превью страницы (скриншот или favicon + title)
- Переключение между вкладками
- Закрытие вкладок
- Возможность добавить текущую страницу в закладки
4. Глобальный Поиск
- Назначение: Поиск фильмов на всех доступных сайтах одновременно
- Расположение: Верхняя часть интерфейса (всегда доступен)
- Функционал:
- Поисковая строка с автодополнением
- Параллельный поиск на всех сайтах из конфигурации
- Агрегация результатов с разных сайтов
- Отображение результатов с указанием источника
- Фильтрация результатов по сайтам
- Индикация прогресса поиска
5. Система Конфигураций Сайтов
-
Назначение: Управление настройками парсинга для каждого сайта
-
Структура конфигурации:
{ "version": "1.0.0", "sites": [ { "id": "site_unique_id", "name": "Название сайта", "url": "https://example.com", "logo": "url_или_base64", "enabled": true, "useProxy": true, "search": { "endpoint": "/search", "method": "GET", "params": { "query": "{searchQuery}" }, "headers": {}, "responseType": "json", "parsing": { "type": "json", "resultsPath": "data.results", "mapping": { "title": "title", "url": "link", "image": "poster", "year": "year" } } } } ] } -
Поддерживаемые типы парсинга:
- JSON (стандартный API ответ)
- HTML (парсинг DOM через селекторы)
- XML (парсинг XML структуры)
6. Настройки (Settings)
-
Конфигурация сайтов:
- Просмотр текущей конфигурации
- URL сервера конфигураций (редактируемый)
- Кнопка "Обновить конфигурацию" - загрузка с сервера
- Последняя дата обновления
-
Прокси настройки:
- Статус прокси (запущен/остановлен)
- Включение/отключение автозапуска прокси
- Настройки InvisibleManXRay CLI
-
Общие настройки:
- Тема оформления (светлая/темная)
- Язык интерфейса
- Папка для загрузок
- Очистка кэша
7. Система Версионирования и Обновлений
-
Проверка версий:
- Автоматическая проверка при запуске
- Ручная проверка через меню
- Сравнение текущей версии с серверной
-
Процесс обновления:
- Уведомление о доступности новой версии
- Отображение changelog (что нового)
- Кнопка "Обновить сейчас" / "Напомнить позже"
- Скачивание нового установщика
- Запуск установки с закрытием текущего приложения
8. Прокси Интеграция
-
InvisibleManXRay CLI:
- Автозапуск при старте приложения
- Проверка статуса прокси
- Логирование работы прокси
- Возможность перезапуска
-
FoxyProxy Integration:
- Автоматическое переключение прокси для сайтов
- Правила на основе конфигурации (useProxy: true/false)
- Прямое подключение для сайтов без прокси
9. Расширения Браузера
-
AdBlock:
- Блокировка рекламы на всех сайтах
- Настройка белого списка (если нужно)
-
FoxyProxy:
- Управление прокси правилами
- Автоматическое переключение на основе URL
Технический Стек
Frontend
- Electron: Основной фреймворк
- React: UI библиотека
- TypeScript: Язык разработки
- Electron BrowserView/WebView: Для встраивания веб-страниц
- CSS/SCSS: Стилизация
- Axios: HTTP запросы
- Cheerio: HTML парсинг (для поиска)
Backend (Main Process)
- Node.js: Серверная логика
- SQLite/NeDB: Локальная БД для закладок и настроек
- Child Process: Управление InvisibleManXRay CLI
- Electron Store: Хранение настроек
Расширения
- uBlock Origin / AdBlock Plus: Блокировка рекламы
- FoxyProxy: Управление прокси
Архитектура Приложения
media-center/
├── src/
│ ├── main/ # Main process
│ │ ├── index.ts # Точка входа
│ │ ├── proxy.ts # Управление прокси
│ │ ├── config.ts # Управление конфигурацией
│ │ ├── updater.ts # Система обновлений
│ │ └── database.ts # Работа с БД
│ │
│ ├── renderer/ # Renderer process
│ │ ├── App.tsx # Главный компонент
│ │ ├── pages/
│ │ │ ├── Home.tsx
│ │ │ ├── Bookmarks.tsx
│ │ │ ├── ActiveTabs.tsx
│ │ │ └── Settings.tsx
│ │ ├── components/
│ │ │ ├── SearchBar.tsx
│ │ │ ├── SiteCard.tsx
│ │ │ ├── BookmarkCard.tsx
│ │ │ ├── TabCard.tsx
│ │ │ └── BrowserView.tsx
│ │ └── services/
│ │ ├── search.ts # Сервис поиска
│ │ ├── config.ts # Работа с конфигурацией
│ │ └── api.ts # API клиент
│ │
│ ├── shared/ # Общий код
│ │ ├── types.ts # TypeScript типы
│ │ └── constants.ts # Константы
│ │
│ └── extensions/ # Браузерные расширения
│ ├── adblock/
│ └── foxyproxy/
│
├── config/ # Конфигурационные файлы
│ └── sites.json # Дефолтная конфигурация сайтов
│
├── package.json
├── electron-builder.json # Настройки сборки
└── tsconfig.json
Требования к Серверной Части (Backend API)
1. Конфигурация Сайтов
Endpoint: GET /api/config/sites
Ответ:
{
"version": "1.2.0",
"lastUpdated": "2025-10-14T12:00:00Z",
"sites": [...]
}
2. Проверка Версии
Endpoint: GET /api/version/check
Параметры: ?currentVersion=1.0.0
Ответ:
{
"latestVersion": "1.1.0",
"updateAvailable": true,
"downloadUrl": "https://server.com/downloads/media-center-1.1.0.exe",
"changelog": "- Добавлен новый сайт\n- Исправлены ошибки поиска",
"releaseDate": "2025-10-14",
"mandatory": false
}
3. Скачивание Обновления
Endpoint: GET /api/downloads/{version}/{platform}
Ответ: Бинарный файл установщика
4. Статистика (опционально)
Endpoint: POST /api/stats/usage
Тело:
{
"appVersion": "1.0.0",
"event": "search",
"site": "kinogo",
"timestamp": "2025-10-14T12:00:00Z"
}
Основные Сценарии Использования
Сценарий 1: Поиск фильма
- Пользователь вводит название в глобальный поиск
- Приложение отправляет запросы на все сайты параллельно
- Результаты агрегируются и отображаются
- Пользователь выбирает результат и открывается страница фильма
- Возможность добавить в закладки
Сценарий 2: Работа с закладками
- Пользователь открывает страницу фильма
- Нажимает "Добавить в закладки"
- Закладка сохраняется с метаданными
- Закладка отображается на странице "Закладки"
- Быстрый доступ к сохраненному фильму
Сценарий 3: Обновление конфигурации
- Пользователь открывает "Настройки"
- Нажимает "Обновить конфигурацию"
- Приложение загружает новую конфигурацию с сервера
- Применяет изменения (новые сайты, обновленные правила парсинга)
- Уведомляет пользователя об успехе
Сценарий 4: Обновление приложения
- При запуске приложение проверяет версию
- Если доступно обновление - показывает уведомление
- Пользователь может обновить сейчас или позже
- При согласии скачивается новый установщик
- Приложение закрывается и запускается установка
UI/UX Требования
Дизайн
- Стиль: Современный, минималистичный
- Цветовая схема: Темная тема по умолчанию (с возможностью переключения)
- Шрифты: Читабельные, sans-serif (например, Inter, Roboto)
- Иконки: Использовать библиотеку (например, Lucide, Heroicons)
Навигация
- Главное меню: Боковая панель или верхнее меню с вкладками
- Поиск: Всегда доступен в верхней части
- Быстрые действия: Контекстное меню на карточках
Адаптивность
- Поддержка разных разрешений экрана
- Минимальное разрешение: 1280x720
- Оптимально: 1920x1080
Безопасность
- Санитизация URL: Проверка и очистка всех внешних URL
- Content Security Policy: Строгая CSP для renderer process
- Node Integration: Отключена в BrowserView
- Context Isolation: Включена
- Безопасное хранение: Конфиденциальные данные в зашифрованном виде
Производительность
- Ленивая загрузка: Вкладки загружаются только при активации
- Кэширование: Результаты поиска и конфигурации кэшируются
- Оптимизация памяти: Автоматическое закрытие неиспользуемых вкладок
- Параллельные запросы: Поиск выполняется параллельно
Этапы Разработки
Фаза 1: Базовая структура
- Настройка Electron проекта
- Основная архитектура (main + renderer)
- Базовый UI с навигацией
Фаза 2: Основной функционал
- Система конфигураций
- Страница Home с карточками сайтов
- BrowserView интеграция
- Система закладок
Фаза 3: Продвинутый функционал
- Глобальный поиск
- Парсинг для разных типов ответов
- Управление активными вкладками
Фаза 4: Прокси и расширения
- Интеграция InvisibleManXRay
- Установка AdBlock
- Настройка FoxyProxy
Фаза 5: Обновления и полировка
- Система версионирования
- Автообновление
- Финальная оптимизация
- Тестирование
Дополнительные Возможности (Future Features)
- История просмотров: Отслеживание просмотренного контента
- Рекомендации: На основе истории и закладок
- Синхронизация: Между устройствами (через облако)
- Плеер интеграция: Встроенный видеоплеер
- Субтитры: Автоматическая загрузка субтитров
- Торрент интеграция: Загрузка через торренты
- Уведомления: О новых сериях любимых сериалов