Files
ESH-Media/README.md
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

328 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Media Center v2
Electron-приложение для просмотра фильмов и сериалов с глобальным поиском по множеству сайтов.
## Возможности
- **Глобальный поиск** - поиск фильмов на всех подключенных сайтах одновременно
- **Кастомные поисковые скрипты** - для каждого сайта свой скрипт поиска
- **Закладки** - сохранение избранных фильмов и сериалов
- **Управление вкладками** - просмотр и переключение между открытыми страницами
- **Прокси поддержка** - автоматическое использование прокси для заблокированных сайтов
- **Автообновления** - проверка и установка новых версий
- **Расширения браузера** - AdBlock и FoxyProxy
## Технологический стек
- **Electron 28** - кроссплатформенный фреймворк
- **React 18** - UI библиотека
- **TypeScript** - язык разработки
- **Vite** - сборщик для frontend
- **Axios** - HTTP клиент
- **Cheerio** - HTML парсинг
- **NeDB** - встроенная база данных
## Установка и запуск
### Требования
- Node.js 18+ (для разработки)
- npm или yarn
### Установка зависимостей
```bash
npm install
```
### Разработка
Запуск в режиме разработки:
```bash
npm run dev
```
Это запустит:
- Vite dev server для React (порт 3000)
- TypeScript компиляцию main process
- Electron приложение с hot reload
### Сборка
Сборка всего проекта:
```bash
npm run build
```
Создание установщика для Windows:
```bash
npm run package:win
```
Создание установщика для macOS:
```bash
npm run package:mac
```
Создание установщика для Linux:
```bash
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()`:
```javascript
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: "Описание" // опционально
}
];
}
```
4. Добавьте сайт в `config/sites.json`:
```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](./SEARCH_SCRIPTS.md)
## Прокси (InvisibleManXRay)
Для доступа к заблокированным сайтам используется InvisibleManXRay прокси.
### Установка
1. Скачайте [InvisibleManXRay CLI](https://github.com/...)
2. Установите в системный PATH или укажите путь в `src/shared/constants.ts`
3. Приложение запустит прокси автоматически (если включен автозапуск)
### Настройка
В `src/shared/constants.ts`:
```typescript
export const INVISIBLE_MAN_CLI_PATH = 'invisibleManXRay'; // или полный путь
export const DEFAULT_PROXY_PORT = 10808;
```
## Серверная часть (Backend API)
Для полной функциональности нужен сервер с API:
### GET /api/config/sites
Возвращает конфигурацию сайтов:
```json
{
"version": "1.0.0",
"lastUpdated": "2025-10-14T12:00:00Z",
"sites": [...]
}
```
### GET /api/version/check
Проверка обновлений:
```json
{
"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](./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`. Для добавления новых типов:
```typescript
export interface MyType {
field: string;
}
```
## Безопасность
- Скрипты выполняются в изолированном контексте
- Context Isolation включена
- Node Integration отключена в BrowserView
- Строгая Content Security Policy
- Таймауты для всех операций
## Производительность
- Ленивая загрузка вкладок
- Кэширование результатов поиска
- Параллельные запросы при поиске
- Оптимизация памяти
## Известные проблемы
1. **Прокси не запускается**: Убедитесь, что InvisibleManXRay установлен
2. **Поиск не работает**: Проверьте доступность сайтов
3. **Обновления не скачиваются**: Проверьте URL сервера в настройках
## Лицензия
MIT
## Автор
George
## Поддержка
Для вопросов и предложений создайте Issue в GitHub.
## Roadmap
- [ ] История просмотров
- [ ] Рекомендации на основе закладок
- [ ] Синхронизация между устройствами
- [ ] Встроенный видеоплеер
- [ ] Автоматическая загрузка субтитров
- [ ] Торрент интеграция
- [ ] Уведомления о новых сериях