[2026-09-24] eagle: family/projects/watchlist-automation.md personal/plans/lampac-watchlist-plugin.md personal/tech/lampac-deployment.md
This commit is contained in:
1 parent
6d8cd5e1eb
commit
63694c7f57
3 files changed
+93
-3
No files matched your search
@@ -221,6 +221,13 @@ curl -s --max-time 10 "http://localhost:7878/radarr/api/v3/queue?pageSize=50" \
|
|||||||
(частичный молча возвращает старое). Через host-config тупик: валидатор требует непустой
|
(частичный молча возвращает старое). Через host-config тупик: валидатор требует непустой
|
||||||
`allowedHosts` при `authenticationRequired != Enabled` и не принимает звёздочку.
|
`allowedHosts` при `authenticationRequired != Enabled` и не принимает звёздочку.
|
||||||
|
|
||||||
|
**🔴 Дальше — консолидация (план согласован 2026-09-24, не реализован):** отдельный
|
||||||
|
генератор каталога `lampac/scripts/gen_watchlist.py` признан вторым независимым матчером
|
||||||
|
TMDB — он не знает про `resolve` и его маркеры, из-за чего после удаления arr каталог
|
||||||
|
разъехался с `.md` на 3 позициях (Олдбой/Unbroken/Shogun). Слияние логики в модуль
|
||||||
|
проекта `watchlist_sync/feed.py` + CLI-шаг `feed` — см.
|
||||||
|
[[personal/plans/lampac-watchlist-plugin]] § «2026-09-24 (вечер): ПЕРЕПИСЫВАНИЕ».
|
||||||
|
|
||||||
### ✅ 2026-09-24 (вечер): контент удалён — Radarr/Sonarr пустые
|
### ✅ 2026-09-24 (вечер): контент удалён — Radarr/Sonarr пустые
|
||||||
|
|
||||||
Alex: «если они ни в чем не участвуют, удали все фильмы/сериалы». Проверка перед удалением:
|
Alex: «если они ни в чем не участвуют, удали все фильмы/сериалы». Проверка перед удалением:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ related:
|
|||||||
- '[[family/projects/watchlist-automation]]'
|
- '[[family/projects/watchlist-automation]]'
|
||||||
- '[[family/documents/movies-watchlist]]'
|
- '[[family/documents/movies-watchlist]]'
|
||||||
- '[[personal/plans/lampac-watched-to-watchlist]]'
|
- '[[personal/plans/lampac-watched-to-watchlist]]'
|
||||||
status: cub-sections-working-awaiting-tv-restart-deploy
|
status: unified-feed-approved-awaiting-implementation
|
||||||
tags:
|
tags:
|
||||||
- lampac
|
- lampac
|
||||||
- lampa
|
- lampa
|
||||||
@@ -22,13 +22,61 @@ tags:
|
|||||||
- torrserver
|
- torrserver
|
||||||
- tmdb
|
- tmdb
|
||||||
- card-parse
|
- card-parse
|
||||||
|
- feed
|
||||||
title: Watchlist в UI Lampa — каталог из списка
|
title: Watchlist в UI Lampa — каталог из списка
|
||||||
type: plan
|
type: plan
|
||||||
updated: '2026-09-22'
|
updated: '2026-09-24'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Watchlist в UI Lampa — каталог из списка
|
# Watchlist в UI Lampa — каталог из списка
|
||||||
|
|
||||||
|
## 🔴 2026-09-24 (вечер): ПЕРЕПИСЫВАНИЕ — один sync-скрипт вместо отдельного генератора
|
||||||
|
|
||||||
|
**Требование Alex:** «перепиши по нормальному чтобы не отдельный скрипт на лампу был
|
||||||
|
а один sync скрипт и писал сразу lampa feed… обнови синк скрипт чтобы писал фид вместо
|
||||||
|
добавления закачек в arr, а отдельный lampac script удали».
|
||||||
|
|
||||||
|
**Причина (найдено в этой сессии).** `gen_watchlist.py` (Lampac, 878 строк) — ВТОРОЙ,
|
||||||
|
независимый матчер TMDB: он не читает ни `.resolve_cache.json`, ни маркеры ✅/🗓️/❓.
|
||||||
|
Годами его связывал с резолвером Radarr неявно (матч по названию → те же версии фильмов,
|
||||||
|
что выбрал `resolve`). После удаления контента из arr 2026-09-24 мост исчез, и каталог
|
||||||
|
впервые матчил вслепую → 3 карточки сменили фильм (Олдбой 2003→2013 ремейк,
|
||||||
|
Unbroken 2003→Несломленный 2014, Shogun 1968→Убийца сёгуна 1980). Лечим не годами
|
||||||
|
в `.md`, а слиянием матчеров.
|
||||||
|
|
||||||
|
**План (согласован, реализация НЕ начата).**
|
||||||
|
|
||||||
|
| Шаг | Что |
|
||||||
|
|---|---|
|
||||||
|
| 1 | Логику `gen_watchlist.py` перенести в модуль проекта: `watchlist_sync/feed.py`, функция `run()` как у остальных |
|
||||||
|
| 2 | Новый CLI-шаг `feed`; в nightly — ПОСЛЕ `resolve` (маркеры уже стоят), ПЕРЕД `sync-up` |
|
||||||
|
| 3 | Пути — через `.env`-ключ `LAMPAC_ROOT=/srv/.../lampac` (не хардкод); модуль сам собирает `wwwroot/watchlist.json`, `wwwroot/cards/`, `cache/` |
|
||||||
|
| 4 | Проверка на копии фида: ожидание **392 позиции / 390 постеров / missing 30** — точь-в-точь как текущий живой |
|
||||||
|
| 5 | Живой прогон + `docker restart lampac` (сброс кэша Catalog) |
|
||||||
|
| 6 | Выпилить: `lampac/scripts/gen_watchlist.py` + `mark_missing.py` → `*.bak-20260924`; `~/scripts/watchlist-catalog.sh` + строка крон `30 2 * * *` |
|
||||||
|
| 7 | Доки + скилл, коммит/пуш |
|
||||||
|
|
||||||
|
**Что НЕ трогаем:** `catalog/sites/watchlist.yaml` (контракт Lampac — `plugin: watchlist`,
|
||||||
|
категории, `card_parse`/`card_args` с `format`-выражениями), `catalog/plugin.js`
|
||||||
|
(инжект секций в CUB через `Api.partNext`), структура `cards/card-movie-NNN.json`.
|
||||||
|
Механика `missing.json` → маркер ❓ уже живёт в проекте и работает.
|
||||||
|
|
||||||
|
**`sync-down` остаётся вырезанным из крона** — добавлений в arr из watchlist нет;
|
||||||
|
`arr.py` не трогаем (автозакачка вернулась для РУЧНЫХ добавлений, коммит `ef7e7af`).
|
||||||
|
|
||||||
|
**Реперные метрики живого фида на 2026-09-24** (для сверки после переноса):
|
||||||
|
```
|
||||||
|
каналы: new 32 / films 346 / cartoons 7 / anime 7 → карточек 392
|
||||||
|
источники: Radarr 0, TMDB 371, автопоиск по названию 17,
|
||||||
|
по номеру из ссылки 4, без TMDB 30, постеров 390
|
||||||
|
```
|
||||||
|
|
||||||
|
🟡 **Рабочее правило (Alex):** код писать сразу в проекте на Маке
|
||||||
|
(`~/Developer/watchlist-sync/`), `/tmp` — только для чтения чужих файлов и одноразовых
|
||||||
|
выборок. Мак-репа и Кракен держатся на одном коммите (`4266e37` на момент старта).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
> Реализовано 2026-09-22. План был переписан после разведки кода модуля Catalog.
|
> Реализовано 2026-09-22. План был переписан после разведки кода модуля Catalog.
|
||||||
> Базовое развёртывание — [[personal/plans/lampac-kraken]] (шаги 1–6 закрыты).
|
> Базовое развёртывание — [[personal/plans/lampac-kraken]] (шаги 1–6 закрыты).
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: Lampac — развёртывание и эксплуатация (Кра́кен)
|
title: Lampac — развёртывание и эксплуатация (Кра́кен)
|
||||||
created: '2026-09-22'
|
created: '2026-09-22'
|
||||||
updated: '2026-09-22'
|
updated: '2026-09-24'
|
||||||
type: tech
|
type: tech
|
||||||
namespace: personal
|
namespace: personal
|
||||||
tags:
|
tags:
|
||||||
@@ -27,6 +27,41 @@ related:
|
|||||||
|
|
||||||
> Технический справочник. Развёрнуто 2026-09-22. План и статус шагов — [[personal/plans/lampac-kraken]].
|
> Технический справочник. Развёрнуто 2026-09-22. План и статус шагов — [[personal/plans/lampac-kraken]].
|
||||||
|
|
||||||
|
## 🔴 2026-09-24: генератор каталога признан вторым матчером — уходит в проект
|
||||||
|
|
||||||
|
`lampac/scripts/gen_watchlist.py` (878 строк) + `mark_missing.py` (179) — **отдельные
|
||||||
|
скрипты вне `watchlist-sync`**. Разбор кода в этой сессии:
|
||||||
|
|
||||||
|
- резолв **трёхуровневый**: Radarr по названию → TMDB `/search/{movie,tv}` (кэш
|
||||||
|
`cache/.lampac_tmdb_cache.json`) → КП по номеру из ссылки в `.md`
|
||||||
|
(`kp_id_from_url`, приоритет выше поиска по названию) → КП по названию с порогом
|
||||||
|
`KP_SIM_THRESHOLD = 0.75` и проверкой год ±1 / совпадения `media_type`;
|
||||||
|
- детали карточек — `cache/.lampac_tmdb_details.json` (описание, жанры, актёры, runtime,
|
||||||
|
ru-title + year; требование Alex «отображать как в tmdb/kp»);
|
||||||
|
- пишет: `wwwroot/watchlist.json` (channels), `wwwroot/watchlist-{films,new,cartoons,anime}.json`,
|
||||||
|
`wwwroot/cards.json` + `wwwroot/cards/card-<type>-<id>.json` (файл на фильм, обёртка
|
||||||
|
`{"card": {...}}`), `wwwroot/missing.json` (для маркера ❓);
|
||||||
|
- позиции без TMDB-ID в фид **не отдаются** (требование «чего нет для просмотра — того
|
||||||
|
нет в списке»), уходят в `missing.json`;
|
||||||
|
- `load_env()` ищет `.env` в жёстком списке путей (Кракен-пути + Mac-путь) — хрупко.
|
||||||
|
|
||||||
|
**Проблема:** скрипт не читает `.resolve_cache.json` и не знает маркеров ✅/🗓️/❓ —
|
||||||
|
это ВТОРОЙ независимый матчер того же списка. Ранее связывался с `resolve` неявно через
|
||||||
|
Radarr (матч по названию → те же версии, что выбрал резолвер). После удаления контента
|
||||||
|
из arr (2026-09-24) мост исчез → 3 карточки сменили фильм.
|
||||||
|
|
||||||
|
**Решение (план согласован, не реализован):** логика переезжает в проект как
|
||||||
|
`watchlist_sync/feed.py` + CLI-шаг `feed`, пути через `.env`-ключ `LAMPAC_ROOT`, шаг
|
||||||
|
встаёт в nightly между `resolve` и `sync-up`; `gen_watchlist.py` / `mark_missing.py` /
|
||||||
|
`watchlist-catalog.sh` (крон 02:30) — в `.bak`. Детали и порядок шагов —
|
||||||
|
[[personal/plans/lampac-watchlist-plugin]] § «2026-09-24 (вечер): ПЕРЕПИСЫВАНИЕ».
|
||||||
|
|
||||||
|
⚠️ **НЕ трогать при переносе:** `catalog/sites/watchlist.yaml` (`plugin: watchlist` —
|
||||||
|
обязателен, кириллица в ключе вырезается регуляркой `ModInit`; первая категория
|
||||||
|
игнорирует `format` и берёт `list.uri`; `card_args` требуют `format` для числовых типов,
|
||||||
|
иначе `tmdb_id` приедет строкой и карточка в Lampa будет «здесь пусто»),
|
||||||
|
`catalog/plugin.js` (инжект секций в CUB через `Api.partNext`), структуру `cards/`.
|
||||||
|
|
||||||
## Что это
|
## Что это
|
||||||
|
|
||||||
`lampac-nextgen/lampac` (MIT, .NET 10) — серверный бэкенд для Lampa. Один контейнер, порт **9118**.
|
`lampac-nextgen/lampac` (MIT, .NET 10) — серверный бэкенд для Lampa. Один контейнер, порт **9118**.
|
||||||
|
|||||||
Reference in new issue
Block a user