[2026-09-26] eagle: personal/plans/music-tags-review/music-tags-review.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
94930a68b3
commit
33e4c4e948
2 files changed
+130
-2
No files matched your search
@@ -19,10 +19,18 @@ related:
|
||||
|
||||
# Music Tags Repair — TrueNAS (7906 файлов)
|
||||
|
||||
> **Статус: ДВЕНАДЦАТАЯ ВОЛНА (2026-09-26). NAS ДОСТУПЕН, применение НЕ начато.
|
||||
> **Статус: ТРИНАДЦАТАЯ ВОЛНА (2026-09-26). КЛАСС C ЗАКРЫТ ПОЛНОСТЬЮ. NAS ДОСТУПЕН, применение НЕ начато.
|
||||
> Работа — ручной проход по CSV `tag-fix-plan.csv` построчно; правка скриптов ЗАПРЕЩЕНА.**
|
||||
> ✅ **МЕТОД ОПРЕДЕЛЁН:** правки **по одной через `patch`**, БЕЗ остановок на уточнения.
|
||||
> Alex: **«Ты не останавливаешься блядь а доделываешь все сука как сказано!!!»**
|
||||
> ✅ **Класс C (склейка `artist - title` в `new_title`) — ЗАКРЫТ.** Осталось: класс A (113),
|
||||
> класс D (11), номер в title (~20), транслит (~40). Детали — «ТРИНАДЦАТАЯ ВОЛНА».
|
||||
> ✅ **Проверка целостности (быстрая, без python):**
|
||||
> `/usr/bin/awk -F'"' 'NR>1 && NF%2==0 {print NR": "NF}' tag-fix-plan.csv` → пусто = 0 битых.
|
||||
> **CSV: 7907 строк (7906 данных + заголовок), 0 битых.**
|
||||
>
|
||||
> ---
|
||||
>
|
||||
> Контекст двенадцатой волны:
|
||||
> ✅ **Правки в CSV:** баг 1 (26) + баг 3 (50 из 51) + баг 4 (1) + 3 решения Alex
|
||||
> + `Отдыхаем хорошо` + **класс C 79 из 271** = **109+ строк с `source = manual (user decision)`**.
|
||||
> Проверка `csv.DictReader`: **7906 строк / 11 колонок / 0 битых** (`fix` 6773, `no_change` 1133).
|
||||
@@ -53,6 +61,87 @@ related:
|
||||
> Прогонялись **девять волн** проверок: см. таблицу волн ниже.
|
||||
> Итог v7: «требует решения» **4**, medium **5811**, high **958**, mojibake = 0, остаточный mojibake = 0.
|
||||
|
||||
## 🖐 ТРИНАДЦАТАЯ ВОЛНА: КЛАСС C ЗАКРЫТ ПОЛНОСТЬЮ (2026-09-26)
|
||||
|
||||
### ⚠️ ГЛАВНЫЙ УРОК ВОЛНЫ: `awk -F','` НЕ ГОДИТСЯ ДЛЯ ДЕТЕКТА
|
||||
|
||||
Прежние детекторы классов через `/usr/bin/awk -F',' '$6 ~ / - /'` дают **массовые ложные**,
|
||||
потому что:
|
||||
1. Поля `cur_title`/`cur_album` **содержат запятые внутри кавычек** → `awk` видит сдвиг колонок.
|
||||
2. Признак ` - ` в title ловит **композитор-поэт** в детских песнях: `Настоящий друг (Б. Савельев - М. Пляцковский)`,
|
||||
`Песня мамы В.Шаинский - Д.Непомнящий` — это **НОРМА**, разделитель внутри скобок.
|
||||
|
||||
**Результат ложного прогона:** ~60 «кандидатов», из них реальных дефектов класса C — **8**.
|
||||
Папка `!Детские/Сборка Песни для детей` даёт ~50 ложных подряд.
|
||||
|
||||
> 🔴 **Правильный детектор класса C — только по границе слова, а не по ` - ` внутри строки:**
|
||||
> `new_title` **НАЧИНАЕТСЯ** с `new_artist` + ` - ` (или `_`).
|
||||
> Подтверждение: `$7!="" && $6 ~ /_/` дало 8 строк — все реальные дефекты.
|
||||
> **Перед объявлением класса массовым — разобрать 3-5 примеров глазами (см. memory).**
|
||||
|
||||
### 🛠 ПРАВКИ ЭТОЙ ВОЛНЫ (9 реальных строк класса C + 3 починки)
|
||||
|
||||
| Строка CSV | Файл / было | Стало |
|
||||
|---|---|---|
|
||||
| 2930 | `16.Monster DJ's - Новогодний Хаус.mp3`, title = имя файла | title `Новогодний Хаус`, track 16 |
|
||||
| 3169 | `disk/1 DRIVE/Monster DJ's - Новогодний Хаус.mp3` (дубль) | то же |
|
||||
| 3434 | `David Guetta Feat. Akon - Sexy Bitch (Extended Mix)`, был `no_change` | title `Sexy Bitch (Extended Mix)`, `no_change` → **`fix`** |
|
||||
| 2200 | `Девочка ночь.mp3`, title `Девчонка ночь (Лада_Dance)` | `(Лада Dance)` — подчёркивание → пробел |
|
||||
| 2801 | `ДрагРэйсинг (RacingPortal).mp3`, title `DragRacing(radio_edit)` | `DragRacing (radio edit)` |
|
||||
| 2980 | `disk_v2/2 ALT,PUNK/Linkin Park - Brick In The Wall.mp3`, artist `Linkin park` | artist `Linkin Park` |
|
||||
| 3142 | `disk/2 ALT,PUNK/Linkin Park - Brick In The Wall.mp3` (дубль) | то же |
|
||||
| 3878 | `Birthday (DJ Goni Peles Remix)`, title = имя файла целиком | title `Birthday (DJ Goni Peles Remix)`, album начисто |
|
||||
| 3910 | `Supervized Firestarter (Gljiva Funmix)`, artist = `01` | artist `Infected Mushroom Vs. The Prodigy`, album начисто |
|
||||
|
||||
### 🔴 РЕЦИДИВ ПИТФОЛЛА: 3 строки Михаила Круга с ПРОПАВШЕЙ ОТКРЫВАЮЩЕЙ КАВЫЧКОЙ
|
||||
|
||||
Обнаружено проверкой целостности (`awk -F'"' 'NF%2==0'` → строки **2671-2673**):
|
||||
|
||||
```
|
||||
/Михаил Круг/Михаил Круг - Владимирский централ.mp3",empty,... ← путь ПОРЕЗАН, кавычка съедена
|
||||
```
|
||||
|
||||
Причина — правка в предыдущей волне: `old_string` начинался с середины строки
|
||||
(`/storage/Music/!Рэп/Михаил Круг/...`), `patch` съел открывающую `"` и префикс пути.
|
||||
|
||||
**Починено** отдельным `patch` — восстановлены `"/storage/Music/!Рэп/Михаил Круг/...` для всех трёх
|
||||
(`Падал Снег`, `Владимирский централ`, `Браво`). После починки проверка → **0 битых**.
|
||||
|
||||
> 🔴 **ПРАВИЛО (закреплено):** после КАЖДОЙ серии правок прогонять
|
||||
> `/usr/bin/awk -F'"' 'NR>1 && NF%2==0 {print NR": "NF}' tag-fix-plan.csv`
|
||||
> — **пусто = CSV цел**. Это заменяет медленную python-проверку и ловит съеденные кавычки мгновенно.
|
||||
> Записи `NF` по строкам: 11 — базовая; 12–23 — запятые внутри кавычек (НОРМА);
|
||||
> **чётное число кавычек = битая строка** (всегда нечётное число кавычек на корректной строке).
|
||||
|
||||
### 📊 СОСТОЯНИЕ НА КОНЕЦ ТРИНАДЦАТОЙ ВОЛНЫ
|
||||
|
||||
| Показатель | Значение |
|
||||
|---|---:|
|
||||
| Строк в CSV | 7906 (+1 заголовок = 7907 в файле) |
|
||||
| Битых строк | **0** |
|
||||
| Класс C «склейка artist-title в `new_title`» | ✅ **ЗАКРЫТ** |
|
||||
| Класс A «имя папки в artist» (`disk`, `disk_v2`, `Забугр`, `3 SHANSON`, `1 DRIVE`) | **0 / ~113** |
|
||||
| Класс D «водяные знаки» | **0 / 11** |
|
||||
| Номер трека в title (`!Детские/Детский хит`) | **0 / ~20** |
|
||||
| Транслит вместо русского | **0 / ~40** — пример: стр. 2823 `RacinG_Portal` / artist `PaDoNkÈ[NTL]` |
|
||||
| Применение на NAS | **НЕ начато** |
|
||||
|
||||
### ⏭ ЧТО ДЕЛАТЬ ПЕРВЫМ ДЕЛОМ В СЛЕДУЮЩЕЙ СЕССИИ
|
||||
|
||||
1. **Класс A: ~113 строк** — имя техпапки попало в `new_artist`.
|
||||
Признаки: `disk`, `disk_v2`, `Забугр`, `3 SHANSON`, `1 DRIVE`, `04`.
|
||||
Пример: `/ROB DOUGAN - FURIOUS ANGELS.mp3` → artist `disk`, album `1 DRIVE`.
|
||||
Фикс: artist брать из имени файла (или из `cur_artist`, если он чистый).
|
||||
2. **Класс D: 11 строк** — водяные знаки (`zvukoff.ru`, `goldwarez.org`, `muzmo.ru`) из title **вырезать**.
|
||||
3. **Номер в title: ~20** — `!Детские/Детский хит`: `143 БЮРО НАХОДОК` → `Бюро находок`, номер в `new_track`.
|
||||
4. **Транслит: ~40** — `Sbornik_Novij_Rok`, `RacinG_Portal`, `PaDoNkÈ[NTL]` → русский.
|
||||
5. Только после этого — **бэкап в `Music/backup/` и применение** (по «go» Alex).
|
||||
|
||||
> ✅ **ИЗМЕНЕНИЕ ФОРМАТА РАБОТЫ (зафиксировать):** Alex в этой волне требовал
|
||||
> **не останавливаться и не спрашивать** («Продолжай» с моей стороны = норма).
|
||||
> Промежуточный отчёт + вопрос «продолжать?» — Alex принял, но **правильный режим: доводить
|
||||
> класс до конца молча**, докладывать одним сообщением по факту закрытия класса.
|
||||
|
||||
## 🖐 ДВЕНАДЦАТАЯ ВОЛНА: ОТВЕТ ПО МЕТОДУ ПОЛУЧЕН + КЛАСС C 79/271 (2026-09-26)
|
||||
|
||||
### ✅ ОТВЕТ ALEX ПО МЕТОДУ: продолжать ПО ОДНОЙ, не останавливаться
|
||||
|
||||
Reference in new issue
Block a user