Files
ESH-Media/search-scripts/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

136 lines
4.9 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
Эта папка содержит кастомные JavaScript скрипты для поиска фильмов и сериалов на различных сайтах.
## Как работают скрипты
Каждый скрипт выполняется в защищенном контексте Electron и получает доступ к следующим инструментам:
- **axios** - для HTTP запросов
- **cheerio** - для парсинга HTML (jQuery-подобный синтаксис)
- **proxyConfig** - настройки прокси (если включен для сайта)
## Структура скрипта
Каждый скрипт должен экспортировать функцию `search` со следующей сигнатурой:
```javascript
async function search(query, siteUrl, useProxy, axios, cheerio, proxyConfig) {
// Ваш код поиска
return [{name: "Название фильма", url: "https://..."}];
}
```
### Параметры:
- `query` (string) - поисковый запрос пользователя
- `siteUrl` (string) - базовый URL сайта (например, "https://kinogo.biz")
- `useProxy` (boolean) - нужно ли использовать прокси
- `axios` (object) - экземпляр axios для HTTP запросов
- `cheerio` (object) - библиотека для парсинга HTML
- `proxyConfig` (object) - настройки прокси `{host: string, port: number}`
### Возвращаемое значение:
Массив объектов с результатами поиска. Каждый объект должен содержать:
**Обязательные поля:**
- `name` (string) - название фильма/сериала
- `url` (string) - ссылка на страницу фильма
**Опциональные поля:**
- `image` (string) - URL постера
- `year` (string) - год выпуска
- `description` (string) - описание
- `rating` (string) - рейтинг
## Примеры
### Пример 1: JSON API
```javascript
async function search(query, siteUrl, useProxy, axios, cheerio, proxyConfig) {
const config = {
params: { q: query },
timeout: 15000
};
if (useProxy && proxyConfig) {
config.proxy = { host: proxyConfig.host, port: proxyConfig.port };
}
const response = await axios.get(`${siteUrl}/api/search`, config);
return response.data.results.map(item => ({
name: item.title,
url: item.link,
image: item.poster
}));
}
```
### Пример 2: HTML парсинг
```javascript
async function search(query, siteUrl, useProxy, axios, cheerio, proxyConfig) {
const config = {
params: { q: query },
timeout: 15000
};
if (useProxy && proxyConfig) {
config.proxy = { host: proxyConfig.host, port: proxyConfig.port };
}
const response = await axios.get(`${siteUrl}/search`, config);
const $ = cheerio.load(response.data);
const results = [];
$('.movie-card').each((i, el) => {
const $el = $(el);
results.push({
name: $el.find('.title').text().trim(),
url: siteUrl + $el.find('a').attr('href'),
image: $el.find('img').attr('src')
});
});
return results;
}
```
## Добавление нового скрипта
1. Создайте файл `sitename.js` в этой папке
2. Используйте `SCRIPT_TEMPLATE.js` как основу
3. Реализуйте функцию `search()`
4. Обновите конфигурацию сайта в настройках приложения
## Обновление скриптов
Скрипты можно обновлять с сервера через настройки приложения. При обновлении конфигурации новые скрипты автоматически загружаются.
## Расположение скриптов
Скрипты хранятся в двух местах:
1. **Встроенные скрипты**: `<app>/search-scripts/` (только для чтения)
2. **Пользовательские скрипты**: `<userData>/search-scripts/` (можно обновлять)
Пользовательские скрипты имеют приоритет над встроенными.
## Безопасность
- Скрипты выполняются в изолированном контексте
- Таймаут выполнения: 30 секунд
- Доступ только к axios и cheerio
- Нет доступа к файловой системе или другим модулям Node.js
## Отладка
Ошибки скриптов логируются в консоль Electron DevTools. Для отладки:
1. Откройте DevTools (F12)
2. Выполните поиск
3. Проверьте консоль на наличие ошибок