[2026-09-22] eagle: family/how-to/htpc-webos-luna.md personal/plans/lampac-watchlist-plugin.md personal/tech/lampac-deployment.md personal/tech/skill-lampac-kraken-deploy.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-22 11:17:48 +06:00
1 parent 0c8aecece0
commit 81f8dd398b
4 files changed
+330 -8

No files matched your search

+131
View File
@@ -0,0 +1,131 @@
---
created: '2026-09-22'
namespace: personal
related:
- '[[personal/plans/lampac-kraken]]'
- '[[personal/tech/lampac-deployment]]'
- '[[family/projects/watchlist-sync]]'
- '[[family/projects/watchlist-automation]]'
- '[[family/documents/movies-watchlist]]'
status: proposed
tags:
- lampac
- lampa
- watchlist
- catalog
- webos
- plugin
- kraken
title: Watchlist в UI Lampa — плагин отображения
type: plan
updated: '2026-09-22'
---
# Watchlist в UI Lampa — плагин отображения (план)
> Составлен 2026-09-22. Ждёт подтверждения Alex.
> Предыдущий шаг (Lampac на Кра́кене) — [[personal/plans/lampac-kraken]], шаги 1–6 закрыты.
## Задача
Показывать **список фильмов Alex** (`family/documents/movies-watchlist.md`) прямо в UI Lampa на ТВ —
как каталог для просмотра. **Не локальный плейбэк**, а отображение списка.
Уточнение Alex: «это не локальный плейбэк а отображение фильмов из списка».
## Что НЕ так понято (зафиксировать, чтобы не переделывать)
| Толкование | Верно? |
|---|---|
| Показать **свой список** (`movies-watchlist.md`) в UI | ✅ **да, это задача** |
| Показать **файлы библиотеки** с диска Кра́кена (Jellyfin-подобное) | ❌ нет — это шаг 7 старого плана, **другое** |
| Локальный плейбэк (раздача торрента с диска Кра́кена) | ❌ нет |
## Что нашлось в Lampac (разведка 2026-09-22)
В образе `ghcr.io/lampac-nextgen/lampac` 33 модуля (`/lampac/module/`). Релевантные три:
| Модуль | Что делает | Статус | Подходит? |
|---|---|---|---|
| **Catalog** | **YAML-каталоги → плагин `/catalog.js`** | ⛔ выключен | ✅ **главный кандидат** |
| DLNA | DLNA/UPnP, локальные файлы, торрент-менеджмент | ✅ включён | ⚠️ это про файлы, не про список |
| Online | 70+ онлайн-источников → `/online.js` | ✅ включён | уже используется |
### Модуль Catalog — детали
- **Роут:** `/catalog.js` (плагин Lampa), внутренние — `/catalog/<site>`
- **Данные:** YAML-файлы в `<modpath>/sites/<site>.yaml`
- **Имя файла** — только `[a-z0-9-]`, иначе `Regex.Replace` срежет
- **Есть lookup по `displayname`** внутри `*.yaml`, если файла по имени нет
- **WAF-лимит:** `^/catalog/` → 10 запросов/сек
- **`ModuleBaseConf`** с `limit_map`, класс `CatalogSettings`, есть `IEnumerable`-итерация
**Почему выключен:**
```jsonc
// current.conf
"SkipModules": [ "Catalog", "Tracks", "Transcoding", ... ]
"catalog": false // в блоке плагинов LampaWeb
```
Оба надо включить.
⚠️ **Питфолл:** `init.conf` монтируется **не был** — у нас в compose нет volume на `/lampac/init.conf`.
Файл живёт внутри образа. Правки через `docker exec` **потеряются при пересоздании контейнера**.
Значит: либо добавить volume, либо править через AdminPanel, либо `docker cp` + mount.
## Развилка архитектуры — нужно решение Alex
Отображение списка и воспроизведение — **разные вещи**. Список отдаём, но по клику что играть?
| # | Вариант | Как работает | Плюсы | Минусы |
|---|---|---|---|---|
| **A** | **Каталог → TMDB → торренты** | `/catalog.js` отдаёт названия, Lampa ищет их в TMDB, по клику — TorrServer/онлайн | Просто. Список = то, что уже есть. Работает сегодня | Каталог отдельно от «Избранного» Lampa |
| **B** | **Генератор Lampa-«Избранного»** | Отдаём `movies-watchlist.md` как JSON — Lampa кладёт его в свою папку «Буду смотреть» | Из коробки в UI, без плагина | Лимит **50** у `kinopoisk.js`; формат Lampa-специфичный |
| **C** | **Catalog + свои ссылки** | YAML с ссылками на торренты с диска Кра́кена — это уже **локальный плейбэк** | Прямой запуск | ❌ **Alex сказал — не это** |
**Рекомендация: A.** Список показываем, воспроизведение оставляем штатным (торренты/онлайн). Это ровно
«отображение фильмов из списка», без изобретения плейбэка.
## Что нужно выяснить до кодирования
1. **Формат YAML** — читать `Catalog/Controllers` в образе, узнать схему `CatalogSettings`
(поля: `displayname`, иконка, источник элементов, `tmdb`-режим?).
2. **Есть ли готовый Konopoisk/TMDB-режим** — если Catalog умеет принимать TMDB-коллекцию,
задача сводится к генерации YAML из watchlist.
3. **Как обновлять каталог** — watchlist меняется (Radarr, ⬇️, `[x]`), нужен генератор + hook.
4. **Фильтры** — показывать только `[ ]` (не просмотренные)? Прятать `👎`? Секции (`Фильмы`/`Аниме`/`Мультфильмы`)?
5. **`init.conf`** — как правки не потерять: volume vs AdminPanel.
## Черновик шагов (уточнится после разведки формата)
1. Включить модуль: убрать `Catalog` из `SkipModules`, поставить `"catalog": true`.
2. Разобрать схему YAML по кодe `Catalog/Controllers/*.cs` (в контейнере).
3. Написать генератор: `movies-watchlist.md` → `sites/<name>.yaml`.
- Источник данных — **vault** (`family/documents/movies-watchlist.md`), git-синхронизирован
- Уже есть готовый парсер: `watchlist-sync/parser.py` (см. [[family/projects/watchlist-sync]])
4. Смонтировать `sites/` в контейнер.
5. Плагин на ТВ: Lampa → Настройки → Плагины → `http://192.168.1.14:9118/catalog.js`.
6. **Приёмка:** список виден в UI Lampa на ТВ, названия совпадают с `movies-watchlist.md`.
## Как обновлять
Варианты (выбрать после шага 2):
- hook в `watchlist-nightly.sh` (уже кроном 01:00 на Кра́кене) — догенерировать YAML после прогона
- отдельный cron-скрипт
- ручной запуск генератора
⚠️ `watchlist-nightly.sh` живёт в `~/scripts/` — **root:root**, правка только `sudo install -m 755`.
## Открытые вопросы к Alex
1. **Развилка A/B/C** — согласен на A (каталог → TMDB → штатное воспроизведение)?
2. **Что показывать:** только непросмотренные `[ ]`? Или всё?
3. **Секции:** как в файле (`Фильмы`, `Мультфильмы`, `Аниме`) или одним списком?
4. **`👎` и `🗓️`** — прятать?
## Связанные
- [[personal/plans/lampac-kraken]] — базовое развёртывание (шаги 1–6 сделаны)
- [[personal/tech/lampac-deployment]] — эксплуатация Lampac
- [[family/projects/watchlist-sync]] — парсер списка, CLI, cron
- [[family/projects/watchlist-automation]] — полный flow, форматы маркеров
- [[family/documents/movies-watchlist]] — источник данных