eshmeshek ecb5e7e49f init: media-center v2
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>
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00
2026-05-11 23:49:43 +03:00

Media Center v2

Electron-приложение для просмотра фильмов и сериалов с глобальным поиском по множеству сайтов.

Возможности

  • Глобальный поиск - поиск фильмов на всех подключенных сайтах одновременно
  • Кастомные поисковые скрипты - для каждого сайта свой скрипт поиска
  • Закладки - сохранение избранных фильмов и сериалов
  • Управление вкладками - просмотр и переключение между открытыми страницами
  • Прокси поддержка - автоматическое использование прокси для заблокированных сайтов
  • Автообновления - проверка и установка новых версий
  • Расширения браузера - AdBlock и FoxyProxy

Технологический стек

  • Electron 28 - кроссплатформенный фреймворк
  • React 18 - UI библиотека
  • TypeScript - язык разработки
  • Vite - сборщик для frontend
  • Axios - HTTP клиент
  • Cheerio - HTML парсинг
  • NeDB - встроенная база данных

Установка и запуск

Требования

  • Node.js 18+ (для разработки)
  • npm или yarn

Установка зависимостей

npm install

Разработка

Запуск в режиме разработки:

npm run dev

Это запустит:

  • Vite dev server для React (порт 3000)
  • TypeScript компиляцию main process
  • Electron приложение с hot reload

Сборка

Сборка всего проекта:

npm run build

Создание установщика для Windows:

npm run package:win

Создание установщика для macOS:

npm run package:mac

Создание установщика для Linux:

npm run package:linux

Готовый установщик будет в папке release/.

Структура проекта

media-center/
├── src/
│   ├── main/                  # Главный процесс Electron
│   │   ├── index.ts          # Точка входа
│   │   ├── proxy.ts          # Управление прокси
│   │   ├── config.ts         # Управление конфигурацией
│   │   ├── database.ts       # База данных
│   │   ├── tabs.ts           # Управление вкладками
│   │   ├── search.ts         # Система поиска
│   │   ├── updater.ts        # Обновления
│   │   └── preload.ts        # Preload скрипт
│   │
│   ├── renderer/             # Renderer процесс (React)
│   │   ├── App.tsx           # Главный компонент
│   │   ├── pages/            # Страницы
│   │   ├── components/       # Компоненты
│   │   └── styles/           # CSS стили
│   │
│   └── shared/               # Общий код
│       ├── types.ts          # TypeScript типы
│       └── constants.ts      # Константы
│
├── config/                   # Конфигурации
│   └── sites.json           # Настройки сайтов
│
├── search-scripts/           # Поисковые скрипты
│   ├── kinogo.js
│   ├── rutube.js
│   ├── hdrezka.js
│   ├── SCRIPT_TEMPLATE.js
│   └── README.md
│
├── REQUIREMENTS.md           # Детальные требования
├── SEARCH_SCRIPTS.md         # Документация по скриптам
└── README.md                 # Этот файл

Использование

Главная страница

Отображает карточки с доступными сайтами. Клик по карточке открывает сайт в новой вкладке.

Глобальный поиск

  1. Введите название фильма в поисковую строку
  2. Нажмите "Найти"
  3. Просмотрите результаты со всех сайтов
  4. Кликните на результат для открытия страницы фильма

Закладки

  1. При просмотре фильма добавьте его в закладки
  2. Все закладки доступны на странице "Закладки"
  3. Фильтруйте закладки по сайтам
  4. Удаляйте ненужные закладки

Активные вкладки

  • Просмотр всех открытых вкладок
  • Переключение между вкладками
  • Закрытие вкладок

Настройки

Конфигурация:

  • URL сервера для обновления конфигураций
  • Обновление списка сайтов и скриптов

Прокси:

  • Статус прокси (запущен/остановлен)
  • Автозапуск при старте приложения
  • Ручное управление прокси

Интерфейс:

  • Выбор темы (светлая/темная)
  • Выбор языка (русский/английский)

Обновления:

  • Проверка доступных обновлений
  • Автоматическая загрузка и установка

