[2026-09-22] eagle: personal/plans/lampac-watchlist-plugin.md
This commit is contained in:
1 parent
d1f17eca39
commit
757501cebe
1 file changed
+44
-7
@@ -68,7 +68,46 @@ updated: '2026-09-22'
|
||||
> Залито, отдаётся в сборке `/catalog.js` (35566 Б). **Ожидает приёмки в UI.**
|
||||
> Механика — [[personal/tech/lampac-deployment]] раздел «Внедрение секций Watchlist в CUB-фид».
|
||||
>
|
||||
> **Обновление 2026-09-22 (шестая сессия): 🔴🔴 ПРИЧИНА «В CUB НИХУЯ НЕ ПОМЕНЯЛОСЬ» — `Manifest` НЕДОСТУПЕН В ОБЁРТКЕ.**
|
||||
> **Обновление 2026-09-22 (ВОСЬМАЯ СЕССИЯ): ✅✅ ЭТАП «СЕКЦИИ ВНУТРИ CUB» ЗАКРЫТ — ФИД СМЕРЖИЛСЯ.**
|
||||
> Alex: «Отлично, фид смержился. Закрываем этот этап в плане.»
|
||||
>
|
||||
> **Корень, который держал этап** (нашёл только по коду `app.min.js` @1292588):
|
||||
> ```js
|
||||
> function partNext(parts, parts_limit, partLoaded, partEmpty) {
|
||||
> var pieces = parts.filter(function (p) {
|
||||
> return typeof p == 'function';
|
||||
> }).slice(0, 0 + parts_limit); // ← limit = 6, ЖЁСТКИЙ СРЕЗ ГОЛОВЫ
|
||||
> ```
|
||||
> `cub.main$1` кладёт в `parts_data` **28 родных секций** и вызывает `partNext(parts, 6, …)`.
|
||||
> Наш инжект делал `parts.push()` → секции уходили в **хвост** (позиции 29–32) → `slice(0, 6)`
|
||||
> их отрезал. Трасса пула на живом ТВ: `before: 28 → after: 32`, в DOM — **ни одной** нашей секции.
|
||||
>
|
||||
> **ФИКС: `parts.unshift()` вместо `parts.push()`** — в голову пула, в срез, рисуются СВЕРХУ
|
||||
> (ровно требование Alex). Порядок меню обходится **в обратном порядке**, потому что каждый
|
||||
> `unshift` сдвигает предыдущие вправо.
|
||||
>
|
||||
> **Ложный след, потративший время:** тест `g: {wlSection: "undefined", …}` читался как
|
||||
> «функции недоступны из замыкания». На самом деле инжект **внутри** замыкания плагина и
|
||||
> `wlSection` виден перехватчику — проба смотрела снаружи. Доказательство: прямой вызов
|
||||
> `partNext(empty,…)` дал `len: 4`. **Проверять пул ТРАССОЙ (`before/after`), а не наличием
|
||||
> функций на `window`.**
|
||||
>
|
||||
> **Приёмка (серверная часть): 18/18.** `/catalog.js` 33550 Б с `unshift`; `/catalog` →
|
||||
> ключ `watchlist`, menu 4 категории; список: new 33/30 постеров, films 360/308/312 ID,
|
||||
> cartoons 3/3, anime 7/7; карточка `tmdb_id: 424781` числом; регресс-тест `plugin=Мой список`
|
||||
> → **400** (кириллица по-прежнему не проходит).
|
||||
>
|
||||
> **Артефакты:** `build_plugin.py` (+инварианты `wlInject def`, `unshift (не push)`,
|
||||
> `push в INJECT (должно 0)`), `verify_unshift.py` (проверка фикса в рантайме БЕЗ деплоя),
|
||||
> `full_check.py` (полный цикл сервер+ТВ), `tv_accept.py`, `diag_trace.py`, `diag_calls.py`.
|
||||
> Бэкапы: `plugin.js.bak-20260922-165613` (последний рабочий), `plugin-cub.js.bak-*`.
|
||||
>
|
||||
> 🔴 **Питфолл рантайм-проверки:** повторная загрузка `/catalog.js` скрипт-тегом НЕ перезапускает
|
||||
> `startPlugin` (флаг `window.plugin_catalog` уже стоит) → `patched: false`. Для быстрой итерации
|
||||
> без деплоя оборачивать `Lampa.Api.partNext` вручную с `unshift` (`verify_unshift.py`).
|
||||
> `location.reload()` на webOS догружает новый `catalog.js` **дольше 30 с** — ждать до 120 с.
|
||||
|
||||
> **Обновление 2026-09-22 (седьмая сессия): 🔴🔴 ПРИЧИНА «В CUB НИХУЯ НЕ ПОМЕНЯЛОСЬ» — `Manifest` НЕДОСТУПЕН В ОБЁРТКЕ.**
|
||||
> Alex: «Ты вообще нихуя не поменял!!». Проверка через **CDP-пробу на живом ТВ** подтвердила
|
||||
> его правоту: обёртка `Api.sources.cub.main` стояла (`__wl_injected: true`), но вызов
|
||||
> `cub.main({})` возвращал **4 родные секции** и **ни одной нашей**.
|
||||
@@ -91,11 +130,9 @@ updated: '2026-09-22'
|
||||
> заливку и выглядел как «патч не применяется» → `docker restart lampac`).
|
||||
>
|
||||
> **Осталось (2026-09-22, конец СЕДЬМОЙ сессии):**
|
||||
> 0. 🔴 **ЗАЛИТЬ `plugin-cub.js` НА КРА́КЕН + ПЕРЕЗАПУСТИТЬ LAMPA НА ТВ.** Механизм
|
||||
> (`partNext`) **проверен на живом ТВ через CDP** — секции рендерятся в DOM главной CUB
|
||||
> (подробности + список probe-скриптов — раздел «СЕДЬМАЯ СЕССИЯ»). Команда деплоя ждёт
|
||||
> апрува: `scp plugin-cub.js kraken:.../catalog/plugin.js` → `docker restart lampac` →
|
||||
> `sh /tmp/tv_restart.sh` → `python3 probe_ui.py`.
|
||||
> 0. ✅ **ЗАКРЫТО 2026-09-22 (восьмая сессия):** `plugin-cub.js` залит на Кра́кен,
|
||||
> фикс `unshift` вместо `push` — **фид смержился**, секции Watchlist рисуются
|
||||
> внутри главной CUB рядом с родными. См. блок «ВОСЬМАЯ СЕССИЯ» выше.
|
||||
> 1. **5 фильмов с Кинопоиск-ID** (`film/NNNNN/`) — «Рассекая волны: экспедиция „Лас Бальсас“»,
|
||||
> «Хамнет», «Эхопраксия», «Цена вершины», «Астрал. Могильный ритуал 2», «О добре и зле»,
|
||||
> WeWork (2024).
|
||||
@@ -749,7 +786,7 @@ Cron: `30 2 * * *` → лог `~/logs/watchlist-catalog.log`.
|
||||
|
||||
| # | Шаг | Статус |
|
||||
|---|---|---|
|
||||
| 1 | Генератор берёт данные **из Radarr API** (`localhost:7878/api/v3/movie`), а не парсит текст | ⏳ ждёт апрува |
|
||||
| 1 | Генератор берёт данные **из Radarr API** (`localhost:7878/api/v3/movie`), а не парсит текст | ✅ сделано (9 из Radarr) |
|
||||
| 2 | Подставлять в `id` → `tmdbId`, в `img` → `images[].remoteUrl` (постер), `year` → `year` | ⏳ |
|
||||
| 3 | ~~Из `sites/watchlist.yaml` убрать блок `menu`, оставить `main`~~ ❌ **НЕВОЗМОЖНО** — `main` в YAML ломает парсинг, `menu` обязателен. Подмену делает `plugin.js`. См. «🔴 ПИТФОЛЛ YAML» | ❌ опровергнуто |
|
||||
| 4 | Постеры кэшировать локально (Radarr `MediaCover/` или проксировать через `tmdbproxy`) | ⏳ |
|
||||
|
||||
Reference in new issue
Block a user