[2026-09-27] eagle: personal/plans/tagwriter-container.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
ae931acd15
commit
627d06c07f
2 files changed
+263
-46
No files matched your search
@@ -84,10 +84,79 @@ related:
|
||||
> **MISSING 83 = 10 не-MP3 (9 wma + 1 ogg, mutagen их не пишет) + 73 не разобрано. MP3 из плана потеряно — 0.**
|
||||
> Полный разбор перезапущен (лог был обрезан `первые 10`/`первые 30`).
|
||||
> ✅ **Бэкап не-MP3: 70 файлов, 386 МБ → `/music/backup_raw/`** (40 ogg · 16 wma · 13 m4a · 1 flac);
|
||||
> `/music/backup/` не тронут (42 ГБ, 7041). ⏳ Далее — конвертация не-MP3 → MP3 (ffmpeg в образ, VBR V0, удаление оригиналов после проверки бэкапа), **ждёт `go` Alex**.
|
||||
> ✅ **APPLY ВЫПОЛНЕН: `APPLY: обновлено 7041, ошибок 0`** (~17 мин, запуск в фоне).
|
||||
> ✅ **READ-BACK: не найдено на диске 0.**
|
||||
> Блокер прав на `/mnt/RED_2TB/docker/` решён: каталог создан **из контейнера** (`docker run -u 0 -v /mnt/RED_2TB/docker:/docker alpine mkdir` + `chown 950:950`).
|
||||
> `/music/backup/` не тронут (42 ГБ, 7041).
|
||||
>
|
||||
> ### 🔴🔴 ПОЛНЫЙ РАЗБОР СВЕРКИ (полный лог, 2026-09-26) — И ИСПРАВЛЕНИЕ ПРЕЖНЕГО ВЫВОДА
|
||||
>
|
||||
> | Метрика | Значение |
|
||||
> |---|---:|
|
||||
> | Строк в плане | 7905 (7041 `fix` + 864 `no_change`/`skip`) |
|
||||
> | Совпало | **7610 (96.3%)** |
|
||||
> | MISSING | 83 = **40 ogg + 26 m4a + 16 wma + 1 flac — все не-MP3** |
|
||||
> | MISMATCH | 212 = **все `no_change`/`skip`, `apply` их не трогал** |
|
||||
>
|
||||
> **MISSING 83 — не потери.** Ни одного MP3 (проверено). mutagen пишет только ID3 → не-MP3 ожидаемо.
|
||||
> Ни один MP3 из плана не потерян; не-MP3 в план попали ошибочно и на теги MP3 не влияли.
|
||||
>
|
||||
> **MISMATCH 212 — не «всё ок».** Разбивка по характеру: REAL_DIFF 135 · TRCK_LEADING_ZERO 49 ·
|
||||
> EMPTY_ON_DISK (`None`) 35 · EXTRA_IN_DISK 14 · MOJIBAKE 6 · прочее ~13.
|
||||
> Поля: TRCK 102 · TPE1 98 · TALB 29 · TIT2 25.
|
||||
>
|
||||
> ### ✅ ФАКТ-ЧЕК 212 MISMATCH ПО ДИСКУ → 165 РЕАЛЬНЫХ ПРАВОК
|
||||
>
|
||||
> Alex: **«У тебя блядь есть список несовпавших mp3! Ты не можешь просто по нему update tags
|
||||
> запустить что-ли??»** → «У тебя же уже есть этот список зачем пересчет» → **«Чини»**.
|
||||
>
|
||||
> **Короткий путь (вместо пересчёта всего плана):** 212 путей из MISMATCH → фильтр MP3
|
||||
> (все 212 MP3) → `new_*` из плана → `update-plan.csv` → факт-чек реальных ID3 →
|
||||
> `final-update.csv`.
|
||||
>
|
||||
> | Метрика | Значение |
|
||||
> |---|---:|
|
||||
> | Вход (212 MISMATCH) | 212 |
|
||||
> | **Требуют правки** | **165** |
|
||||
> | Уже совпадают (ложные: ведущий ноль TRCK) | 45 |
|
||||
> | Ошибки | 2 (`._*` AppleDouble-мусор, не ID3) |
|
||||
>
|
||||
> Поля к правке: `TRCK` 128 · `TPE1` 98 · `TALB` 29 · `TIT2` 25.
|
||||
> Примеры: `Сектор Газа` mojibake `Ãðÿçíàÿ êðîâü` → `Грязная кровь`; `50 cent-Candy Shop`
|
||||
> `Shop`/`Candy` → `Candy Shop`/`50 Cent`; Наутилус `Nautilus Pompilius` → `Наутилус Помпилиус`;
|
||||
> НТЛ `NTL` → `НТЛ`; `Wolfgang Gartner - Fire Power` пустые теги → заполнить.
|
||||
>
|
||||
> 🔴 **ОТКРЫТЫЙ ВОПРОС: 75 правок вида `TRCK: 'N'->''`** (удалить номер трека; почти все —
|
||||
> Наутилус Помпилиус). Похоже на дефект плана (`new_track` пустой = «не задано»).
|
||||
> Варианты: **A** удалить как в плане · **B** не трогать пустой `new_track` (рекомендация) ·
|
||||
> **C** показать полный список 75. **Ждёт ответа Alex. До ответа `apply` дельта-правок не запускать.**
|
||||
> Отдельно: 2 файла `._Infected Mushroom - Tiwanacu.MP3`, `._МИМИКРИЯ.MP3` — удалять?
|
||||
>
|
||||
> **Скрипты этой сессии:** `build_update_plan.py` (локально) + `fact_check_212.py` (NAS).
|
||||
>
|
||||
> ### 🔴 ГЛАВНЫЙ ДЕФЕКТ ПЛАНА: ЛОЖНЫЙ `action=no_change` — 353 СТРОКИ
|
||||
>
|
||||
> Alex: **«Что блядь значит no action??»** `no_change` — колонка `action` в CSV («менять не надо»).
|
||||
> `apply_tags.py` выполняет план буквально → файл пропущен. **Скрипт не виноват, виноват ПЛАН.**
|
||||
>
|
||||
> **353 строки** `action=no_change`/`skip`, где `cur_*` ≠ `new_*` (TRCK 262 · TIT2 49 · TALB 21 · TPE1 21).
|
||||
> `source` пустой у 320/353. **Две причины:**
|
||||
> 1. **Ложная логика генератора** — `50 cent-Candy Shop.mp3`: `cur_title=Shop` vs `new_title=Candy Shop`, а `no_change`.
|
||||
> 2. **Устаревший `cur_*`** — `!Retro/Крылья.mp3`: план `cur_artist=Наутилус Помпилиус` (= new),
|
||||
> **на диске реально `Nautilus Pompilius`** → генератор решил «совпадает», поставил `no_change`.
|
||||
>
|
||||
> **Следствие:** 262 файла `Sbornik_Novij_Rok` (`169_Steven Curtis Chapman` в имени, `TRCK=None` в теге) —
|
||||
> номер так и **не записан**. 6 mojibake (`Ãðÿçíàÿ êðîâü`) — **не перезаписаны**. И т.д.
|
||||
>
|
||||
> **Правило:** `action` валидировать против **фактического диска**, а не `cur_*` из плана.
|
||||
> Детектор: `/tmp/find_false_nochange.py` (353 строки, разбивка по полю/`source`/`verdict`).
|
||||
>
|
||||
> ⏭ **Дальше:** (1) пересчитать `action` по факту диска → дельта-план → dry-run → apply;
|
||||
> (2) конвертация не-MP3 → MP3 (ffmpeg в образ, VBR V0, удаление после проверки бэкапа);
|
||||
> (3) приёмка в Jellyfin; (4) после приёмки — удалить бэкап.
|
||||
>
|
||||
> **Прогресс apply/бэкапа (выполнено ранее):**
|
||||
> ✅ **APPLY: 7041 файл, ошибок 0** (~17 мин, в фоне). ✅ **READ-BACK: не найдено 0.**
|
||||
> ✅ Бэкап 7041 файл / 42 ГБ → `/music/backup/`. ✅ Бэкап не-MP3 70 файлов / 386 МБ → `/music/backup_raw/`.
|
||||
> Блокер прав на `/mnt/RED_2TB/docker/` решён: каталог создан **из контейнера**
|
||||
> (`docker run -u 0 -v /mnt/RED_2TB/docker:/docker alpine mkdir` + `chown 950:950`).
|
||||
>
|
||||
> ### 📊 НЕЗАВИСИМАЯ СВЕРКА `verify_tags.py` (2026-09-26) — 96.3%
|
||||
>
|
||||
@@ -99,22 +168,13 @@ related:
|
||||
> | MISMATCH (тег ≠ план) | 212 |
|
||||
> | Файлов на диске (индекс NFC) | 7822 |
|
||||
>
|
||||
> **MISSING 83:** из видимых 10 — **9 `.wma` + 1 `.ogg`** (mutagen пишет только ID3/MP3 →
|
||||
> ожидаемо не обрабатываются). Остальные 73 **не разобраны** — скрипт печатал только первые 10.
|
||||
> **MISSING 83:** ✅ РАЗОБРАНО ПОЛНОСТЬЮ — **40 ogg + 26 m4a + 16 wma + 1 flac, все не-MP3**
|
||||
> (mutagen пишет только ID3/MP3 → ожидаемо). **Ни одного MP3 не потеряно.** См. § ПОЛНЫЙ РАЗБОР выше.
|
||||
>
|
||||
> **MISMATCH 212:** из видимых 30 — `TPE1` 16, `TRCK` 11, `TIT2` 9, `TALB` 6. Классы:
|
||||
> - **mojibake (3)** — CP1251 прочитан как UTF-8: `Ãðÿçíàÿ êðîâü` → `Грязная кровь`
|
||||
> (`Сектор Газа/05 - Грязная кровь.mp3`, `07 - Черный вурдалак.mp3`, `НТЛ/САВЛО&LIL'DEN vs. NTL.mp3`).
|
||||
> Это **битые исходные ID3**, не результат apply. ⚠️ mutagen их не перезаписал.
|
||||
> - **регистр/транслит** — `Ace of Base` / `Nautilus Pompilius` / `Fleur` / `Vanessa-Mae` / `Иванушки Int`.
|
||||
> - **TRCK пустой или чужой** — `None`, `14`→`1`, `2`→`None`, `0`→`24`.
|
||||
> - **TALB с мусором** — `Лучшие песни. Часть 2` (план: `Лучшие песни`).
|
||||
> - **TIT2 усечён/с артистом внутри** — `Shop` vs `Candy Shop`; `Sander Kleinenberg - The Fruit…`.
|
||||
>
|
||||
> ⚠️ **Статус разбора: НЕПОЛНЫЙ.** Лог обрезан (скрипт печатал `первые 10`/`первые 30`).
|
||||
> Фикс (печать всех) готов локально в `/tmp/verify_tags.py`, **но НЕ залит** — апрув истёк дважды.
|
||||
> Причины 212 MISMATCH **не установлены**: возможны правки после apply, дубли имён файлов,
|
||||
> битые исходные теги.
|
||||
> **MISMATCH 212:** ✅ РАЗОБРАНО ПОЛНОСТЬЮ — **все 212 строк с `action=no_change`/`skip`**,
|
||||
> `apply` их не трогал, расхождение было ДО apply. **Корень: ложный `no_change` в плане (353 строки).**
|
||||
> См. § ГЛАВНЫЙ ДЕФЕКТ ПЛАНА выше. Поля: TRCK 102 · TPE1 98 · TALB 29 · TIT2 25.
|
||||
> Классы: REAL_DIFF 135 · TRCK_LEADING_ZERO 49 · EMPTY_ON_DISK 35 · EXTRA_IN_DISK 14 · MOJIBAKE 6.
|
||||
>
|
||||
> ### 🔴 ПИТФОЛЛ: скрипт в каталоге проекта НЕ попадает в образ
|
||||
>
|
||||
@@ -137,8 +197,11 @@ related:
|
||||
> ⚠️ **Пул:** после бэкапа `df` показал `RED_2TB` = 935G (было 976G) — ZFS-снапшоты. Свободно 919 ГБ.
|
||||
> Бэкап (`/music/backup/`, 7041 файл) удалять **только после приёмки в Jellyfin**.
|
||||
>
|
||||
> ⏭ **Осталось:** (1) получить полный список 83 MISSING + 212 MISMATCH → разобрать причины;
|
||||
> (2) приёмка в UI Jellyfin (глазами Alex); (3) после приёмки — удалить бэкап.
|
||||
> ⏭ **Осталось:** (1) ✅ полный разбор 83 MISSING + 212 MISMATCH — **сделан, вскрыл ДЕФЕКТ ПЛАНА
|
||||
> (353 строки ложного `no_change`) + факт-чек (165 реальных правок)**;
|
||||
> (2) 🔴 **ответ Alex по TRCK (A/B/C) — 75 правок «удалить»** → затем **apply дельта-правок (165)**
|
||||
> (бэкап уже есть); (3) конвертация не-MP3 → MP3 (**ждёт `go`**);
|
||||
> (4) приёмка в UI Jellyfin (глазами Alex); (5) после приёмки — удалить бэкап.
|
||||
>
|
||||
> ### 🔴 ПИТФОЛЛ: sentinel-группа собирается по КОРНЮ сборника, НЕ по ближайшей папке
|
||||
>
|
||||
|
||||
Reference in new issue
Block a user