Поисковые скрипты

Каждый сайт имеет свой JavaScript скрипт для поиска. Скрипты выполняются в контексте Electron без необходимости внешнего Node.js.

Создание нового скрипта

  1. Скопируйте search-scripts/SCRIPT_TEMPLATE.js
  2. Назовите файл по имени сайта (например, mysite.js)
  3. Реализуйте функцию search():
async function search(query, siteUrl, useProxy, axios, cheerio, proxyConfig) {
  // Ваш код поиска
  return [
    {
      name: "Название фильма",
      url: "https://site.com/movie/123",
      image: "https://site.com/poster.jpg", // опционально
      year: "2023", // опционально
      description: "Описание" // опционально
    }
  ];
}
  1. Добавьте сайт в config/sites.json:
{
  "id": "mysite",
  "name": "My Site",
  "url": "https://mysite.com",
  "logo": "https://mysite.com/favicon.ico",
  "enabled": true,
  "useProxy": false,
  "searchScript": "mysite.js"
}

Подробнее см. SEARCH_SCRIPTS.md

Прокси (InvisibleManXRay)

Для доступа к заблокированным сайтам используется InvisibleManXRay прокси.

Установка

  1. Скачайте InvisibleManXRay CLI
  2. Установите в системный PATH или укажите путь в src/shared/constants.ts
  3. Приложение запустит прокси автоматически (если включен автозапуск)

Настройка

В src/shared/constants.ts:

export const INVISIBLE_MAN_CLI_PATH = 'invisibleManXRay'; // или полный путь
export const DEFAULT_PROXY_PORT = 10808;

Серверная часть (Backend API)

Для полной функциональности нужен сервер с API:

GET /api/config/sites

Возвращает конфигурацию сайтов:

{
  "version": "1.0.0",
  "lastUpdated": "2025-10-14T12:00:00Z",
  "sites": [...]
}

GET /api/version/check

Проверка обновлений:

{
  "latestVersion": "1.1.0",
  "updateAvailable": true,
  "downloadUrl": "https://server.com/downloads/media-center-1.1.0.exe",
  "changelog": "- Новые функции...",
  "releaseDate": "2025-10-14",
  "mandatory": false
}

GET /api/downloads/{version}/{platform}

Скачивание установщика.

Подробнее см. REQUIREMENTS.md

Разработка

Добавление нового сайта

  1. Создайте поисковый скрипт в search-scripts/
  2. Добавьте сайт в config/sites.json
  3. Протестируйте поиск

Отладка

  • Откройте DevTools: F12
  • Логи main process: console.log видны в терминале
  • Логи renderer process: видны в DevTools Console
  • Ошибки скриптов: проверьте консоль при выполнении поиска

TypeScript

Все типы находятся в src/shared/types.ts. Для добавления новых типов:

export interface MyType {
  field: string;
}

Безопасность

  • Скрипты выполняются в изолированном контексте
  • Context Isolation включена
  • Node Integration отключена в BrowserView
  • Строгая Content Security Policy
  • Таймауты для всех операций

Производительность

  • Ленивая загрузка вкладок
  • Кэширование результатов поиска
  • Параллельные запросы при поиске
  • Оптимизация памяти

Известные проблемы

  1. Прокси не запускается: Убедитесь, что InvisibleManXRay установлен
  2. Поиск не работает: Проверьте доступность сайтов
  3. Обновления не скачиваются: Проверьте URL сервера в настройках

Лицензия

MIT

Автор

George

Поддержка

Для вопросов и предложений создайте Issue в GitHub.

Roadmap

  • История просмотров
  • Рекомендации на основе закладок
  • Синхронизация между устройствами
  • Встроенный видеоплеер
  • Автоматическая загрузка субтитров
  • Торрент интеграция
  • Уведомления о новых сериях
Description
No description provided
Readme 1.8 MiB
v1.0.14 Latest
2026-05-17 12:13:14 +03:00
Languages
TypeScript 45.6%
JavaScript 36.1%
CSS 16.7%
HTML 1.6%