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>
This commit is contained in:
2026-05-11 23:49:43 +03:00
commit ecb5e7e49f
52 changed files with 11718 additions and 0 deletions

235
QUICKSTART.md Normal file
View File

@@ -0,0 +1,235 @@
# Quick Start Guide
Быстрый старт для Media Center v2
## 1. Установка
```bash
# Клонировать или перейти в директорию проекта
cd media_center_v2
# Установить зависимости
npm install
```
## 2. Запуск в режиме разработки
```bash
npm run dev
```
Это запустит приложение в режиме разработки с hot reload.
## 3. Первый запуск
После запуска приложения:
1. **Главная страница** откроется автоматически с карточками сайтов
2. **Прокси** запустится автоматически (если настроен)
3. **Попробуйте поиск**: введите название фильма в поисковую строку
## 4. Тестирование поиска
1. В верхней части окна введите "Стражи галактики"
2. Нажмите "Найти"
3. Дождитесь результатов со всех сайтов
4. Кликните на понравившийся результат
## 5. Сборка установщика
```bash
# Для Windows
npm run package:win
# Для macOS
npm run package:mac
# Для Linux
npm run package:linux
```
Установщик будет в папке `release/`.
## Структура файлов
### Важные файлы для начала:
- `config/sites.json` - настройки сайтов
- `search-scripts/` - скрипты поиска для каждого сайта
- `src/shared/types.ts` - TypeScript типы
- `src/shared/constants.ts` - константы (URL сервера, порты и т.д.)
### Изменение настроек:
**Сервер конфигураций:**
```typescript
// src/shared/constants.ts
export const DEFAULT_CONFIG_SERVER_URL = 'https://your-server.com/api';
```
**Порт прокси:**
```typescript
// src/shared/constants.ts
export const DEFAULT_PROXY_PORT = 10808;
```
**Путь к InvisibleManXRay:**
```typescript
// src/shared/constants.ts
export const INVISIBLE_MAN_CLI_PATH = 'invisibleManXRay';
```
## Добавление нового сайта
### Шаг 1: Создать скрипт поиска
Скопируйте `search-scripts/SCRIPT_TEMPLATE.js``search-scripts/mysite.js`
```javascript
async function search(query, siteUrl, useProxy, axios, cheerio, proxyConfig) {
const response = await axios.get(`${siteUrl}/search?q=${query}`);
const $ = cheerio.load(response.data);
const results = [];
$('.movie').each((i, el) => {
results.push({
name: $(el).find('.title').text(),
url: siteUrl + $(el).find('a').attr('href'),
image: $(el).find('img').attr('src')
});
});
return results;
}
```
### Шаг 2: Добавить в конфигурацию
Отредактируйте `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"
}
```
### Шаг 3: Перезапустить приложение
```bash
npm run dev
```
## Отладка
### Открыть DevTools
Нажмите `F12` в приложении
### Проверить логи
**Main process (терминал):**
```
[Proxy STDOUT]: ...
Found 5 results from Kinogo
```
**Renderer process (DevTools Console):**
```javascript
console.log('Search results:', results);
```
### Проверить ошибки скриптов
После выполнения поиска проверьте консоль на наличие сообщений вида:
```
Error searching Kinogo: timeout
```
## Частые проблемы
### 1. Прокси не запускается
**Проблема:** `Proxy failed to start`
**Решение:**
- Убедитесь, что InvisibleManXRay установлен
- Проверьте путь в `src/shared/constants.ts`
- Запустите вручную в терминале: `invisibleManXRay run`
### 2. Поиск не возвращает результаты
**Проблема:** `No results found`
**Решение:**
- Проверьте доступность сайта в браузере
- Откройте DevTools и проверьте ошибки в консоли
- Убедитесь, что скрипт поиска корректен
### 3. Ошибка компиляции TypeScript
**Проблема:** `TS2345: Argument of type...`
**Решение:**
```bash
# Очистить и переустановить зависимости
rm -rf node_modules
npm install
```
### 4. Vite не запускается
**Проблема:** `Port 3000 is already in use`
**Решение:**
- Остановите другие процессы на порту 3000
- Или измените порт в `vite.config.ts`:
```typescript
server: {
port: 3001,
},
```
## Полезные команды
```bash
# Установка зависимостей
npm install
# Разработка
npm run dev
# Сборка
npm run build
# Создание установщика (Windows)
npm run package:win
# Очистка
rm -rf dist/ release/ node_modules/
npm install
```
## Следующие шаги
1. Прочитайте [README.md](./README.md) для полной документации
2. Изучите [REQUIREMENTS.md](./REQUIREMENTS.md) для детальных требований
3. Прочитайте [SEARCH_SCRIPTS.md](./SEARCH_SCRIPTS.md) для создания своих скриптов
4. Проверьте примеры скриптов в `search-scripts/`
## Поддержка
Если возникли проблемы:
1. Проверьте логи в терминале и DevTools
2. Прочитайте документацию
3. Создайте Issue на GitHub с описанием проблемы
---
**Готово!** Теперь вы можете начать работу с Media Center 🎬