132 lines
8.3 KiB
Markdown
132 lines
8.3 KiB
Markdown
---
|
||
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]] — источник данных
|