9.5 KiB
created, namespace, related, tags, title, type, updated
| created | namespace | related | tags | title | type | updated | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-22 | family |
|
|
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 при работающем приложении опасна:
приложение перезапишет значение из памяти при выходе.
Правильный порядок:
- Закрыть приложение Lampa (иначе перезапишет)
- Записать значение в localStorage
- Запустить приложение
🔴 НЕ СУЩЕСТВУЕТ пункта «Настройки → Источник» (проверено 2026-09-22)
Не повторять эту ошибку — Alex дважды сказал, что пункта нет.
В Lampa нет отдельного пункта меню для выбора источника каталога. Источник переключается прямо из меню каталогов на главной:
- Открыть Lampa на главной странице
- Встать на любой ряд каталога и нажать влево на пульте
- Слева выедет панель со списком источников (Rezka, Kinobase, FilmixApp, VoKino, Eneyida, KinoUkr, «Мой список», …)
- Выбрать «Мой список» и нажать OK
- Каталог перестроится на 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)
-
localStorage у webOS-приложений изолирован. Файл в
.localstorage/у сторонних (Homebrew) приложений может отсутствовать — Chromium держит стор в памяти и сбрасывает на диск не сразу. Если каталога нет, сначала запустить приложение один раз. -
luna-sendчерез SSH молчит — вывод в tty. Оборачивать вscript -q -c "..." /tmp/o.txtи читать файл. См. family/how-to/tv-luna-send. -
LevelDB нельзя править на живом приложении. Сначала
closeByAppId, потом запись. -
init.confлежит НЕ в корне каталога Lampac, а вconfig-module/init.conf(монтируется в/lampac/init.conf:ro). Искать там, а не поlampac/init.conf— иначе получишь ложный «файл пропал». -
После добавления плагина обязательно полный перезапуск Lampa — иначе
/catalogне запрашивается, и источник не появляется (соединений с:9118будет ноль). -
Проще всего — через 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.