# ESH-Media Десктопное приложение на Electron + React. Запускает веб-сервисы в отдельных WebContentsView, поиск и обзор фильмов через TMDB, встроенная блокировка рекламы. ## Стек - Electron 32 - React 18 + TypeScript - Vite - @cliqz/adblocker-electron ## Запуск ```bash npm install npm run dev ``` ## Сборка ```bash # Windows (installer + zip) npm run build:win # Linux (AppImage + deb) npm run build:linux ``` Артефакты в папке `release/`. > Linux-сборку нужно запускать на Linux-машине. ## Настройка Настройки открываются кнопкой в левом верхнем углу приложения. ### Приложения Список сайтов, которые отображаются на главном экране в виде карточек. Для каждого можно указать: - **Название** — отображается под иконкой - **URL** — адрес сайта, открывается в отдельном WebContentsView - **URL иконки** — картинка для карточки (необязательно) - **Прокси** — использовать ли прокси для этого сайта (переключатель включается отдельно для каждого) ### Прокси Приложение поддерживает HTTP/HTTPS/SOCKS5 прокси. Настраивается в разделе "Прокси" — указываешь хост и порт. Прокси применяется не глобально, а поприложенно: для каждого сайта в списке есть отдельный переключатель. Это позволяет, например, открывать заблокированные сайты через прокси, а остальные — напрямую. Конфигурация прокси сохраняется в файл `~/.ESH-Media.json` и применяется при следующем запуске автоматически. ### Поиск фильмов - **TMDB API Key** — ключ для поиска метаданных, постеров и обзора по фильтрам. Получить бесплатно на [themoviedb.org](https://www.themoviedb.org/settings/api). Поддерживаются как обычные API-ключи, так и Bearer-токены. - **Сайты** — список фильмовых сайтов, на которых будет производиться поиск после выбора фильма из TMDB. Поддерживаются движки DLE (kinogo, lordfilm и зеркала), HDRezka, Filmix. Тип определяется автоматически по домену. Если раздел "Сайты" пустой, приложение попробует использовать подходящие сайты из раздела "Приложения". ## Конфиг Хранится в домашней директории пользователя: `~/.ESH-Media.json`. ```json { "apps": [...], "proxy": { "host": "127.0.0.1", "port": "7890" }, "movieSites": [...], "tmdbApiKey": "...", "bookmarks": [...] } ``` ## Структура ``` main.js — main process preload.js — preload / IPC bridge index.html — точка входа основного UI loader.html — экран загрузки dialog-error.html — диалог ошибки dialog-confirm.html — диалог подтверждения src/ entries/ — entry points для Vite (loader, dialogs) components/ — React компоненты pages/ — страницы styles/ — стили ```