Files
obsidian-vault/personal/plans/lampac-watchlist-plugin.md
T

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