[2026-09-24] watchlist: фид Lampa пишет sync-down, генератор выпилен; рестарт lampac не нужен

This commit is contained in:
Alexey Martemyanov committed 2026-09-24 18:24:10 +06:00
1 parent 70cdba545a
commit eed338bbc7
1 file changed
+53
+53
View File
@@ -271,6 +271,59 @@ Alex: «если они ни в чем не участвуют, удали вс
Фаст-патч Radarr в генераторе оставлен — при пустом Radarr молча не срабатывает, Фаст-патч Radarr в генераторе оставлен — при пустом Radarr молча не срабатывает,
оживёт сам при ручных добавлениях. оживёт сам при ручных добавлениях.
### ✅ 2026-09-24 (вечер): отдельный генератор Lampa ВЫПИЛЕН — фид пишет sync-down
**Требование Alex:** «не отдельный скрипт на лампу, а один sync скрипт и писал сразу
lampa feed». Раньше связка была двумя механизмами: `sync-down` (отдельный шаг) +
`lampac/scripts/gen_watchlist.py` (878 строк) по своему крону в 02:30.
**Стало:** `watchlist_sync/sync_down.py` собирает фид сам, в ночном пайплайне на
своём прежнем месте (01:00), генератор и его обвязка удалены:
| Было | Стало |
|---|---|
| `sync-down` → Radarr/Sonarr (`arr.py`) | `sync-down` → `wwwroot/watchlist.json` + `cards/` + `missing.json` |
| `lampac/scripts/gen_watchlist.py` (878) + `mark_missing.py` (179) | `.bak-removed-20260924-181942` |
| `~/scripts/watchlist-catalog.sh` + крон `30 2 * * *` | убран (`.bak-removed-…`), крон почищен |
| `arr.py` (Radarr/Sonarr API) | удалён из репы (в истории git) |
| маркер `⬇️` | больше не ставится — закачки нет, маркер ничего не значит |
Коммиты: `a524f5d` (перенос), `471e9df` (ступень КП + тайбрейк), `0534952` (скоуп ❓).
**Резолв фида — 2 ступени** (`sync_down.run`):
1. **КП-по-номеру из ссылки `.md`** (`resolver.resolve_by_kp_id`) — машинный ключ,
не зависит от переименований. Без этой ступени на названиях расходилось ~86 позиций.
2. **Матч по названию** (`resolver.resolve`). Неоднозначные → берётся кандидат с
лучшим `score`, ничьи разбивает рейтинг (Alex 2026-09-24) + ❓ в `.md`.
🔴 Только рейтинг использовать НЕЛЬЗЯ: выбрал бы «Семь Самураев» (★8.5) вместо
«Семь» (1995, ★8.4) и «Злая наука» вместо нужного фильма.
**Питфоллы, найденные по ходу:**
- 🔴 Фильтры рейтинга/ужасов в фиде — НЕДОПУСТИМЫ: это правила закачки Radarr,
а не каталога. С ними терялось ~120 позиций (37 ужасов). Каталог отдаёт всё.
- 🔴 `resolve_by_kp_id` не заменяет поиск: у 66 строк с ❓ ссылки на Кинопоиск
в `.md` НЕТ, они идут в слепой матч по названию. Куда показывать — уточнять год.
- 🔴 `resolve` с годом-хинтом не фильтровал КП-кандидатов: «Злая 2024» → `Cattiva`
(1991) со score 1.0. Исправлено — год отсекает КП-документы.
- 🔴 `_sync_question_marks` считал скрытым всё, кроме секции «Новинки» → ❓ не
попадал в Фильмы/Мультфильмы/Аниме. Скрывать можно только `HIDE_SECTIONS`.
- `WatchItem` нельзя класть в выходной JSON (не сериализуется) — только словари.
**Проверено на живом:** фид 390 позиций (4 канала), lampac HTTP 200, фид 200,
карточка 200, ночной прогон целиком зелёный, vault запушен.
Бэкап фида до правки: `/tmp/feed-before-*.json`; ночного скрипта —
`watchlist-nightly.sh.bak-feed-20260924-181926`.
🔴 **Рестарт lampac после обновления фида НЕ НУЖЕН** (уточнено 2026-09-24, вопрос Alex).
`wwwroot/` — bind-mount, скрипт пишет файл **с хоста**, внутри контейнера он виден
сразу (проверено: один и тот же inode `119669729` и размер на хосте и в `lampac`).
Алекс: «обновление фида же не потребует передёрга?» — верно, не требует.
`docker restart lampac` был унаследован от старого `catalog.sh`, который так сбрасывал
`hybridCache` каталога; цена — приложение падает на ~минуту (компиляция модулей,
HTTP `000`). Из ночного скрипта рестарт убран. Если каталог в Lampa залип
(кэш-ключ `catalog:{plugin}:{search}:{sort}:{cat}:{page}` живёт в памяти процесса) —
обновить страницу в Lampa или переключить категорию, а не ронять контейнер.
Дальше — история и cookbook той защиты. Дальше — история и cookbook той защиты.
**Контекст.** Задача — Lampa на ТВ показывает каталог из `movies-watchlist.md` и играет **Контекст.** Задача — Lampa на ТВ показывает каталог из `movies-watchlist.md` и играет