[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/plans/tagwriter-container.md personal/tech/id3-tag-repair.md personal/tech/music-tags-repair-truenas.md personal/tech/scripts/find_aa_hijack.py personal/tech/scripts/find_va_misuse.py
This commit is contained in:
1 parent
463a77ac5d
commit
2520fda13b
6 files changed
+359
-47
No files matched your search
@@ -4,7 +4,7 @@ created: '2026-09-27'
|
||||
updated: '2026-09-27'
|
||||
type: plan
|
||||
namespace: personal
|
||||
status: session8-done-va-over-single-artist-fixed-5-pending-alex
|
||||
status: session9-done-va-class-cleared-category-root-rolled-back
|
||||
tags:
|
||||
- music
|
||||
- metadata
|
||||
@@ -23,6 +23,36 @@ related:
|
||||
|
||||
# Music `artist` + `albumartist` Repair — правила Alex и ход работ
|
||||
|
||||
> ## 🔴 АКТУАЛЬНО НА КОНЕЦ СЕССИИ 9 (2026-09-27)
|
||||
>
|
||||
> ```
|
||||
> APPLY-PLAN.csv 7861 строка md5 82492a0b2b93dbb6c7444a4040a21a03
|
||||
> DIFF-new-vs-38.csv 4946 строк md5 dd67d4fe64bc6365c478a0831cda634c
|
||||
> tag-fix-plan.csv не тронут (база 38-го, источник истины для диффа)
|
||||
> ```
|
||||
>
|
||||
> **Пустых полей в плане — 0.** Дифф проверен: `ПОТЕРЯНО 0 · ЛИШНИХ 0 · ПОТЕРЬ НЕТ, дифф ПОЛНЫЙ`.
|
||||
>
|
||||
> ✅ **Второй класс `Various Artists` ДОЧИЩЕН полностью** (99 строк): `!Рэп/НТЛ` (63) +
|
||||
> `!Рэп/НТЛ/2003 - Выход` (17) → `НТЛ`, `Ария, Кипелов` (12) → `Ария`, `Тест Сабвуфера` (4) →
|
||||
> `Тест Сабвуфера`. Детектор `find_va_misuse.py` теперь даёт **`ПАПОК-КАНДИДАТОВ: 0`**.
|
||||
>
|
||||
> ✅ **`z Другое…` корень — ОТКАЧЕНО по требованию Alex.** Было `Various Artists`, стало
|
||||
> **собственный `artist` файла** (`Красная Плесень` ×2, `ВИА МЕА` ×1). Корень папки-категории
|
||||
> альбомом **не считается** — см. правило **A4** в `[[personal/tech/id3-tag-repair]]`.
|
||||
>
|
||||
> ✅ **`Би-2/Нечётный Воин` — `artist` вытащен из имён файлов** (46 строк): заглушки
|
||||
> `Нечетный Воин` / `Нечётный воин 2` → реальные исполнители (`Би-2 + Агата кристи`,
|
||||
> `Лакмус + Александр Ф.Скляр`, …), `albumartist` → `Би-2`. См. раздел «🔷 СЕССИЯ 9».
|
||||
>
|
||||
> ⚠️ Все 5 папок из сессии 8 закрыты: `!Рэп/НТЛ`, `Ария, Кипелов`, `Тест Сабвуфера`,
|
||||
> `z Другое…` корень — решены; правок в ожидании нет.
|
||||
>
|
||||
> **Суммарно за сессии 7-9 исправлено 313 строк** по четырём классам (см. A1/A2/A3/A4 в tech-доке).
|
||||
>
|
||||
> ⏳ **Открыто:** `album` файлов `Би-2/Нечётный Воин/*` (`Нечетный Воин (CD1)`, `Медленная Звезда`,
|
||||
> `Нечётный воин 2`) — вопрос задан, ответа нет, **не трогать**.
|
||||
>
|
||||
> ## 🔴 АКТУАЛЬНО НА КОНЕЦ СЕССИИ 8 (2026-09-27)
|
||||
>
|
||||
> ```
|
||||
@@ -40,7 +70,7 @@ related:
|
||||
>
|
||||
> ⏳ **Детектор `find_va_misuse.py` нашёл 5 папок того же класса — ждут решения Alex:**
|
||||
> `!Рэп/НТЛ` (75), `!Rock&Folk/Ария, Кипелов` (8/12), `z Другое…/Тест Сабвуфера` (3/4),
|
||||
> `z Другое…` корень (2/3).
|
||||
> `z Другое…` корень (2/3). → **ЗАКРЫТО в сессии 9, см. выше.**
|
||||
>
|
||||
> ## 🔴 АКТУАЛЬНО НА КОНЕЦ СЕССИИ 7 (2026-09-27)
|
||||
>
|
||||
@@ -2887,6 +2917,144 @@ z Другое… (корень) 2/3 artist='К
|
||||
2. Повторный прогон `find_va_misuse.py` до пустого результата.
|
||||
3. Глазами пройти `field=albumartist` в диффе (571 строка папок).
|
||||
|
||||
---
|
||||
|
||||
# 🔷 СЕССИЯ 9 (2026-09-27) — ДОЧИСТКА `Various Artists` + `Би-2/Нечётный Воин`
|
||||
|
||||
Продолжение сессии 8: 5 папок из детектора закрыты, плюс новый разбор проекта «Нечётный Воин».
|
||||
|
||||
## 📊 ФИНАЛЬНОЕ СОСТОЯНИЕ (конец сессии 9)
|
||||
|
||||
```
|
||||
APPLY-PLAN.csv 7861 строка md5 82492a0b2b93dbb6c7444a4040a21a03
|
||||
DIFF-new-vs-38.csv 4946 строк md5 dd67d4fe64bc6365c478a0831cda634c
|
||||
tag-fix-plan.csv не тронут (база 38-го, источник истины для диффа)
|
||||
verify_diff_completeness.py — независимый контроль полноты
|
||||
```
|
||||
|
||||
**Пустых полей в плане — 0** (все пять `new_*`).
|
||||
Дифф: `ПОТЕРЯНО 0 · ЛИШНИХ 0 · НЕТ-В-38 41=41 · ТОЛЬКО-В-38 85=85 · ПОТЕРЬ НЕТ, дифф ПОЛНЫЙ`.
|
||||
`ВСЕГО правок (трек-уровень): 18558` — не изменилось (правки меняют значения, не число расхождений).
|
||||
|
||||
## ✅ A. ВТОРОЙ КЛАСС `Various Artists` ДОЧИЩЕН ПОЛНОСТЬЮ (99 строк)
|
||||
|
||||
Решение Alex: «Арию ставь в albumartist. исправляй что нашел. `Тест Сабвуфера` — наверное
|
||||
должен быть `Тест Сабвуфера` а не Various».
|
||||
|
||||
| Папка | Файлов | Было | Стало | Основание |
|
||||
|---|---:|---|---|---|
|
||||
| `!Рэп/НТЛ` | 63 | `Various Artists` | **`НТЛ`** | Alex: «исправляй что нашел» |
|
||||
| `!Рэп/НТЛ/2003 - Выход` | 17 | `Various Artists` | **`НТЛ`** | то же |
|
||||
| `!Rock&Folk/Ария, Кипелов` | 12 | `Various Artists` | **`Ария`** | Alex: «Арию ставь» |
|
||||
| `z Другое…/Тест Сабвуфера` | 4 | `Various Artists` | **`Тест Сабвуфера`** | Alex: «наверное должен быть Тест Сабвуфера» |
|
||||
| `z Другое…` (корень) | 3 | `Various Artists` | см. B | откат |
|
||||
|
||||
**Детектор `find_va_misuse.py` теперь даёт `ПАПОК-КАНДИДАТОВ: 0`** — класс вычищен.
|
||||
|
||||
> ⚠️ **Отмена прежнего противоречия:** в сессии 8 помечено, что `!Рэп/НТЛ` формально попадает
|
||||
> под правило «треки в корне артиста при наличии подпапок-альбомов → СБОРНИК (кейс НТЛ)».
|
||||
> Alex решил **в пользу артиста** (`НТЛ`), не сборника. Правило «кейс НТЛ = сборник» из сессии 5
|
||||
> **отменено** — детектор был прав, таблица правил устарела.
|
||||
|
||||
## ✅ B. `z Другое…` КОРЕНЬ — ОТКАЧЕНО (3 строки)
|
||||
|
||||
> Alex: «стоп. нет. красную плесень в красную плесень — виа меа в виа меа — не объединять
|
||||
> корень Другого в альбом»
|
||||
|
||||
```
|
||||
ВИА МЕА aa='ВИА МЕА' album='Дерьмо Моржа'
|
||||
Красная Плесень aa='Красная Плесень' album='Сосни попса'
|
||||
Красная Плесень aa='Красная Плесень' album='Сосни попса'
|
||||
```
|
||||
|
||||
**Правило (зафиксировано):** корень папки-**категории** (`z Другое, Enigma, Ленинград` —
|
||||
контейнер из подпапок разных исполнителей) **альбомом НЕ считается**.
|
||||
`albumartist` = **собственный `artist` файла**, НЕ `Various Artists`.
|
||||
Разные исполнители в корне категории — **не повод** для `Various Artists`.
|
||||
|
||||
## ✅ C. `Би-2/Нечётный Воин` — `artist` вытащен из имён файлов (46 строк)
|
||||
|
||||
> Alex: cur_artist = `Нечётный воин 2` / `Нечетный Воин` → «исправляй артиста значит»
|
||||
|
||||
### Как выявлено
|
||||
|
||||
`new_albumartist` содержал имя ПРОЕКТА вместо артиста:
|
||||
`Нечетный Воин` (CD1/CD2/Медленная Звезда, 27 файлов) и `Нечётный воин 2` (16 файлов).
|
||||
А `new_artist` дублировал ту же заглушку — реальные исполнители были **только в имени файла**
|
||||
в скобках: `02 Все, как он сказал (Би-2 + Агата кристи).mp3`.
|
||||
|
||||
⚠️ **Важно:** это **НЕ порча планом** — в ОРИГИНАЛЕ (`cur_artist`) уже стояло
|
||||
`Нечётный воин 2`. Проверено сравнением с `tag-fix-plan.csv`: `cur == new` в обоих CSV.
|
||||
План просто не трогал эти поля. Мой оборот «прочерк» был неверным словом — Alex отреагировал:
|
||||
«че блядь значит прочерк? почему? они не стояли на оригиналах?»
|
||||
|
||||
### Правка
|
||||
|
||||
| Папка | Файлов | `artist` было | `artist` стало | `aa` |
|
||||
|---|---:|---|---|---|
|
||||
| `2005 Нечетный Воин/CD1` | 11 | `Нечетный Воин` | `Би-2 + И.Желанная`, `Серьга`, `Линда`, `Агата Кристи`, `М.Карасёв`, `Brainstorm`, `Неонавт`, `Сети`, `Би-2` ×3 | → `Би-2` |
|
||||
| `2005 Нечетный Воин/CD2` | 11 | `Нечетный Воин` | `Т.Литвиненко`, `Э.Шклярский`, `Лакмус`, `О.Нестров`, `Н.Борзов`, `О.Петрыкина`, `Лена Т.`, `Би-2 + C.Fereira`, `Би-2` ×3 | → `Би-2` |
|
||||
| `2005 Медленная Звезда` | 5 | `Нечетный Воин` | `Би-2` (все — скобок в именах нет) | → `Би-2` |
|
||||
| `2008 Проект Нечетный Воин 2` | 16 | `Нечётный воин 2` | `Би-2 + Агата кристи` ×2, `Лакмус + Александр Ф.Скляр`, `Роман Суслов + David Brown`, `Сергей Мазаев + Татьяна Литвиненко`, `А.Кортнев + И.Богушевская`, `Би-2 + Диана Арбенина` ×2, `Би-2 + Инна Желанная`, `Би-2 + Punk tv`, `Truffele`, `Алексей Романов`, `David Brown`, `Louis Frank`, `А.Севидов, Electro-punk`, `Би-2` (Intro) | → `Би-2` |
|
||||
|
||||
### 🔴 ПИТФОЛЛ: вложенные скобки в имени файла ломают экстрактор
|
||||
|
||||
Регулярка `re.findall(r'\(([^()]*)\)', stem)` берёт **последнюю** группу скобок. Три файла
|
||||
с вложенными/битыми скобками дали НЕВЕРНЫЙ `artist` — потребовался ручной доп-фикс:
|
||||
|
||||
| Файл | Автоматически | Правильно |
|
||||
|---|---|---|
|
||||
| `03 Kao sun road (David Brown (Brazzaville).mp3` | `Brazzaville` | **`David Brown`** |
|
||||
| `11 Michael (Louis Frank (Esthetic education).mp3` | `Esthetic education` | **`Louis Frank`** |
|
||||
| `16 Все, как он сказал (А.Севидов, Electro-punk.mp3` | `Би-2` | **`А.Севидов, Electro-punk`** |
|
||||
|
||||
**Мораль:** после массовой экстракции из имён — **всегда глазами просмотреть результат**,
|
||||
имена с вложенными скобками дают мусор.
|
||||
|
||||
### ⏳ ОТКРЫТО
|
||||
|
||||
`album` у этих файлов остался неоднородным: `Нечетный Воин (CD1)`, `Нечетный Воин (CD2)`,
|
||||
`Медленная Звезда`, `Нечётный воин 2`. Вопрос Alex задан («оставить или унифицировать?`Нечётный Воин`/`Нечётный воин 2`») — **ответа нет, не трогать**.
|
||||
|
||||
## 🧰 ИНСТРУМЕНТЫ СЕССИИ 9
|
||||
|
||||
| Файл | Назначение |
|
||||
|---|---|
|
||||
| `/tmp/fix_va_rest.py` | дочистка `Various Artists` (НТЛ, Ария, Тест Сабвуфера) |
|
||||
| `/tmp/rollback_z_drugoe.py` | откат `z Другое…` корня |
|
||||
| `/tmp/fix_nechetny.py` | `aa` `Нечетный Воин` → `Би-2` |
|
||||
| `/tmp/fix_nechetny_artist.py` | экстрактор `artist` из скобок имён файлов |
|
||||
| `/tmp/fix_nested.py` | ручной фикс 3 файлов с вложенными скобками |
|
||||
| `/tmp/find_va_misuse.py` | детектор `Various Artists` (повторный прогон → 0) |
|
||||
|
||||
### Бэкапы сессии 9
|
||||
|
||||
```
|
||||
APPLY-PLAN.csv.bak-before-va-rest-20260927-141317
|
||||
APPLY-PLAN.csv.bak-before-z-drugoe-va-20260927-141339
|
||||
APPLY-PLAN.csv.bak-before-z-drugoe-rollback-20260927-141422
|
||||
APPLY-PLAN.csv.bak-before-nechetny-20260927-141459
|
||||
APPLY-PLAN.csv.bak-before-nechetny-artist-20260927-141705
|
||||
APPLY-PLAN.csv.bak-before-nested-fix-20260927-141715
|
||||
```
|
||||
|
||||
## 📊 ИТОГ ТРЁХ СЕССИЙ (7-9): 313 строк по четырём классам
|
||||
|
||||
| Класс | Проявление | Детектор | Объём |
|
||||
|---|---|---|---|
|
||||
| **A1** чужое значение `albumartist` из корня папки | `DJ Feel`, `VIP77`, `Бумер`, `КняZz`, `Мика Ньютон`, `Виктор Жуков`, `ДА и Меньшиков` | `find_aa_hijack.py` | 40 |
|
||||
| **A2** `Various Artists` поверх одного артиста | Агата Кристи 95, НТЛ 80, Бенасси 20, Tiesto 14, Иванушки 8, Магомаев 7, ИМ 5, Ария 12, Тест Сабвуфера 4 | `find_va_misuse.py` | ~250 |
|
||||
| **A3** имя папки/склейка в `album` | `Rammstein - misc` → `misc`, `Infected Mushroom - Other Track's` → `Other Tracks` | `find_folder_as_album.py` | 5 |
|
||||
| **A4** корень папки-категории как альбом | `z Другое…` | — | 3 (откат) |
|
||||
|
||||
## ⏭ СЛЕДУЮЩИЙ ШАГ
|
||||
|
||||
1. `album` для `Би-2/Нечётный Воин/*` — оставить или унифицировать (ждёт Alex).
|
||||
2. Глазами пройти `field=album` в диффе (305 строк, из них ПАПКА — 72) — содержательные решения.
|
||||
3. Затем `field=albumartist` (571 строка папок).
|
||||
4. Боевой прогон `--apply --verify` — **не запущен**, ждёт отдельного «go».
|
||||
5. Контейнер `snapcur` на NAS (только чтение, `:ro`) — **не убран**, Alex не подтвердил.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -20,12 +20,13 @@ related:
|
||||
---
|
||||
# tagwriter — применение тегов к MP3 (TrueNAS)
|
||||
|
||||
> 🔴 **СТАТУС: БОЕВОЙ ПРОГОН НЕ ЗАПУЩЕН.** План правится в сессии 8
|
||||
> (дифф против 38-го прогона) — подробности в [[personal/plans/music-artist-albumartist-repair]] § «СЕССИЯ 8».
|
||||
> Актуальные MD5: `APPLY-PLAN.csv` = `48439e06afeb7bdc28e78be5448f44f7` (7861 стр),
|
||||
> `DIFF-new-vs-38.csv` = `047755613601bcf31c23ff8f22e69b22` (4945 стр).
|
||||
> Открыто: `track` (56 файлов с `238` + 9 с пустым при непустом `cur_track`),
|
||||
> 5 папок с `Various Artists` поверх одного артиста (`!Рэп/НТЛ` и др.).
|
||||
> 🔴 **СТАТУС: БОЕВОЙ ПРОГОН НЕ ЗАПУЩЕН.** План правится в сессиях 8-9
|
||||
> (дифф против 38-го прогона) — подробности в [[personal/plans/music-artist-albumartist-repair]] § «СЕССИЯ 8/9».
|
||||
> Актуальные MD5: `APPLY-PLAN.csv` = `d1fa36dc0fba72faeff08856369fca46` (7861 стр),
|
||||
> `DIFF-new-vs-38.csv` = `374ed1fed3abb7d9ec397025c0c88a2b` (4945 стр).
|
||||
> **Класс `Various Artists` поверх одного артиста — вычищен полностью** (детектор
|
||||
> `find_va_misuse.py` → `ПАПОК-КАНДИДАТОВ: 0`), корень `z Другое…` откачен на собственный `artist`.
|
||||
> Открыто: `track` (56 файлов с `238` + 9 с пустым при непустом `cur_track`), контейнер `snapcur` на NAS.
|
||||
|
||||
> ## 🔴 ПУТИ: `~/milestones` БОЛЬШЕ НЕТ
|
||||
>
|
||||
|
||||
Reference in new issue
Block a user