[2026-09-22] eagle: family/documents/movies-watchlist.md personal/plans/kraken-media-inventory-cleanup.md personal/tech/lampac-deployment.md
This commit is contained in:
1 parent
5b0147f53d
commit
159a805ce9
3 files changed
+100
-15
No files matched your search
@@ -3328,24 +3328,56 @@ if top == "downloads" and len(dirs) >= 3 and dirs[0] == "complete":
|
||||
return (top, dirs[0]) if dirs else (top, r["file"])
|
||||
```
|
||||
|
||||
### 🔴 Матч с watchlist — только СТРОГОЕ равенство
|
||||
### 🔴 Матч с watchlist — строгое равенство НЕДОСТАТОЧНО (исправлено 2026-09-22)
|
||||
|
||||
Подстрочный матч (`c in e["name"]`) даёт мусор: короткие нормализованные строки
|
||||
вроде `гладиатор` совпадают со множеством позиций, счётчик «в watchlist» раздувается
|
||||
до неверного. Рабочее правило:
|
||||
до неверного. Порядок эффекта: наивный подстрочный матч → 42 позиции / 811 ГБ;
|
||||
строгий → 29 позиций / 456 ГБ.
|
||||
|
||||
```python
|
||||
if c == e["n"] or (e["o"] and c == e["o"]): # точное равенство, len(c) >= 4
|
||||
⚠️ **Но и строгое равенство по русскому `name` — тоже неверно, и это отдельная ошибка.**
|
||||
Первый прогон сравнивал имя файла только с русским `name` watchlist-позиции. Файлы,
|
||||
названные по **оригиналу**, не находились. Alex поймал это на трёх тайтлах:
|
||||
|
||||
| Файл на диске | В watchlist | Русское `name` |
|
||||
|---|---|---|
|
||||
| `Bram.Stoker's Dracula.1992` | ✅ TMDB 6114 | «Дракула» |
|
||||
| `The.Crow.1994` | ✅ TMDB 9495 | «Ворон» |
|
||||
| `despicable.me.4.2024` | ✅ TMDB 519182 | «Гадкий я 4» |
|
||||
| `Вивариум_2019_BDRip` | ✅ TMDB 458305 | «Вивариум» |
|
||||
|
||||
🔴 **Матчить надо против ОБОИХ полей — `name` И `original` — и с проверкой года.**
|
||||
Структура позиции watchlist:
|
||||
|
||||
```json
|
||||
{"name": "Ворон", "original": "The Crow", "year": 1994,
|
||||
"href": "https://www.themoviedb.org/movie/9495"}
|
||||
```
|
||||
|
||||
Порядок эффекта: наивный подстрочный матч → 42 позиции / 811 ГБ «в watchlist»;
|
||||
строгий → 29 позиций / 456 ГБ. Разница — целиком ложные срабатывания.
|
||||
Рабочее правило: извлечь латинскую фразу из имени файла (`latin_phrase` — длиннейший
|
||||
прогон `[a-z0-9']`-слов после нормализации) и сравнить с `original`; отдельно сравнить
|
||||
нормализованное имя с `name`. **Обязательно сверять год ±1** — иначе `inside out (2015)`
|
||||
ложно матчится с «Головоломка 2» (2024): разные фильмы. В watchlist один и тот же
|
||||
русский `name` может стоять у трёх разных фильмов («Дракула» = 1992 / 2014 / 2025) —
|
||||
год единственный различитель.
|
||||
|
||||
⚠️ **Токенный матч по пересечению слов тоже гадит** и как метод не годится:
|
||||
«пингвины. шпион в толпе» → «Шпион» (Spy, 2015), «the secret life of elephants» →
|
||||
«Список заветных желаний». Использовать только фразовое равенство + год.
|
||||
|
||||
**Нормализация** (обе стороны сравнения, обязательна): снять расширение → `[...]` → `(...)` →
|
||||
год → не-буквы → шум-слова (качество, релиз-группа, `web-dl`, `bdrip`, `x264`, `megapeer`,
|
||||
`bluebird`, `hdrezka`, транслит-хвосты) → сжать пробелы. Для сериалов дополнительно
|
||||
`strip_ep`: `S01E04`, `N серия`, `N выпуск`, `сезон N`.
|
||||
|
||||
⚠️ **Год из имени файла снимается при нормализации** — его надо вытаскивать
|
||||
ОТДЕЛЬНО (`year_of()`) из исходной строки, иначе сверять нечего.
|
||||
|
||||
🔴 **Цифры «29 / 456 ГБ» в этом документе и в плане ЗАНИЖЕНЫ** — матч по одному
|
||||
русскому `name` пропустил минимум 4 позиции (27.3 ГБ), которые на самом деле в
|
||||
watchlist. Пересчёт по правилу «name + original + год ±1» — **следующий шаг**, ждёт
|
||||
от Alex решения по допуску года.
|
||||
|
||||
🔴 **TMDB-ID в `watchlist.json` отдельным полем НЕ лежит.** Он в `href`:
|
||||
`https://www.themoviedb.org/movie/424781` → `re.search(r"/(\d{2,9})/?$", href)`.
|
||||
Попытка читать `item["tmdb_id"]` даёт `null` по всем 376 позициям.
|
||||
@@ -3379,9 +3411,18 @@ if c == e["n"] or (e["o"] and c == e["o"]): # точное равенство,
|
||||
1. **`downloads/complete` (78.6 ГБ)** — нулевой риск, всё есть в библиотеке.
|
||||
2. **Дубли `Life Is Beautiful`** — оставить одну из трёх копий.
|
||||
3. **`documentaries*` вне watchlist (307 ГБ)** — доксериалы, нужен просмотр глазами.
|
||||
4. **Всё не из watchlist (780 ГБ)** — включает `Oldboy`, `Project Hail Mary`, `F1`,
|
||||
4. **Всё не из watchlist (780 ГБ)** — включает `Oldboy`, `Project Hail Mary`,
|
||||
`The Cyberfarm`, `Brassic` — возможно нужное.
|
||||
|
||||
⚠️ **Список «не в watchlist» требует пересчёта перед удалением.** Матч по одному
|
||||
русскому `name` пропустил минимум 4 позиции (27.3 ГБ), которые в watchlist ЕСТЬ:
|
||||
`Bram.Stoker's Dracula.1992` (18.04 ГБ), `The.Crow.1994` (17.45 ГБ),
|
||||
`despicable.me.4.2024` (2.18 ГБ), `Вивариум_2019` (1.46 ГБ).
|
||||
**Эти 4 — сносить НЕЛЬЗЯ**, в текущем списке они помечены ошибочно.
|
||||
`Oldboy` и `Project Hail Mary` проверены отдельно поиском по `watchlist.json` —
|
||||
их там правда нет (0 совпадений по «Oldboy», 0 по «Hail Mary»); они в Radarr,
|
||||
но не в watchlist.
|
||||
|
||||
## ⏳ Осталось добить (2026-09-22)
|
||||
|
||||
### 0. 🔴 Удаление медиа на Кра́кене — ждёт выбора Alex
|
||||
|
||||
Reference in new issue
Block a user