[2026-09-22] eagle: personal/plans/watchlist-tmdb-missing-marker.md personal/tech/lampac-deployment.md
This commit is contained in:
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.
|
**Статус:** ✅ ОСНОВНАЯ ЗАДАЧА ЗАВЕРШЕНА. Шаги 1, 1.3, 2, 3 задеплоены и приняты в UI.
|
||||||
Маркер `❓` работает **в обе стороны** (24 снято, 18 поставлено), боевой `.md`
|
Маркер `❓` работает **в обе стороны** (24 снято, 18 поставлено), боевой `.md`
|
||||||
синхронизирован с каталогом, автозакачка в Radarr отключена и **16 авто-закачек
|
синхронизирован с каталогом, автозакачка в Radarr отключена и **16 авто-закачек
|
||||||
удалены вместе с файлами**, кэш резолва на HDD, кэш-копия с SD удалена.
|
удалены вместе с файлами**, кэш резолва на HDD, кэш-копия с SD удалена,
|
||||||
Коммиты: `lampac-scripts` **`1122b71`** (маркер в обе стороны), `watchlist-sync` **`396acc3`**.
|
**название и год карточки берутся из TMDB** (было — из `.md`).
|
||||||
|
Коммиты: `lampac-scripts` **`53e5803`** (имя/год из TMDB), `1122b71` (маркер в обе
|
||||||
|
стороны), `watchlist-sync` **`396acc3`**.
|
||||||
**Открытые задачи (в работе / ждут Alex)** → [[#🔜 Открытые задачи (2026-09-22, вечер)]]
|
**Открытые задачи (в работе / ждут 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]].
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -118,9 +118,8 @@ sync-vault → process-thumbs → resolve --recheck --apply → sync-up → sync
|
|||||||
**Единственный автоматический путь в закачку** (проверено grep по `~/scripts/*.sh`):
|
**Единственный автоматический путь в закачку** (проверено grep по `~/scripts/*.sh`):
|
||||||
в активном виде не осталось ни одного. Все упоминания `sync-down` — комментарии.
|
в активном виде не осталось ни одного. Все упоминания `sync-down` — комментарии.
|
||||||
|
|
||||||
⚠️ **Radarr уже получил закачки за прошлые прогоны** — 16 фильмов, см. раздел
|
⚠️ **Radarr уже получил закачки за прошлые прогоны** — 16 фильмов, **УДАЛЕНЫ
|
||||||
«Инвентаризация авто-закачек в Radarr/Sonarr» ниже. Судьба решается Alex'ом
|
2026-09-22 вместе с файлами** (см. раздел «Инвентаризация авто-закачек» ниже).
|
||||||
(на момент записи — ждём команду на удаление).
|
|
||||||
|
|
||||||
### Разграничение двух «лимитов» (частый источник путаницы)
|
### Разграничение двух «лимитов» (частый источник путаницы)
|
||||||
|
|
||||||
@@ -132,6 +131,110 @@ sync-vault → process-thumbs → resolve --recheck --apply → sync-up → sync
|
|||||||
Каталог строится `.md` → `watchlist.json`; **Radarr в отображении не участвует.**
|
Каталог строится `.md` → `watchlist.json`; **Radarr в отображении не участвует.**
|
||||||
Alex спрашивал про «лимит обработки/выдачи в lampa» — это НЕ `batch`.
|
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)
|
## 🔴 Кэш резолва переехал с SD-карты на HDD (2026-09-22)
|
||||||
|
|
||||||
Alex: *«какого хуя что-то лежит на sd карте блядь?!»*
|
Alex: *«какого хуя что-то лежит на sd карте блядь?!»*
|
||||||
@@ -160,7 +263,7 @@ DETAILS_FILE = _cache_dir() / ".lampac_tmdb_details.json"
|
|||||||
сначала решил, что копирование не сработало.
|
сначала решил, что копирование не сработало.
|
||||||
|
|
||||||
**Проверено по времени правки файла:** кэш на HDD обновляется прогоном,
|
**Проверено по времени правки файла:** кэш на HDD обновляется прогоном,
|
||||||
на SD застыл.
|
на SD застыл. Копия на SD удалена — см. следующий раздел.
|
||||||
|
|
||||||
### ✅ Копия кэша с SD УДАЛЕНА (2026-09-22, 18:42)
|
### ✅ Копия кэша с SD УДАЛЕНА (2026-09-22, 18:42)
|
||||||
|
|
||||||
@@ -185,8 +288,12 @@ SD-путь /home/kraken/.lampac_tmdb_cache.json существует: False
|
|||||||
|
|
||||||
## 📋 Инвентаризация авто-закачек в Radarr/Sonarr (2026-09-22)
|
## 📋 Инвентаризация авто-закачек в Radarr/Sonarr (2026-09-22)
|
||||||
|
|
||||||
|
> ✅ **ВЫПОЛНЕНО: 16 фильмов Radarr удалены вместе с файлами** (см. ниже
|
||||||
|
> «Удаление»). Sonarr не тронут — авто-закачек там не было.
|
||||||
|
|
||||||
Полный дамп: `/tmp/radarr-sonarr-dump-20260922-184351/` (`radarr-movies.json`,
|
Полный дамп: `/tmp/radarr-sonarr-dump-20260922-184351/` (`radarr-movies.json`,
|
||||||
`sonarr-series.json`) — **единственный откат**, Radarr корзины не имеет.
|
`sonarr-series.json`) — **единственный откат**, Radarr корзины не имеет.
|
||||||
|
Снимок состояния перед удалением: `/tmp/radarr-delete-snapshot.json`.
|
||||||
|
|
||||||
### Доступ к API (креды из `/srv/...6194539b.../watchlist-sync/.env`)
|
### Доступ к API (креды из `/srv/...6194539b.../watchlist-sync/.env`)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user