[2026-09-22] eagle: family/how-to/tv-lampac-plugin.md personal/plans/lampac-watchlist-plugin.md personal/tech/lampac-deployment.md
This commit is contained in:
1 parent
e1256f18b9
commit
e783957622
3 files changed
+298
-40
No files matched your search
@@ -198,6 +198,93 @@ Configure complete ← HTTP начинает отвечать
|
||||
|
||||
Плагин на ТВ: `http://192.168.1.14:9118/catalog.js` → источник «Мой список».
|
||||
|
||||
⏳ **Переделывается (2026-09-22).** Текущая реализация признана неверной: заполнен
|
||||
блок `menu` (подменяет родной каталог CUB вместо добавления секций сверху), а данные
|
||||
берутся парсингом `.md` вместо **Radarr API** (в `.md` нет TMDB ID и постеров).
|
||||
Разбор ошибки — [[personal/plans/lampac-watchlist-plugin]], секция «🔴 АРХИТЕКТУРНАЯ ОШИБКА».
|
||||
|
||||
### 🔴 `menu` vs `main` — принципиальная разница
|
||||
|
||||
| Блок YAML | Что делает |
|
||||
|---|---|
|
||||
| `menu` | **подменяет** родные разделы Lampa (Фильмы/Сериалы/Аниме) → родной каталог исчезает |
|
||||
| `main` | **добавляет секции на главную СВЕРХУ** → родной каталог остаётся |
|
||||
|
||||
Заполнять нужно **только `main`**, если задача — «добавить ряды к родному каталогу».
|
||||
`plugin.js` → `function menu()` собирает из `catalog.menu`; `function main()` строит
|
||||
`parts_data` из `catalog.main` и подмешивает в `Lampa.Api.partNext`.
|
||||
|
||||
### ⚠️ Баг Lampac: источник не виден в списке выбора
|
||||
|
||||
`plugin.js`, строка 59 (`loadCatalogs()`), **два вхождения**:
|
||||
|
||||
```js
|
||||
Object.defineProperty(Lampa.Api.sources, key, { get: function(){ return Api; } });
|
||||
```
|
||||
|
||||
`defineProperty` по умолчанию `enumerable: false` → `Object.keys(Lampa.Api.sources)`
|
||||
не перечисляет источник → Lampa не рисует его в панели выбора. При этом
|
||||
`Api.sources['Мой список']` работает напрямую и каталог отдаёт.
|
||||
|
||||
**Фикс:** `{ get: ..., enumerable: true, configurable: true }`.
|
||||
|
||||
`plugin.js` живёт **в образе**, не на HDD (`docker inspect` — монтируются только
|
||||
`catalog/sites` и `catalog/override`). Правка через `docker exec` теряется при
|
||||
пересоздании. Постоянный путь — volume:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- ./catalog/plugin.js:/lampac/module/Catalog/plugin.js:ro
|
||||
```
|
||||
|
||||
Проверка синтаксиса ПЕРЕД заливкой: `node --check /tmp/catalog-plugin.js`.
|
||||
Статус: **не применено**, ждёт апрува Alex.
|
||||
|
||||
### Radarr как источник данных (постеры, TMDB ID)
|
||||
|
||||
Фильмы уже резолвлены в Radarr — там есть TMDB ID и постеры. Это **правильный
|
||||
источник** для каталога; `.md` их не содержит.
|
||||
|
||||
```bash
|
||||
# API-ключ
|
||||
grep -oE "<ApiKey>[^<]+</ApiKey>" /srv/dev-disk-by-uuid-6194539b-.../docker/radarr/config.xml
|
||||
|
||||
# ⚠️ -L обязателен, иначе 307 и пустое тело
|
||||
curl -sL "http://localhost:7878/api/v3/movie?apikey=$KEY" | jq length # → 50
|
||||
```
|
||||
|
||||
Поля ответа: `tmdbId`, `title`, `year`, `hasFile`, `images[].remoteUrl` (постер TMDB),
|
||||
`images[].coverType == "poster"`. Кэш постеров на диске: Radarr `/config/MediaCover/`.
|
||||
|
||||
## Занятые порты на Кра́кене (2026-09-22)
|
||||
`7878` Radarr · `8096` Jellyfin · `8191` FlareSolverr · `8989` Sonarr · `9000` Portainer ·
|
||||
`9091` Transmission · `9696` Prowlarr · `51413` Transmission (UDP) · **`9118` Lampac**
|
||||
|
||||
## Отладка UI Lampa на ТВ (webOS)
|
||||
|
||||
Правки по SSH не сделать, но **состояние читается** через Chrome DevTools Protocol:
|
||||
|
||||
```bash
|
||||
# webOS отдаёт DevTools на порту 9998 (WebAppMgr --remote-debugging-port=9998)
|
||||
curl -s http://192.168.1.70:9998/json | jq -r '.[] | "\(.type): \(.url)"'
|
||||
# → file:///.../com.lampac.tv/index.html?card=...&source=cub
|
||||
```
|
||||
|
||||
Дальше `websocket` + `Runtime.evaluate` читает живые переменные:
|
||||
|
||||
| Выражение | Что даёт |
|
||||
|---|---|
|
||||
| `Lampa.Storage.field('source')` | выбранный источник |
|
||||
| `Object.keys(Lampa.Api.sources).join('\|')` | перечисляемые источники |
|
||||
| `Object.getOwnPropertyDescriptor(Lampa.Api.sources,'Мой список')` | `enumerable`/`configurable` |
|
||||
| `Lampa.Api.sources['Мой список'].getCatalog()` | ключи каталога |
|
||||
|
||||
Скрипты-пробы: `/tmp/lampa_probe.py`, `/tmp/lampa_probe2.py`, `/tmp/lampa_probe3.py`.
|
||||
|
||||
⚠️ `tcpdump` на Кра́кене **нет**. `luna://com.webos.service.capture/takeScreenShot`
|
||||
на этом ТВ **не существует**. `luna-send` пишет в tty → нужен `script -q -c`.
|
||||
Подробности: [[family/how-to/tv-lampac-plugin]].
|
||||
|
||||
### Общее про модуль
|
||||
|
||||
| Что | Как |
|
||||
@@ -235,10 +322,6 @@ Proxy, SISI, Sync, Telemetry, Tracks, Transcoding, WebLog`.
|
||||
|
||||
Полный пример YAML (`vokino.yaml`): `docker exec lampac cat /lampac/module/Catalog/sites/vokino.yaml`.
|
||||
|
||||
## Занятые порты на Кра́кене (2026-09-22)
|
||||
`7878` Radarr · `8096` Jellyfin · `8191` FlareSolverr · `8989` Sonarr · `9000` Portainer ·
|
||||
`9091` Transmission · `9696` Prowlarr · `51413` Transmission (UDP) · **`9118` Lampac**
|
||||
|
||||
Выбор порта — `docker compose config` + `sudo ss -tlnp` перед деплоем.
|
||||
|
||||
## Интеграция с Lampa (ТВ) — ✅ СДЕЛАНО 2026-09-22
|
||||
|
||||
Reference in new issue
Block a user