[2026-09-24] eagle: family/projects/watchlist-automation.md personal/plans/lampac-watchlist-plugin.md
This commit is contained in:
1 parent
63694c7f57
commit
81467fe14f
2 files changed
+65
-24
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: unified-feed-approved-awaiting-implementation
|
||||
status: sync-down-feed-implemented-392-parity-pending
|
||||
tags:
|
||||
- lampac
|
||||
- lampa
|
||||
@@ -44,25 +44,46 @@ updated: '2026-09-24'
|
||||
Unbroken 2003→Несломленный 2014, Shogun 1968→Убийца сёгуна 1980). Лечим не годами
|
||||
в `.md`, а слиянием матчеров.
|
||||
|
||||
**План (согласован, реализация НЕ начата).**
|
||||
**Статус: ✅ РЕАЛИЗОВАНО 2026-09-24 (вечер).** Отказ от отдельного `feed.py`/CLI-шага —
|
||||
Alex уточнил требование: «это же чистая доработка sync-down?» → **`sync-down` сам пишет фид**.
|
||||
Отдельного шага `feed` в CLI и в nightly НЕ появилось.
|
||||
|
||||
| Шаг | Что |
|
||||
| Что | Как сделано |
|
||||
|---|---|
|
||||
| 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 | Доки + скилл, коммит/пуш |
|
||||
| Новый `watchlist_sync/sync_down.py` | ~380 строк вместо 195: `resolve` → `wwwroot/watchlist.json` + `watchlist-<cat>.json` + `cards/card-<movie-NNN>.json` + `cards.json` + `missing.json`; опционально ❓-синк |
|
||||
| CLI | `sync-down [--apply] [--feed-root]`; `--batch` оставлен deprecated (в фид идёт весь список) |
|
||||
| Пути | `--feed-root` → env `LAMPAC_ROOT` → `<repo>/../lampac` (fallback для Мак-чекаута). Хардкода UUID-путей в коде нет |
|
||||
| `arr.py` | 🔴 **УДАЛЁН** (`git rm`, коммит `a524f5d`) — история сохранена в гите. Бэкапы НЕ делались (решение Alex: «в истории гита останется») |
|
||||
| ⬇️ | **не ставится больше нигде.** Alex: «⬇️ больше ставить не надо, ведь закачки нет». `mark_queued` в `parser.py` оставлен для исторических строк |
|
||||
| Коммит | `a524f5d` — «sync-down: build Lampa feed instead of adding to arr; drop arr.py» |
|
||||
|
||||
**Что НЕ трогаем:** `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`).
|
||||
1. **Фильтры рейтинга/ужасов в фиде НЕ НУЖНЫ.** Я притащил в фид правила закачки
|
||||
(`rating >= 6.0`, horror-skip) — фид упал до 268 позиций из 392. Это правила
|
||||
**Radarr** («не качаем то, что не смотрим»), а каталог — не очередь закачки:
|
||||
старый генератор отдавал horror тоже (Вивариум, Субстанция, Ужасающий, Зубастики
|
||||
есть в живом фиде). В `sync_down.py` оставлен явный комментарий с запретом
|
||||
возвращать эти фильтры.
|
||||
|
||||
2. **`item.ambiguous` (❓) НЕ исключает позицию из фида.** ❓ означает «название в `.md`
|
||||
неточное, пригодился бы год», а НЕ «нерезолвлено». Резолвер для таких всё равно
|
||||
отдаёт кандидата, и старый генератор их публиковал (Альфа, Кибердеревня, Орвилл,
|
||||
Ножницы — все с постерами в живом фиде). Из фида исключают только: нет `tmdb_id`
|
||||
и `result.year_ambiguous` (🗓️ — реально два разных фильма).
|
||||
|
||||
3. **Фид должен брать лучшего кандидата, а не отказываться.** `resolve()` при
|
||||
неоднозначности возвращает `status="ambiguous"`, `candidate=None`, но топ-3 лежат
|
||||
в `all_candidates` — среди них верный. Старый генератор брал первый результат TMDB.
|
||||
Если строить фид строго по `result.status == "ok"`, теряется **54 позиции**
|
||||
(девять, Мементо, Babylon, Orville, Матрица-класс названий: Казино, Сияние, Оно,
|
||||
Отступники, Бешеные псы…). 🟡 **На момент записи дока это НЕ решено** — ждёт решения
|
||||
Alex: брать `all_candidates[0]` (полный фид 392, как раньше, но спорящие позиции
|
||||
могут показать не тот фильм) **или** пропускать спорные (фид честный, ~54 позиции
|
||||
пропадут до уточнения года в `.md`).
|
||||
|
||||
**Замеры dry-run по ходу работы:** 268 (с фильтрами) → 332 (без фильтров, `ambiguous`
|
||||
исключается) → цель 392, достигается только решением по п.3.
|
||||
|
||||
**Реперные метрики живого фида на 2026-09-24** (для сверки после переноса):
|
||||
```
|
||||
@@ -75,6 +96,22 @@ Unbroken 2003→Несломленный 2014, Shogun 1968→Убийца сёг
|
||||
(`~/Developer/watchlist-sync/`), `/tmp` — только для чтения чужих файлов и одноразовых
|
||||
выборок. Мак-репа и Кракен держатся на одном коммите (`4266e37` на момент старта).
|
||||
|
||||
**Границы (что не трогаем):** `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.py` (`_sync_question_marks`, двусторонняя — снимает протухший ❓).
|
||||
|
||||
**🟡 Незакрытое на конец сессии 2026-09-24 (для следующей сессии):**
|
||||
1. **Решение по спорным позициям (54 шт.)** — см. п.3 «Три открытия»: брать
|
||||
`all_candidates[0]` (полный фид 392) или пропускать. Ждёт ответа Alex.
|
||||
2. Возврат `sync-down` в `watchlist-nightly.sh` (строка 40 сейчас «ПРОПУЩЕН»;
|
||||
в 02:30 крутится отдельный `watchlist-catalog.sh`) + удаление `watchlist-catalog.sh`
|
||||
и строки крона `30 2 * * *`.
|
||||
3. Удаление `lampac/scripts/gen_watchlist.py` (878 строк) и `mark_missing.py` (179).
|
||||
4. Прогон `--apply` на живой фид + `docker restart lampac` (сброс кэша Catalog)
|
||||
+ приёмка в UI Lampa.
|
||||
|
||||
---
|
||||
|
||||
> Реализовано 2026-09-22. План был переписан после разведки кода модуля Catalog.
|
||||
|
||||
Reference in new issue
Block a user