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

8.3 KiB
Raw Blame History

created, namespace, related, status, tags, title, type, updated
created namespace related status tags title type updated
2026-09-22 personal
personal/plans/lampac-kraken
personal/tech/lampac-deployment
family/projects/watchlist-sync
family/projects/watchlist-automation
family/documents/movies-watchlist
proposed
lampac
lampa
watchlist
catalog
webos
plugin
kraken
Watchlist в UI Lampa — плагин отображения plan 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-итерация

Почему выключен:

// 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. 👎 и 🗓️ — прятать?

Связанные