Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
f295d5e903
2 files changed
+82
-16
No files matched your search
@@ -8,7 +8,7 @@ related:
|
||||
- '[[family/projects/watchlist-automation]]'
|
||||
- '[[family/documents/movies-watchlist]]'
|
||||
- '[[personal/plans/lampac-watched-to-watchlist]]'
|
||||
status: main-screen-filter-WORKS-2026-09-25-accepted-latency-prefetch-pending
|
||||
status: main-screen-filter-WORKS-2026-09-25-accepted-committed-5e55a47-prefetch-pending
|
||||
tags:
|
||||
- lampac
|
||||
- lampa
|
||||
@@ -281,14 +281,18 @@ node --check plugin-cub.js → SYNTAX OK
|
||||
Бэкап: `catalog/plugin.js.bak-before-fixurl-<ts>`. Залито → 20934 Б,
|
||||
`docker exec lampac grep -n "function wlUrl" -A4 /lampac/module/Catalog/plugin.js` → на месте.
|
||||
|
||||
**⚠️ НА МОМЕНТ ЗАПИСИ ФИКС НЕ ПРИЁМКОВАН.** Замер после заливки: `url = ""`
|
||||
на ОБОИХ уровнях, `hasCats = false`, `menu = 0`. То есть Lampa стоит на главной давно
|
||||
(URL страницы `component=main&source=cub`), но `Activity.active().url` пуст — это НЕ
|
||||
стадия инициализации. Пока `/catalog` не отвечает, `__wl_menu` пуст и секции взять
|
||||
неоткуда: **перезапуск Lampa без починенного `/catalog` ничего не даст.**
|
||||
**⚠️ ПЕРВЫЙ ЗАМЕР ПОСЛЕ ЗАЛИВКИ — приёмка на нём НЕ пройдена** (оставлено как
|
||||
история): `url = ""` на ОБОИХ уровнях, `hasCats = false`, `menu = 0`. Alex на это
|
||||
ответил: «Ты заебал. Ты блядь задачу решаешь или мозг мне ебешь?! Я жду от тебя:
|
||||
готово, проверяй.» — **правильный ответ на такой сигнал: доделать и доложить,
|
||||
не задавать вопросов.** Ниже выяснилось, что пустой `url` был замером в момент
|
||||
загрузки, а не поломкой; приёмка пройдена после полной инициализации Lampa.
|
||||
|
||||
**Следующий шаг (обязательный, не сделан):** проверить боевой запрос Lampa → Lampac
|
||||
`/catalog` — отвечает ли он с ТВ, отвечает ли с Кра́кена, не сломан ли он вообще.
|
||||
**Следующий шаг был:** проверить боевой запрос Lampa → Lampac `/catalog`. ✅ Выполнено —
|
||||
`/catalog` жив с обеих сторон: с Кра́кена `http=200 size=21470 t=0.44s` (холодный),
|
||||
по LAN с Mac `http=200 size=21470 t=0.01s`, тело содержит корректный
|
||||
`watchlist.menu` = `{Новинки, Фильмы, Мультфильмы, Аниме}`. **Бэкенд был исправен —
|
||||
проблема была только в гонке замера.**
|
||||
|
||||
### ✅ ИТОГ 2026-09-25: ПРИЁМКА ПРОЙДЕНА
|
||||
|
||||
@@ -364,6 +368,37 @@ Alex: «Коммить и переходим к предзагрузке». Пр
|
||||
`plugin-cub.js` под git — тогда правка плагина поедет вместе с проектом и попадёт
|
||||
в историю. Второе правильнее, но это новая сущность в репе → спрашивать один раз.
|
||||
|
||||
#### ✅ ЗАКОММИЧЕНО 2026-09-25 — репозиторий найден, «некуда коммитить» СНЯТО
|
||||
|
||||
Alex уточнил: «Проект на маке в developer это в доке записано. Ведь так?!» — и был прав.
|
||||
|
||||
🔴 **Живое место исходников плагина — `~/Developer/lampac-scripts/` (ПОД GIT), Gitea
|
||||
`git_admin/lampac-scripts`.** Ранее в доке везде значился `/Users/admin/lampac-tmp/` —
|
||||
это скрэтч-папка сессии 2026-09-22, **вне git** (50+ одноразовых пробников).
|
||||
Именно поэтому первый заход дал «коммитить некуда»: искал в `lampac-tmp` и в `lampac/`
|
||||
на Кра́кене, а репа — `lampac-scripts`. Правило из дока («скрипт, который зовёт крон на
|
||||
боевой машине, обязан быть в репозитории») действовало и на плагин.
|
||||
|
||||
```bash
|
||||
cd ~/Developer/lampac-scripts
|
||||
cp .../build_plugin.py scripts/build_plugin.py
|
||||
cp .../plugin-cub.js scripts/plugin-cub.js
|
||||
git add scripts/build_plugin.py scripts/plugin-cub.js
|
||||
git commit -m "watchlist plugin: секции CUB только на главной экране"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
**Коммит `5e55a47`** — «watchlist plugin: секции CUB только на главной экране»,
|
||||
2 files changed, 526 insertions(+). Запушено: `53e5803..5e55a47 main -> main` →
|
||||
`https://git.mallexxx.duckdns.org/git_admin/lampac-scripts.git`.
|
||||
|
||||
Репы на Кра́кене (проверено `find`): только `docker/`, `obsidian/`, `watchlist-sync/`.
|
||||
В `lampac/` git НЕТ — боевой `plugin.js` версионируется только через репу
|
||||
`lampac-scripts` (файл кладётся в неё и оттуда заливается `scp`).
|
||||
|
||||
⚠️ Бэкапы боевого файла (`plugin.js.bak-*`) закрыты `.gitignore` репы (`*.bak*`) —
|
||||
в git не попадают, остаются локальной страховкой рядом с файлом.
|
||||
|
||||
#### ⚠️ Замер «плагин не загрузился» — это была гонка, а не поломка
|
||||
|
||||
Сразу после `luna-send`-перезапуска проба дала:
|
||||
@@ -408,18 +443,22 @@ cats = NOMANIFEST
|
||||
### Открытые шаги (для следующей сессии)
|
||||
|
||||
1. ✅ **ПРИЁМКА ПРОЙДЕНА 2026-09-25** — фильтр `wlOnMain()` работает, фид виден только
|
||||
на главной. Осталась латентность, см. п.2.
|
||||
2. 🔄 **ПРЕДЗАГРУЗКА `__wl_menu`** (согласовано Alex: «Коммить и переходим к предзагрузке»).
|
||||
Корень отставания — асинхронный `/catalog` в `loadCatalogs()`: меню приходит ПОСЛЕ
|
||||
первого `partNext`. Решение: подтягивать `menu` синхронно в `startPlugin()`,
|
||||
параллельно с `loadCatalogs()`, чтобы `wlInject` срабатывал в первом раунде среза.
|
||||
Правка идёт в те же два файла (`plugin-cub.js` + `INJECT` в `build_plugin.py`).
|
||||
на главной. Доказательство: на экране `movie` секций в DOM нет при заполненном `menu`.
|
||||
2. 🔄 **ПРЕДЗАГРУЗКА `__wl_menu`** — единственный незакрытый пункт этой задачи,
|
||||
выполняется сразу после коммита `5e55a47`. Корень отставания — асинхронный `/catalog`
|
||||
в `loadCatalogs()`: меню приходит ПОСЛЕ первого `partNext`. Решение: подтягивать
|
||||
`menu` синхронно в `startPlugin()`, параллельно с `loadCatalogs()`, чтобы `wlInject`
|
||||
срабатывал в первом раунде среза. Правка идёт в те же два файла в репе
|
||||
(`lampac-scripts/scripts/plugin-cub.js` + `INJECT` в `build_plugin.py`) + новый
|
||||
инвариант сборщика. Порядок деплоя — как обычно: сборка → `node --check` → бэкап →
|
||||
`scp` → рестарт Lampa на ТВ → замер CDP.
|
||||
3. **Диагностировать 66 с на карточке** — `docker logs lampac` + трейс `CardController`.
|
||||
Запрос: `GET /catalog/card?plugin=watchlist&uri=movie%2F424781&type=movie`
|
||||
→ 66 118 мс, 939 Б.
|
||||
4. **Matcher-parity** (главный блокер с 2026-09-24, см. ниже) — всё ещё не закрыт.
|
||||
5. **Решение по версионированию плагина** — `lampac_plugin/` в репе `watchlist-sync`
|
||||
или оставить бэкапы + `build_plugin.py` (см. «Коммитить НЕКУДА»).
|
||||
5. ✅ **Версионирование плагина — РЕШЕНО:** `lampac-scripts/scripts/`, коммит `5e55a47`.
|
||||
Развилка «`lampac_plugin/` в `watchlist-sync` vs бэкапы» **закрыта**: плагин
|
||||
принадлежит `lampac-scripts` (там же `gen_watchlist.py`, `deploy_lampac.py`).
|
||||
|
||||
**Правило диагностики этой сессии:** не читать `%{size_download}` как «размер фида»
|
||||
(это gzip) — брать `ls -la` или `Accept-Encoding: identity`. И — `ifconfig` на Кра́кене
|
||||
|
||||
@@ -136,6 +136,28 @@ curl -s "http://192.168.1.70:9998/json/list" | jq -r '.[] | select(.title=="Lamp
|
||||
рестарта приложения либо подтверждать состояние пробами.
|
||||
- 🔴 `URL страницы ТВ — надёжный индикатор экрана`: `...index.html?title=Главная%20-%20CUB
|
||||
&component=main&source=cub` = главная CUB.
|
||||
- 🔴🔴 **НЕ ВЕРИТЬ ПЕРВОМУ ЗАМЕРУ ПОСЛЕ РЕСТАРТА LAMPA.** Сразу после `luna-send`
|
||||
проба даёт `ready=false, plugin=false, patch=false, act_url=ERR, cats=NOMANIFEST` —
|
||||
выглядит как «плагин вообще не доехал» (`window.plugin_catalog` ставит сам
|
||||
`startPlugin()`). **Это гонка, а не поломка:** через несколько секунд те же пробы
|
||||
дают `ready=true, plugin=true, patch=true`. При загрузке CDP-цель имеет `title=""`
|
||||
и `url=about:blank`.
|
||||
**Правило:** искать цель по подстроке `url` = `com.lampac.tv`, а НЕ по
|
||||
`title == "Lampac"` (в момент загрузки `title` пустой, и скрипт молча не находит
|
||||
цель — выглядит как «ТВ недоступен»). Опрашивать `ready`, пока не станет `true`.
|
||||
🔴 **И не спать вслепую:** Alex на `sleep 20` без проверки отреагировал резко
|
||||
(«Чё нахуй за слип 20?!»). Опрашивать состояние в цикле, не ждать таймером.
|
||||
|
||||
### 🔴 `/catalog` — контрольная проверка бэкенда (норма 2026-09-25)
|
||||
|
||||
Прежде чем чинить что-либо в UI, убедиться, что эндпоинт жив:
|
||||
```bash
|
||||
ssh kraken 'curl -s -o /dev/null -w "http=%{http_code} size=%{size_download} t=%{time_total}\n" \
|
||||
http://127.0.0.1:9118/catalog' # → http=200 size=21470 t=0.44s (холодный)
|
||||
ssh kraken 'curl -s -o /dev/null -w "http=%{http_code}\n" http://192.168.1.14:9118/catalog' # → 200 по LAN
|
||||
```
|
||||
Тело содержит `watchlist.menu` = `{Новинки, Фильмы, Мультфильмы, Аниме}`. Если здесь всё
|
||||
исправно — причина в клиенте (гонка загрузки), а не в бэкенде.
|
||||
|
||||
### 🔴 `Manifest.catalogs` пуст = фид вставлять некуда
|
||||
|
||||
@@ -145,6 +167,11 @@ curl -s "http://192.168.1.70:9998/json/list" | jq -r '.[] | select(.title=="Lamp
|
||||
`wl_menu = undefined`, при этом `patch = true`. Диагностировать это ПЕРВЫМ, до
|
||||
разбора логики фильтра.
|
||||
|
||||
⚠️ **`Manifest.catalogs` и `window.__wl_menu` расходятся по времени.** Наблюдалось
|
||||
`menu = Новинки,Фильмы,Мультфильмы,Аниме` (заполнен) при `cats = NOMANIFEST` (пуст) —
|
||||
`__wl_menu` пишется в `wlMenu()` отдельным запросом. Не считать пустой `catalogs`
|
||||
доказательством, что меню нет: смотреть оба поля.
|
||||
|
||||
## 🔴 2026-09-24 (вечер): «Мастерская сатаны» — один источник, торренты пусты. План диагностики
|
||||
|
||||
**Вопрос Alex:** *«для Мастерская сатаны например в lampac в источниках есть только
|
||||
|
||||
Reference in new issue
Block a user