[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/id3-tag-repair.md
This commit is contained in:
1 parent
e93f875e9b
commit
392cbc22db
2 files changed
+90
-1
No files matched your search
@@ -19,10 +19,60 @@ related:
|
||||
- '[[personal/tech/music-tags-repair-truenas]]'
|
||||
- '[[personal/plans/tagwriter-container]]'
|
||||
- '[[family/how-to/navidrome-truenas-android]]'
|
||||
status: RC-complete-defects-fixed
|
||||
status: manual-pass-17-defects-pending-approval
|
||||
|
||||
# Music `artist` + `albumartist` Repair — правила Alex и ход работ
|
||||
|
||||
## 🔵 СЕССИЯ 17 (2026-09-27) — ПОВТОРНЫЙ РУЧНОЙ ПРОХОД ДИФФА, ЧИТАТЬ ПЕРВЫМ
|
||||
|
||||
> ```
|
||||
> APPLY-PLAN.csv 7861 строка md5 2269466bbc08c018482b35c855569a8f (НЕ ИЗМЕНЁН)
|
||||
> DIFF-new-vs-38.csv 2845 строк md5 4e9e43318fb1c9dd353f96e3d125919c (НЕ ИЗМЕНЁН)
|
||||
> Снапшот RC совпадает с рабочими файлами байт-в-байт (проверено diff + md5)
|
||||
> ```
|
||||
>
|
||||
> **Alex потребовал ПОВТОРНЫЙ ручной проход по диффу.** ⚠️ Я ответил планом из 5 шагов
|
||||
> («снять бэкап → сверить md5 → ...») и получил: «**Какого блядь шага 1? Я чё сказал сделать?!**»
|
||||
>
|
||||
> 🔴 **МЕТОД-УРОК (повтор W20/A2/D22):** команда «проверь X вручную» — это **команда ПРОВЕРИТЬ**,
|
||||
> а не повод согласовывать процедуру. Alex уже назвал работу — план на 5 шагов читается как
|
||||
> саботаж. **Проверка = скрипт + вывод по фактам, немедленно.** План нужен только там, где
|
||||
> работа **меняет** данные (запись в боевой CSV).
|
||||
>
|
||||
> ⚠️ Бэкап **не** снимался: проход был read-only (ни одного байта не изменено). Бэкап —
|
||||
> обязателен только перед записью.
|
||||
>
|
||||
> ## РЕЗУЛЬТАТ ПОВТОРНОГО ПРОХОДА: 3 реальных дефекта (101 строка), НЕ 9
|
||||
>
|
||||
> 6 детекторов (`~/Downloads/music-tags/manual_scan.py`, `manual_scan2.py`), полный вывод —
|
||||
> `~/Downloads/music-tags/manual_scan_out.txt`.
|
||||
>
|
||||
> | # | дефект | строк | было → стало (ПРЕДЛОЖЕНО) | где |
|
||||
> |---|---|---:|---|---|
|
||||
> | 1 | `album` = склейка «Категория - Подпапка» | 18 | `Бард - Разное` → `Разное` | `!Барды/*/Разное` |
|
||||
> | 2 | `album` = склейка «Категория - Подборка» | 77 | `Radio - 2009-10 Oktoberfest` → `2009-10 Oktoberfest` | `!Radio/*` |
|
||||
> | 3 | `album` = технический префикс папки | 6 | `(2001) Infected Mushroom - B.P. Empire` → `B.P. Empire` | `Infected Mushroom/*` |
|
||||
>
|
||||
> ⚠️ **Статус: ждут апрува Alex. В файл НЕ записано.** Правило: `album` = имя **подпапки**,
|
||||
> склейка `Родитель - Папка` запрещена (A3/D22). Технические префиксы — год издания
|
||||
> `(2001)`, имя артиста — не часть названия альбома (ср. A6: `(CD1)`/`(Disc 2)`).
|
||||
>
|
||||
> ### ⚪ Ложные срабатывания детекторов (проверено фактами, НЕ дефекты)
|
||||
>
|
||||
> | Класс | Объём | Почему ложь |
|
||||
> |---|---:|---|
|
||||
> | `album == title` | 130 папок | **одноимённые альбомы** (`Enigma/Sleep`, `Любэ/Атас`, `Сектор Газа/Колхозный панк`, `Любэ/Комбат`). У всех `cur_album == new_album` — план ничего не выдумывал. Дефект «album = название песни» только у `Алексин/Шалавы` и `Дискотека Авария/Песенка разбойников` — оба **уже были закрыты в RC** |
|
||||
> | имя папки в `album` | 3051 | детектор «`new_album` входит в `folder`» ловит **вложенность пути**; реальный дефект — только значение-СКЛЕЙКА (пп. 1–3) |
|
||||
> | `aa='Various Artists'` при одном `artist` | **0** | правило соблюдено |
|
||||
> | `aa` с мусором (`null`/`unknown`/`va`) | **0** | — |
|
||||
> | `track` 4+ знака | **0** | закрыто ранее |
|
||||
> | `'Лето - это маленькая жизнь'` (Митяев) | 1 | **тире в самом названии**, не склейка |
|
||||
>
|
||||
> 🔴 **Главный питфолл прохода: детектор по форме значения даёт тысячи ложных.** «Дефис с
|
||||
> пробелами в `album`» → 222 попадания, из них реальных 101. «`album == title`» → 149, реальных 0.
|
||||
> Прежде чем называть класс дефектом — проверять его **против `cur_album`** (план не выдумывал?)
|
||||
> и **по соседним файлам папки** (правило A2/D22).
|
||||
|
||||
## 🟢 АКТУАЛЬНО НА КОНЕЦ СЕССИИ 16 (2026-09-27) — читать это первым
|
||||
|
||||
> ```
|
||||
|
||||
@@ -50,6 +50,10 @@ related:
|
||||
> номер из имени файла, иначе пусто), **D20** (🔴 **мой баг**: `data[i][14]` — это `new_track`,
|
||||
> а `changed` = **15**; всегда `assert` индексы).
|
||||
>
|
||||
> ⚠️ **Обновлён до v2.1.0 (сессия 17):** **D23** — детектор по ФОРМЕ значения даёт тысячи
|
||||
> ложных (3422 «кандидата» → 101 реальный дефект; `album == title` в основном ЛЕГИТИМНО).
|
||||
> Прежде чем называть класс дефектом — сверять с `cur_*` и по соседним файлам папки.
|
||||
>
|
||||
> ⚠️ **Обновлён до v2.0.0 (сессия 15):** **D21** — 🔴 **КОРЕНЬ АРТИСТА = ОДИН АЛЬБОМ**:
|
||||
> файлы ПРЯМО в `<категория>/<артист>/` (без подпапки) считаются одним альбомом → `album` =
|
||||
> имя корня, `albumartist` = титульный исполнитель (= имя корня), **`cur_*` НЕ ЧИТАТЬ**.
|
||||
@@ -968,6 +972,41 @@ Alex дал ответы на все четыре вопроса аудита с
|
||||
«Как муравей домой добирался» — найден как **Виталий Бианки**, потому что источник
|
||||
в файле отсутствовал).
|
||||
|
||||
### 🔴 D23 — детектор по ФОРМЕ значения даёт тысячи ложных (сессия 17)
|
||||
|
||||
Повторный ручной проход по диффу: 6 детекторов дали **3422 «кандидата», реальных дефектов — 101**.
|
||||
|
||||
| Детектор | Срабатываний | Реальных |
|
||||
|---|---:|---:|
|
||||
| «`new_album` входит в `folder`» | 3051 | 101 (только значения-СКЛЕЙКИ) |
|
||||
| «дефис с пробелами в `album`» | 222 | 101 |
|
||||
| «`album == title`» | 149 | **0** |
|
||||
|
||||
Причины ложных:
|
||||
1. **`album == title` в основном ЛЕГИТИМНО** — одноимённые альбомы (`Enigma/Sleep`,
|
||||
`Любэ/Атас`, `Сектор Газа/Колхозный панк`, `Любэ/Комбат`). Признак нормы: у **большинства**
|
||||
файлов папки `title` совпадает с `album` и `cur_album == new_album` (план не выдумывал).
|
||||
2. **Вложенность пути ≠ имя папки в album.** `!Radio/t 2009-10 Oktoberfest` содержит
|
||||
`new_album='2009-10 Oktoberfest'` — это подпапка-подборка, верно. Дефект только когда
|
||||
значение — **склейка** двух сегментов.
|
||||
3. **Тире в названии.** `'Лето - это маленькая жизнь'` (Митяев) — тире внутри названия, не склейка.
|
||||
|
||||
**Обязательная проверка перед словом «дефект»:** (а) сверить с `cur_album`/`cur_artist` — план
|
||||
не выдумывал значение?; (б) посмотреть **соседние файлы папки** — правило применимо ко всем?
|
||||
(в) отсеять по доле файлов папки (монотонный признак защищает от выхваченных строк).
|
||||
|
||||
Это повтор правила **A2/D22** на новом слое: детектор по regex даёт счётчик, а не список дефектов.
|
||||
Объявить 3422 дефекта при 101 реальном = потеря доверия (ср. W15: 628 → 20).
|
||||
|
||||
### 🔴 D22 — не изобретать дефект: проверять правило на СОСЕДНИХ файлах папки
|
||||
|
||||
(сессия 15) `check_root_files.py` дал 420 «нарушений» корней, из них **413 — ложные** (обычные
|
||||
сборники `Various Artists` с разными артистами). Реальных — 7.
|
||||
|
||||
**Следствие:** перед «исправлением» класса — проверить его на соседних файлах папки И на
|
||||
отсутствие лучшего источника данных. «Нашёл дефект» без проверки фактов = ложная тревога,
|
||||
которая стоит сессию времени.
|
||||
|
||||
## ⚪ Что НЕ является багом
|
||||
|
||||
- **Рукописная транслитерация:** `КняZz`, `EMINЭM`, `Flёur`, `изBESTняк`, `Скаzки`, `Глюкоzа`,
|
||||
|
||||
Reference in new issue
Block a user