diff --git a/personal/tech/kraken-media-inventory-facts.md b/personal/tech/kraken-media-inventory-facts.md new file mode 100644 index 00000000..e9e7b087 --- /dev/null +++ b/personal/tech/kraken-media-inventory-facts.md @@ -0,0 +1,126 @@ +# Кра́кен — медиа-инвентаризация: сводка фактов + +> Рабочий конспект к `personal/plans/kraken-media-inventory-cleanup.md`. +> Создан 2026-09-22, потому что persistent memory переполнена (2977/3000 chars). + +## Цифры + +| Показатель | Значение | +|---|---| +| Диск | `6194539b-03e0-4f33-986b-4da09834e82f` = 1,8 ТБ, занято 1,3 ТБ, свободно **477 ГБ** | +| `49e8f586-3839-4c5d-a1e1-58bfc3579ade` | **symlink** на `6194539b`, не отдельный диск | +| Файлов | 802 видеофайла | +| Позиций (тайтлов) | 233 | +| Всего | 1 236 ГБ | +| Индексирует Radarr/Sonarr | **252 ГБ (21%)** | +| В watchlist (до фикса матчинга) | 29 позиций / 456 ГБ | +| В watchlist (после фикса) | ≥ 33 позиции / ~483 ГБ | +| Не в watchlist | 204 позиции / 780 ГБ | +| Точных дублей файлов | 46 групп / **89,2 ГБ** | +| `downloads/complete` дубли | 64,8 ГБ | + +### По папкам + +| Папка | Файлов | ГБ | В arr | +|---|---|---|---| +| `movies` | 51 | 309.7 | ❌ | +| `movies-radarr` | 11 | 176.2 | ✅ | +| `series-sonarr` | 57 | 116.1 | ✅ | +| `documentaries-series` | 72 | 235.6 | ❌ | +| `cartoons` | 102 | 139.8 | ❌ | +| `cartoons-series` | 433 | 104.6 | ❌ | +| `downloads` | 45 | 78.6 | ❌ | +| `documentaries` | 25 | 71.9 | ❌ | +| `series` | 6 | 3.6 | ❌ | + +## Копии на TrueNAS — проверено + +| Папка TrueNAS (`/mnt/RED_2TB/storage/`) | Содержимое | +|---|---| +| `documentaries` | **1 файл** — `Храброе сердце.avi` (2,18 ГБ) | +| `documentaries-series` | **ПУСТО** | +| `cartoons-series` | **1 сборник** — `Kazaki` (2,62 ГБ) | +| `Cartoons` | **966 файлов / 191 ГБ** | +| `Movies` | 804 файла / 2 032 ГБ | +| `series` | 71 файл / 55,8 ГБ | + +🔴 **307 ГБ доксериалов/документалок на Кра́кене — единственная копия.** Копий на TrueNAS нет. + +🔴 **Мультфильмы — частично.** TrueNAS `Cartoons` покрывает ~40 названий: +Смешарики (DVDRemux 207 файлов/61,6 ГБ), Tom and Jerry (163/15,3), Pinky and the Brain (114/24,9), +Малышарики (256/5,6), Мимимишки (120/5,2), Ну погоди (22/2,8), Леопольд (11/1,0), +38 Попугаев (10/0,6), Простоквашино (3), Винни Пух (3), Чебурашка (4), Котенок по имени Гав (4), +Неуловимый Фунтик (4), Принцесса Мононоке, Ходячий замок, Мой сосед Тоторо, Книга Джунглей, +Полярный экспресс, Король Лев, Аладдин ×3, Бэмби I–II, Ледниковый период, Золушка, Русалочка, +Кунг-фу Панда, Мадагаскар 2, Белка и Стрелка, Труп невесты, Балерина, Аисты, Рапунцель, Тачки, +Фердинанд, Роджер Рэббит, Аленький цветочек, Пиф-паф, Вовка, Жил-был пёс, Как львёнок и черепаха, +Бобик в гостях у Барбоса. + +~90 названий только на Кра́кене: ёжик в тумане, мойдодыр, снежная королева 1957, двенадцать месяцев, +чиполлино, сказка сказок, золотая антилопа, дюймовочка, маугли 1973, остров сокровищ 1988, +волшебник изумрудного города, Доктор Айболит, капитан Врунгель, кот в сапогах 2011, lightyear, +inside out, luca, миграция, encanto, elemental, turning red, Super Mario, despicable me 4, +король лев 1994 + ~80 короткометражек советской анимации. + +## 🔴 Грабля матчинга + +`watchlist.json` item: `{name (рус), original, year, rating, image, href}`. +**tmdb_id отдельным полем ОТСУТСТВУЕТ** — брать из `href` = `https://www.themoviedb.org/movie/NNN`. + +🔴 Файлы названы по-английски (`Bram.Stoker's Dracula.1992.mkv`, `The.Crow.1994...`, +`despicable.me.4.2024...`, `Вивариум_2019_BDRip`) → матчить **с `original`**, не только с русским +`name`. Иначе «не в watchlist» ложно. + +Пропущено мной до фикса (в watchlist, а я их не нашёл): + +| Файл | ГБ | В watchlist | +|---|---|---| +| `Bram.Stoker's Dracula.1992` | 18.04 | Дракула / Bram Stoker's Dracula, TMDB 6114 | +| `The.Crow.1994` | 17.45 | Ворон / The Crow, TMDB 9495 | +| `despicable.me.4.2024` | 2.18 | Гадкий я 4, TMDB 519182 | +| `Вивариум_2019_BDRip` | 1.46 | Вивариум / Vivarium, TMDB 458305 | + +🔴 **Подстрочный/токенный матч даёт мусор:** +- одиночный `Вивариум_2019_BDRip.avi` (1,46 ГБ) раздувался в группу 135 ГБ / 36 файлов; +- `пингвины. шпион в толпе` → `Шпион` / Spy (2015); +- `the secret life of elephants` → `Список заветных желаний` / The Life List. + +🔴 **Год проверять ±1:** `inside out (2015)` vs watchlist `Головоломка 2` (2024) — РАЗНЫЕ фильмы. +Oldboy (2003) и Project Hail Mary (2026) — **в watchlist отсутствуют**, хотя есть в Radarr. + +## Артефакты (Mac) + +| Файл | Что | +|---|---| +| `/tmp/kraken_files.tsv` | сырьё: `size\tpath`, 802 строки | +| `/Users/admin/kraken-inventory.json` | полные данные (top/title/files/size_gb/in_watchlist/wl_names/tmdb_ids/cands/path) | +| `/Users/admin/kraken-inventory.csv` | то же таблицей | +| `/Users/admin/kraken-not-in-watchlist.md` | список 204 позиций | +| `/Users/admin/kraken-dupes.json` | 46 групп дублей | +| `/Users/admin/kraken-vs-truenas.json` | сверка с TrueNAS | +| `/Users/admin/kraken-table-AB.md` | таблица A/B | + +## Скрипты + +| Скрипт | Назначение | +|---|---| +| `/tmp/kraken_inventory3.py` | группировка файлов в позиции + матч с watchlist | +| `/tmp/kraken_fix2.py` | точный матч по `original` (латинская фраза из имени файла) | +| `/tmp/kraken_final.py` | дубли по (имя файла, размер) | +| `/tmp/tn_inv.sh` | инвентаризация TrueNAS `storage/*` | +| `/tmp/tn_load.py load` | загрузка листинга TrueNAS | +| `/tmp/tn_compare.py` | сверка Кра́кен ↔ TrueNAS (⚠️ медленный, только `cartoons*`/`documentaries*`) | + +## Уроки + +1. 🔴 **Токенный матч названий — не работает.** Только строгое равенство нормализованных строк + либо сравнение с полем `original` + проверка года. +2. 🔴 **Одиночный файл в корне папки — отдельная позиция**, не часть группы. Иначе 1 файл 1,46 ГБ + раздувается в 135 ГБ. +3. 🔴 **`downloads/complete` — staging, а не дубли «вообще».** Совпадение проверять по + (имя файла + размер), не по названию тайтла. +4. 🔴 **Не подтверждать «копия есть» по папке с похожим именем.** TrueNAS `documentaries` + (1 файл) ≠ Кра́кен `documentaries` (25 позиций). +5. 🔴 **Watchlist на Кра́кене проверять по хэшу**, не по дате. `watchlist.json` остался + `f3ad677a0fdbf36104b708ec5b8dd114` после «обновил» → правка не залилась. + Боевой `.md` = `$H/obsidian/family/documents/movies-watchlist.md` (НЕ внутри `$H/lampac/`).