Files
obsidian-vault/family/how-to/tv-lampac-plugin.md
T

9.5 KiB
Raw Blame History

created, namespace, related, tags, title, type, updated
created namespace related tags title type updated
2026-09-22 family
family/how-to/tv-luna-send
family/how-to/htpc-webos-luna
personal/tech/lampac-deployment
tv
webos
lampa
lampac
plugin
how-to
tv-lampac-plugin — подключение плагина Lampa на LG TV по SSH how-to 2026-09-22

tv-lampac-plugin.sh — подключение плагина Lampa к Lampac на LG TV

Создан 2026-09-22. Проблема, которую решает: добавить плагин/источник в Lampa на ТВ без пульта, автоматически по SSH. Связано: family/how-to/tv-luna-send, family/how-to/htpc-webos-luna, personal/tech/lampac-deployment.

Зачем

Настройки Lampa хранятся в localStorage webOS-приложения. Пульта под рукой может не быть, а добавлять вручную (Настройки → Плагины → ввести URL) долго и неудобно. Данный скрипт прописывает плагин/источник прямо в localStorage приложения Lampa.

Ключевые пути на ТВ

Что Путь
Приложение Lampa /media/developer/apps/usr/palm/applications/com.lampac.tv/
localStorage (LevelDB) /media/developer/apps/usr/palm/applications/com.lampac.tv/.localstorage/
Настройки Lampa ключ lampac_settings (JSON) в LevelDB

Как Lampa хранит настройки

Lampa в webOS использует localStorage, который Chromium хранит в LevelDB (.localstorage/leveldb/). Прямая запись в LevelDB при работающем приложении опасна: приложение перезапишет значение из памяти при выходе.

Правильный порядок:

  1. Закрыть приложение Lampa (иначе перезапишет)
  2. Записать значение в localStorage
  3. Запустить приложение

🔴 НЕ СУЩЕСТВУЕТ пункта «Настройки → Источник» (проверено 2026-09-22)

Не повторять эту ошибку — Alex дважды сказал, что пункта нет.

В Lampa нет отдельного пункта меню для выбора источника каталога. Источник переключается прямо из меню каталогов на главной:

  1. Открыть Lampa на главной странице
  2. Встать на любой ряд каталога и нажать влево на пульте
  3. Слева выедет панель со списком источников (Rezka, Kinobase, FilmixApp, VoKino, Eneyida, KinoUkr, «Мой список», …)
  4. Выбрать «Мой список» и нажать OK
  5. Каталог перестроится на watchlist

Скриншота/подтверждения от Alex ещё нет — он не дошёл до этого шага.

Как плагин catalog.js регистрирует источник (механика)

Важно для диагностики — плагин не добавляет новый пункт в главное меню, он подменяет существующие:

// при старте / app ready:
Lampa.Utils.account(Manifest.api_host + '/catalog', function(json){
    Manifest.catalogs = json;                                  // все каталоги с сервера
    keys.forEach(function(key){
        Lampa.Params.values.source[key] = key;                 // регистрирует источник
        Lampa.Api.sources[key] = Api;                          // подменяет API
        if (Manifest.catalogs[key].search)
            Lampa.Search.addSource(Api.discovery(key));        // добавляет в поиск
    });
});
// хук на меню: клик по movie/tv/cartoon/anime/relise подменяется на URL из catalogs[key].menu
Lampa.Listener.follow('menu', ...)

Отсюда следует:

  • Отдельного переключателя в настройках нет by design — источник выбирается панелью слева.
  • Плагин подтягивает каталоги только при старте приложения. Если добавить плагин и не перезапустить Lampa — каталоги не зарегистрируются. Нужен полный перезапуск (не сворачивание).
  • Заголовок каталога после переключения содержит имя источника в верхнем регистре: «Фильмы — МОЙ СПИСОК».

Что должен отдавать сервер (проверено 2026-09-22)

Endpoint Ответ Значение
/catalog.js 200, ~32 КБ сам плагин, манифест с api_host
/catalog JSON, 7 ключей список каталогов: Rezka, Kinobase, FilmixApp, VoKino, Eneyida, KinoUkr, Мой список
/catalog/list?plugin=watchlist&cat=films {page, results, total_pages} 360 позиций, total_pages: 1

api_host подставляется по IP запроса → http://192.168.1.14:9118 (не localhost), поэтому ТВ получает рабочие ссылки.

7 источников в /catalog — нормальный минимум: модуль Catalog собирает их из bundled-плагинов плюс watchlist. «Мой список» идёт первым ключом.

⚠️ Ловушка диагностики: plugins_add в lampainit.js — НЕ то, что кажется

http://192.168.1.14:9118/lampainit.js содержит:

var plugins_add = [
  {"url":"http://192.168.1.14:9118/catalog.js","status":1,"name":"Альтернативные источники каталога", ...},
  ...
];

Это серверный список плагинов, которые Lampac сам подсовывает в UI. Клиент на ТВ (webOS-приложение com.lampac.tv) — не отдельная Lampa: он грузит app.min.js и lampainit.js с сервера (loader.js → lampac_url из localStorage, дефолт http://192.168.1.14:9118).

Следствие: каталог watchlist работает через серверный модуль Catalog, а не через строку plugins_add. Не искать причину поломки в этом массиве.

Питфоллы (проверено 2026-09-22)

  1. localStorage у webOS-приложений изолирован. Файл в .localstorage/ у сторонних (Homebrew) приложений может отсутствовать — Chromium держит стор в памяти и сбрасывает на диск не сразу. Если каталога нет, сначала запустить приложение один раз.

  2. luna-send через SSH молчит — вывод в tty. Оборачивать в script -q -c "..." /tmp/o.txt и читать файл. См. family/how-to/tv-luna-send.

  3. LevelDB нельзя править на живом приложении. Сначала closeByAppId, потом запись.

  4. init.conf лежит НЕ в корне каталога Lampac, а в config-module/init.conf (монтируется в /lampac/init.conf:ro). Искать там, а не по lampac/init.conf — иначе получишь ложный «файл пропал».

  5. После добавления плагина обязательно полный перезапуск Lampa — иначе /catalog не запрашивается, и источник не появляется (соединений с :9118 будет ноль).

  6. Проще всего — через UI самого пульта, если он доступен: Lampa → Настройки → Плагины → добавить URL. Скрипт нужен, когда пульта нет.

Что должно быть прописано для Lampac

Настройка Значение
Плагин (онлайн-источники) http://192.168.1.14:9118/online.js
Каталог (свой список) http://192.168.1.14:9118/catalog.js
TorrServer http://192.168.1.14:9118 (Настройки → TorrServer → «Использовать основную ссылку»)
Буфер плеера 50–100 МБ

Скрипт

Лежит на Mac: ~/Automation/tv-lampac-plugin.sh (дописывается при первом реальном применении; пока не создан — см. «Статус»).

Статус

⚠️ На 2026-09-22 не проверялось на живом ТВ. Подключение каталога сделано через UI (или требуется сделать). Скрипт-автоматизация — заготовка на будущее.

Если понадобится — подход: closeByAppId com.lampac.tv → запись ключа в localStorage → launch com.lampac.tv. Учесть питфоллы 1–3.