YouTube auto-opens window.open on accounts.google.com/...?passive=true&... at page load to silently pick up an existing Google session via postMessage. Our setWindowOpenHandler was routing these to the OAuth popup, where Google detects no parent context and shows "JavaScript отключен". Tighten isGoogleLoginUrl to exclude passive=true URLs — let them get denied without a popup. Active "Войти" clicks have no passive flag and continue to open the popup as before. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ESH-Media
Десктопное приложение на Electron + React. Запускает веб-сервисы в отдельных WebContentsView, поиск и обзор фильмов через TMDB, встроенная блокировка рекламы.
Стек
- Electron 32
- React 18 + TypeScript
- Vite
- @cliqz/adblocker-electron
Запуск
npm install
npm run dev
Сборка
# 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. Поддерживаются как обычные API-ключи, так и Bearer-токены.
- Сайты — список фильмовых сайтов, на которых будет производиться поиск после выбора фильма из TMDB. Поддерживаются движки DLE (kinogo, lordfilm и зеркала), HDRezka, Filmix. Тип определяется автоматически по домену.
Если раздел "Сайты" пустой, приложение попробует использовать подходящие сайты из раздела "Приложения".
Конфиг
Хранится в домашней директории пользователя: ~/.ESH-Media.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/ — стили