[2026-09-22] eagle: personal/plans/watchlist-tmdb-missing-marker.md personal/tech/lampac-deployment.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-22 19:20:09 +06:00
1 parent 4d0c0867db
commit f7c06d2e41
2 files changed
+184 -7

No files matched your search

@@ -5,10 +5,80 @@
**Статус:** ✅ ОСНОВНАЯ ЗАДАЧА ЗАВЕРШЕНА. Шаги 1, 1.3, 2, 3 задеплоены и приняты в UI.
Маркер `❓` работает **в обе стороны** (24 снято, 18 поставлено), боевой `.md`
синхронизирован с каталогом, автозакачка в Radarr отключена и **16 авто-закачек
удалены вместе с файлами**, кэш резолва на HDD, кэш-копия с SD удалена.
Коммиты: `lampac-scripts` **`1122b71`** (маркер в обе стороны), `watchlist-sync` **`396acc3`**.
удалены вместе с файлами**, кэш резолва на HDD, кэш-копия с SD удалена,
**название и год карточки берутся из TMDB** (было — из `.md`).
Коммиты: `lampac-scripts` **`53e5803`** (имя/год из TMDB), `1122b71` (маркер в обе
стороны), `watchlist-sync` **`396acc3`**.
**Открытые задачи (в работе / ждут Alex)** → [[#🔜 Открытые задачи (2026-09-22, вечер)]]
**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[personal/plans/lampac-disable-1xbet-ads]], [[family/projects/watchlist-automation]], [[family/projects/watchlist-sync]], [[personal/tech/lampac-deployment]]
**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[personal/plans/lampac-disable-1xbet-ads]], [[personal/plans/lampac-pidtor-503-fix]], [[family/projects/watchlist-automation]], [[family/projects/watchlist-sync]], [[personal/tech/lampac-deployment]], [[personal/tech/lampac-torrserver]]
---
## ✅ Название и год карточки — из TMDB (2026-09-22, коммит `53e5803`)
Alex: *«че по имени в карточке? оно должно из источника ставиться»*,
*«названия блядь доделал?»*, *«БЛЯДЬ фильм есть или нет?? ... Отображать как в tmdb/kp»*.
### Что было / что стало
```python
# БЫЛО: it["name"] = название из .md, it["year"] = год из .md (часто null)
# СТАЛО: tmdb_details() тянет ru-RU title + original_title + год из release_date
```
`tmdb_details()` расширен полями `title`, `original_title`, `en_title`, `year`,
`release_date`. В `enrich()` — подстановка с приоритетом **русское название TMDB →
оригинал → `.md` как fallback**. Год проставляется, если в `.md` был `None`.
### Доказательства расхождения (сырьё)
| в `.md` | TMDB `ru-RU` | TMDB `en-US` |
|---|---|---|
| `Смерть единорога` | **`Смерть Единорога`** | `Death of a Unicorn` |
| `Everything Everywhere All at Once` | **`Всё везде и сразу`** | `Everything…` |
| `Простите за беспокойство` | `Простите за беспокойство` | `Sorry to Bother You` |
| `Духless` | `Духless` | `Soulless` |
| `Бумбараш` | `Бумбараш` | `Bumbarash` |
**Год вообще не проставлялся** (`year: null` в каталоге), хотя TMDB отдаёт
`release_date='2025-03-17'`.
### 🔴 Миграция кэша деталей
`cache/.lampac_tmdb_details.json` (367 записей) **не содержал `title`** — старая
версия сохраняла только описание/жанры/актёров. Добавлена проверка:
```python
key = f"{mtype}/{tmdb_id}"
if key in details:
d = details[key]
if d.get("title"): # ← миграция: без title дотянуть заново
return d
```
Записи дотягиваются по одной при первом обращении (~12 запросов/с, ~30 сек на 367).
### Результат боевого прогона
```
376 позиций без года: 1 (из 376) — 'Волшебный участок: Фильм' (нет в TMDB)
296 позиций: русское name + original
источники: Radarr 9, TMDB 346, автопоиск по названию 17, по kp_id 4, miss 33, карточек 376
'Смерть Единорога' orig='Death of a Unicorn' year=2025
'Всё везде и сразу' orig='Everything…' year=2022
'Простите за бесп…' orig='Sorry to Bother You' year=2018
'Я ругаюсь' orig='I Swear' year=2025
'Гамнет' orig='Hamnet' year=2025
```
🔴 **Скрипты, вносившие правку, лежат в `~/lampac-tmp/`:**
`probe_titles.py` (сверка ru/en), `probe_details.py` (состав кэша),
`probe_migrate.py` (проверка миграции), `verify_names.py` (итог прогона).
🔴 **Прогон дважды падал на обрыве ssh** (`client_loop: send disconnect: Broken pipe`)
даже с `setsid nohup`. Рабочее решение — `systemd-run --user --unit=gen-watchlist
--scope /tmp/gen-runner.sh`. См. [[personal/tech/lampac-deployment]].
---
+111 -4
View File
@@ -118,9 +118,8 @@ sync-vault → process-thumbs → resolve --recheck --apply → sync-up → sync
**Единственный автоматический путь в закачку** (проверено grep по `~/scripts/*.sh`):
в активном виде не осталось ни одного. Все упоминания `sync-down` — комментарии.
⚠️ **Radarr уже получил закачки за прошлые прогоны** — 16 фильмов, см. раздел
«Инвентаризация авто-закачек в Radarr/Sonarr» ниже. Судьба решается Alex'ом
(на момент записи — ждём команду на удаление).
⚠️ **Radarr уже получил закачки за прошлые прогоны** — 16 фильмов, **УДАЛЕНЫ
2026-09-22 вместе с файлами** (см. раздел «Инвентаризация авто-закачек» ниже).
### Разграничение двух «лимитов» (частый источник путаницы)
@@ -132,6 +131,110 @@ sync-vault → process-thumbs → resolve --recheck --apply → sync-up → sync
Каталог строится `.md` → `watchlist.json`; **Radarr в отображении не участвует.**
Alex спрашивал про «лимит обработки/выдачи в lampa» — это НЕ `batch`.
## ✅ Инвентаризация авто-закачек Radarr/Sonarr и УДАЛЕНИЕ (2026-09-22)
Alex: *«удалить все добавленные автоматикой закачки в т.ч. файлы. и radarr и sonarr»*
### Как определялось «добавлено автоматикой»
У Radarr/Sonarr **нет тега «кто добавил»**. Признак — окно работы `sync-down`:
пайплайн пошёл в работу 20–21.09.2026.
```
RADARR: 50 фильмов. added >= 2026-09-20 -> 16 штук ← это авто
34 более старых (18.05–04.06) -> НЕ авто (watchlist тогда не работал)
SONARR: 13 сериалов, ВСЕ добавлены 18.05–01.06 -> авто-закачек НЕТ (added>=20.09: 0)
```
### Удалено: 16 фильмов Radarr вместе с файлами
```
deleteFiles=true&addImportExclusion=false
DELETE /api/v3/movie/{id} -> все 16 вернули HTTP 200, ошибок 0
```
| id | Фильм | Год | Файл |
|---|---|---|---|
| 40 | American History X | 1998 | был |
| 41 | Oficina do Diabo | 2025 | нет |
| 42 | I Swear | 2025 | был |
| 43 | Gladiator | 2000 | нет |
| 44 | Warfare | 2025 | был |
| 45 | The Secret Agent | 2025 | был |
| 46 | Den of Thieves 2: Pantera | 2025 | был |
| 47 | The Ugly Stepsister | 2025 | был |
| 48 | Rental Family | 2025 | был |
| 49 | The Life List | 2025 | был |
| 50 | People We Meet on Vacation | 2026 | был |
| 51 | It Was Just an Accident | 2025 | был |
| 52 | The Perfect Neighbor | 2025 | нет |
| 53 | Chasing the Wind | 2025 | нет |
| 54 | Sirāt | 2025 | был |
| 55 | Death of a Unicorn | 2025 | был |
**Результат (проверено сырьём):**
```
Radarr: 50 -> 34 фильма | added >= 20.09: 0 | очередь: 0 | monitored: 0
все 12 каталогов с файлами: удалены с диска (movie-radarr: 29 -> 17 каталогов)
корзина .recyclebin: пуста (файлы ушли физически, не в корзину)
Sonarr: 13 сериалов, не тронуто (авто-закачек не было)
```
Артефакты: дамп `/tmp/radarr-sonarr-dump-20260922-184351/`,
снимок `/tmp/radarr-delete-snapshot.json`, скрипт `~/lampac-tmp/delete_autodownloads.py`.
**Повторное добавление невозможно — два независимых барьера:**
`monitored: 0` у всех 50 + `sync-down` вырезан из крона (см. выше).
### 🔴🔴 ПИТФОЛЛ: `/media/movies-radarr` существует в ДВУХ разных местах
Это стоило ошибочного вывода «файлы не удалились».
```
СНАРУЖИ хоста: /media/movies-radarr -> SD-ПУСТЫШКА (0 файлов!)
это /dev/mmcblk0p2, корень SD
ВНУТРИ Radarr: /srv/dev-disk-by-uuid-49e8f586-…/media/movies-radarr -> РЕАЛЬНЫЕ файлы
(17 каталогов) это ОТДЕЛЬНЫЙ диск 1.8T
```
**Radarr монтирует ДРУГОЙ диск**, не тот, где живёт lampac:
```
uuid 49e8f586-3839-4c5d-a1e1-58bfc3579ade → медиа (movies-radarr, series-sonarr, downloads)
uuid 6194539b-03e0-4f33-986b-4da09834e82f → lampac, docker, obsidian
Оба — sda1 1.8T, но это РАЗНЫЕ разделы/диски
```
Правильная проверка маунтов:
```bash
docker inspect radarr --format '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{println}}{{end}}'
# /srv/dev-disk-by-uuid-49e8f586-…/media -> /media
# /srv/dev-disk-by-uuid-49e8f586-…/media/downloads -> /downloads
# /srv/dev-disk-by-uuid-6194539b-…/docker/radarr/config -> /config
```
🔴 **`find` по наружному пути ВРЁТ** — он смотрит на SD-пустышку. Всегда
сверяться с `docker inspect` маунтами.
### 🔴 ПИТФОЛЛ: `setsid nohup` НЕ спасает фоновый процесс от обрыва ssh
Прогон генератора каталога умирал дважды на `client_loop: send disconnect:
Broken pipe` (на 100/366 позиций). `setsid nohup ... &` **не помогает** —
ssh забирает группу процессов при разрыве.
**Рабочее решение — `systemd-run`:**
```bash
systemd-run --user --unit=gen-watchlist --scope /tmp/gen-runner.sh
# Running scope as unit: gen-watchlist.scope
```
Процесс отвязан от сессии, доживает до конца даже при обрыве ssh.
### 🔴 ПИТФОЛЛ: проверять состояние, а не полагаться на «удалил»
После удаления первой проверкой я смотрел `/media/movies-radarr` (SD-пустышку),
увидел 0 файлов и решил, что всё удалено — **случайно угадал**. Правильная
проверка — по реальному маунту `49e8f586`, там `movie-radarr: 29 -> 17`.
## 🔴 Кэш резолва переехал с SD-карты на HDD (2026-09-22)
Alex: *«какого хуя что-то лежит на sd карте блядь?!»*
@@ -160,7 +263,7 @@ DETAILS_FILE = _cache_dir() / ".lampac_tmdb_details.json"
сначала решил, что копирование не сработало.
**Проверено по времени правки файла:** кэш на HDD обновляется прогоном,
на SD застыл.
на SD застыл. Копия на SD удалена — см. следующий раздел.
### ✅ Копия кэша с SD УДАЛЕНА (2026-09-22, 18:42)
@@ -185,8 +288,12 @@ SD-путь /home/kraken/.lampac_tmdb_cache.json существует: False
## 📋 Инвентаризация авто-закачек в Radarr/Sonarr (2026-09-22)
> ✅ **ВЫПОЛНЕНО: 16 фильмов Radarr удалены вместе с файлами** (см. ниже
> «Удаление»). Sonarr не тронут — авто-закачек там не было.
Полный дамп: `/tmp/radarr-sonarr-dump-20260922-184351/` (`radarr-movies.json`,
`sonarr-series.json`) — **единственный откат**, Radarr корзины не имеет.
Снимок состояния перед удалением: `/tmp/radarr-delete-snapshot.json`.
### Доступ к API (креды из `/srv/...6194539b.../watchlist-sync/.env`)