[2026-09-26] eagle: personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
7997fa5408
commit
baf0274cb0
1 file changed
+118
-9
@@ -20,22 +20,22 @@ related:
|
||||
|
||||
# Music Tags Repair — TrueNAS (7906 файлов)
|
||||
|
||||
> **Статус: ПЯТНАДЦАТАЯ ВОЛНА (2026-09-26). КЛАСС C, КЛАСС A, КЛАСС 3 — ЗАКРЫТЫ ПОЛНОСТЬЮ.
|
||||
> КЛАСС 4 (транслит) — В РАБОТЕ (~20 из ~40). NAS ДОСТУПЕН, применение НЕ начато.**
|
||||
> **Статус: ШЕСТНАДЦАТАЯ ВОЛНА (2026-09-26). КЛАСС C, КЛАСС A, КЛАСС 3, КЛАСС 4 — ЗАКРЫТЫ ПОЛНОСТЬЮ.
|
||||
> NAS ДОСТУПЕН, применение НЕ начато.**
|
||||
> Работа — ручной проход по CSV `tag-fix-plan.csv` построчно; правка скриптов ЗАПРЕЩЕНА.**
|
||||
> ✅ **Класс A («имя техпапки в artist/album») — ЗАКРЫТ ПОЛНОСТЬЮ: 0 остатков.**
|
||||
> (`Забугр`, `disk`, `disk_v2`, `1 DRIVE`, `5 POPSA`, `3 SHANSON` — все вычищены.)
|
||||
> ✅ **Класс 3 (номер трека в `new_title`) — ЗАКРЫТ ПОЛНОСТЬЮ.** Блок `!Детские/Детский хит/`
|
||||
> — все **156 строк**: номер → `new_track`, title чистый, artist пустой, album `Детский Хит Сезона`.
|
||||
> ✅ **Класс 4 (транслит) — в работе: ~20 из ~40.** Закрыты: `!A Not sorted/Sbornik_Novij_Rok`
|
||||
> (10 строк), Мумий Тролль, Мара, Дельфин, Каста, Глюкоза, Потап и Настя, Наутилус Помпилиус
|
||||
> (альбомы Атлантида / Раскол / Подъём).
|
||||
> ❌ Осталось: транслит Наутилуса (`Яблокитай` и далее), строки с `no_change` (~1100, не проверялись),
|
||||
> транслит в `!Рэп/НТЛ`, `Df1`.
|
||||
> Детали и таблицы — «ПЯТНАДЦАТАЯ ВОЛНА».
|
||||
> ✅ **Класс 4 (транслит) — ЗАКРЫТ ПОЛНОСТЬЮ.** Наутилус (74), Король и Шут (34), Чиж & Со (12),
|
||||
> Центр (22), НТЛ (39), `Sbornik_Novij_Rok` (~90), На-На, Леонид Агутин, Каста, Кино, Пилот,
|
||||
> Влад Жуков, ГрОб. Ложные метки не тронуты (западные группы латиницей).
|
||||
> ❌ Осталось: **строки `no_change` (~1100, не проверялись)** — последний непроверенный пласт;
|
||||
> затем бэкап `Music/backup/` → применение → приёмка в UI Alex → Music-библиотека Jellyfin.
|
||||
> Детали и таблицы — «ШЕСТНАДЦАТАЯ ВОЛНА».
|
||||
> ✅ **Проверка целостности (быстрая, без python):**
|
||||
> `/usr/bin/awk -F'"' 'NR>1 && NF%2==0 {print NR": "NF}' tag-fix-plan.csv` → пусто = 0 битых.
|
||||
> **CSV: 7907 строк (7906 данных + заголовок), 0 битых. Ручных правок: 311+.**
|
||||
> **CSV: 7907 строк (7906 данных + заголовок), 0 битых. Ручных правок: ~540.**
|
||||
>
|
||||
> ---
|
||||
>
|
||||
@@ -70,6 +70,115 @@ related:
|
||||
> Прогонялись **девять волн** проверок: см. таблицу волн ниже.
|
||||
> Итог v7: «требует решения» **4**, medium **5811**, high **958**, mojibake = 0, остаточный mojibake = 0.
|
||||
|
||||
## 🖐 ШЕСТНАДЦАТАЯ ВОЛНА: КЛАСС 4 (ТРАНСЛИТ) ЗАКРЫТ ПОЛНОСТЬЮ (2026-09-26)
|
||||
|
||||
### ✅ КЛАСС 4 — ЗАКРЫТ ЦЕЛИКОМ
|
||||
|
||||
Метка `translit artist tag; folder is Cyrillic` стояла на **116 строках**, но большинство — ложные
|
||||
(западные группы латиницей — норма). Закрыты все реальные русские группы:
|
||||
|
||||
| Блок | Строк | Что делали |
|
||||
|---|---:|---|
|
||||
| `!Rock&Folk/Наутилус Помпилиус/` | **74** | artist `Nautilus Pompilius` → `Наутилус Помпилиус`. Правка по 6 уникальным парам `artist,album`: `De Luxe collection` (21), `Gold Age` (10), `Атлантида` (11), `Подъём` (12), `Раскол` (10), `Яблокитай` (10) |
|
||||
| `!Rock&Folk/Король и Шут/Король и шут*/` | **34** | artist `Korol&shut` → `Король и Шут`; 17 уникальных title транслитом → русскими (Он не знает что такое жить, Сапоги мертвеца, История о мёртвой женщине, Весёлые тролли, Валет и дама, Истинный убийца, Сказка про дракона, Король и Шут, Лесник, Два друга, Помоги мне, Собрание, Паника в селе, Инструмент, Кукольный театр, Отец и маски, Охотник) |
|
||||
| `!Rock&Folk/Чиж & Со/Эрогенная Зона/` | **12** | artist `CHIJ` → `Чиж & Со`; 10 title транслитом → русскими. **`O.K.` и `STILL LIFE` — оригинальные названия латиницей, оставлены** |
|
||||
| `!Рэп/Центр/` | **22** | artist `Centr`/`CENTR` → `Центр` (два регистра — два батча). `new_title` `CENTR - Город дорог` → `Город дорог` |
|
||||
| `!Рэп/НТЛ/` | **39** | artist `NTL` → `НТЛ` (осторожно: `,NTL,,` задел строку `Два года в деле` — восстановлено вручную) |
|
||||
| `!A Not sorted/Sbornik_Novij_Rok/` | **~55** | главный улов. artist+title транслитом → русскими. Блок содержит русские рок-группы с латинскими тегами |
|
||||
| `!Retro/На-На_-_*`, `Леонид Агутин` | 3 | `Na-Na`/`Na-Navsegda` → `На-На`/`На-На всегда`; `Leonid Agutin`/`Dekameron` → `Леонид Агутин`/`Декамерон` |
|
||||
| `!Рэп/Каста/` + `!Retro` + `!Radio` | 6 | title транслитом → русскими; **artist `Баста` в `KASTA - Goryacheye Vremya` ОШИБКА → `Каста`** |
|
||||
| `!Rock&Folk/!rock_o_pop/Кино` | 1 | `gruppa krovi`/`Kino` → `Группа крови`/`Кино` |
|
||||
| `!Rock&Folk/ГрОб` | 1 | `vse idet po planu`/`grob` → `Всё идёт по плану`/`Гражданская Оборона` |
|
||||
| `!Rock&Folk/Пилот/misc/seasons___*` | 3 | `Dom`/`02`/`seasons 05` → `Дом`/`02`/`Весёлый дождь (live)`, track 2 и 5 |
|
||||
| `Sbornik_Novij_Rok/019_Влад Жуков` | 1 | `Vlad Zhukov` → `Влад Жуков` |
|
||||
| `Sbornik_Novij_Rok/039_Король и Шут` | 1 | `Korol' I Shut`/`Dagon` → `Король и Шут`/`Дагон` |
|
||||
| `Sbornik_Novij_Rok/033_Fleur` | 1 | title `My Nikogda Ne Umrem` → `Мы никогда не умрём`; **artist остался `Flёur`** (см. ниже) |
|
||||
|
||||
**Не тронуты (латиница корректна) — ВАЖНО НЕ ПРАВИТЬ ПОВТОРНО:**
|
||||
`Green Apelsin` (44 строки — проект так и называется), `Guf` (31), `DOLPHIN`, `Truffele`
|
||||
(участник проектов Би-2, feat. Truffele), `Flёur`/`Flëur` (7 строк — группа пишется латиницей),
|
||||
`Flobots`, `Fly Agaric`, `Melee`, все западные (Metallica, Nickelback, Oasis, Korn, Slipknot,
|
||||
Coldplay, Muse, Yello, Ace of Base, Europe, Scooter, Infected Mushroom, Rammstein, Enigma и др.).
|
||||
|
||||
### 🔴 ДВА ОТКАТА ПО ЗАМЕЧАНИЯМ ALEX (критично для будущих сессий)
|
||||
|
||||
Alex поймал две ошибки нормализации — обе откачены:
|
||||
|
||||
| # | Ошибка ассистента | Замечание Alex | Фикс |
|
||||
|---|---|---|---|
|
||||
| 1 | `Flёur` → `Флёр` | **«Флёр должен был быть Flëur чтобы не создавать дубликат»** | откат на `Flёur` — в CSV уже 7 строк латиницей (стр. 3311-3316, 3324, 6315), кириллица создала бы **дубликат исполнителя в Jellyfin** |
|
||||
| 2 | `Truffele` → `Труффеле` | **«И чё за Труффеле? Походу ошибка»** | откат на `Truffele`, `action` → `no_change` |
|
||||
|
||||
> 🔴 **ПРАВИЛО (новое, закрепить):** перед «русификацией» транслита — **проверить весь файл
|
||||
> `grep` на это имя**. Если латинское написание уже встречается в других строках (или артист
|
||||
> реально пишется латиницей — `Guf`, `DOLPHIN`, `Green Apelsin`, `Flёur`, `Truffele`) —
|
||||
> **НЕ переводить**, иначе получаются два разных исполнителя для одного и того же.
|
||||
> Транслит — дефект только тогда, когда русская группа **везде** записана латиницей и кириллицы
|
||||
> для неё в файле нет.
|
||||
|
||||
> ✅ **Green Apelsin** — Alex: «уточни поиском, мне казалось он такой и есть». Подтверждено:
|
||||
> проект пишется латиницей, 44 строки уже консистентны → **не трогать**.
|
||||
|
||||
### 🛠 МЕТОД: БАТЧ-ПРАВКИ `patch mode=patch` — ПОДТВЕРЖДЁН РАБОЧИМ
|
||||
|
||||
Alex разрешил: **«Можешь точечно использовать батч правки убедившись что они применятся правильно»**.
|
||||
|
||||
- Формат: `patch mode=patch` с несколькими ханками `*** Update File:` → `@@` → `-старое` / `+новое`.
|
||||
- **Атомарность:** если один ханк не найдён — не пишется **ничего** (`Patch validation failed...
|
||||
no files were modified`). Безопасно: частичной порчи файла не бывает.
|
||||
- **Обязательно после каждого батча** проверять целостность:
|
||||
```bash
|
||||
wc -l < tag-fix-plan.csv # 7907
|
||||
awk '!/\r$/{c++} END {print "без CR: "c+0}' tag-fix-plan.csv # 0
|
||||
awk -F'"' '{print NF-1}' tag-fix-plan.csv | awk '$1%2!=0' | wc -l # 0
|
||||
```
|
||||
- **Контроль структуры:** распределение числа полей должно совпадать с бэкапом
|
||||
(`awk -F',' 'NR>1 {print NF}' | sort -n | uniq -c`). Расхождение = сдвиг колонок.
|
||||
На этой волне: 4515×11, 259×12, 2604×13, 232×14 … (запятые внутри незакавыченных полей — норма,
|
||||
так было и до правок).
|
||||
|
||||
### ⚠️ ПИТФОЛЛ: `replace_all` по короткому маркеру задевает `cur_*`-колонки
|
||||
|
||||
Правка `,NTL,,` → `,НТЛ,,` через `replace_all` зацепила строку `Два года в деле`, где
|
||||
`new_title` тоже стал `ГОДА В ДЕЛЕ` (потерял «Два»). Восстановлено отдельным `patch`.
|
||||
**Правило:** для `replace_all` брать маркер максимальной длины, включающий соседнее поле
|
||||
(`,NTL,`, а не `,NTL,,`), либо править целой строкой через `mode=patch`.
|
||||
|
||||
### ⚠️ ПИТФОЛЛ: `replace_all` по `,Artist,` задевает `cur_artist`
|
||||
|
||||
Правка `,CENTR,` → `,Центр,` заменила только `new_artist`, а `cur_artist` остался — но при
|
||||
`replace_all` по паре `,Nautilus Pompilius,<album>` задевались **обе** колонки (cur и new).
|
||||
Это допустимо для `cur_*` (они исходные, не применяются), но **`path` и `cur_*` править нельзя
|
||||
без явного слова Alex**. Проверка после: `awk -F',' '$7=="Nautilus Pompilius"'` → 0.
|
||||
|
||||
### 📊 СОСТОЯНИЕ НА КОНЕЦ ШЕСТНАДЦАТОЙ ВОЛНЫ
|
||||
|
||||
| Показатель | Значение |
|
||||
|---|---:|
|
||||
| Строк в CSV | 7906 (+1 заголовок = 7907 в файле) |
|
||||
| Битых строк | **0** |
|
||||
| CRLF-потерь | **0** |
|
||||
| Ручных правок (`source = manual (user decision)`) | **~540** |
|
||||
| Класс C «склейка artist-title в `new_title`» | ✅ **ЗАКРЫТ** |
|
||||
| Класс A «имя техпапки в artist/album» | ✅ **ЗАКРЫТ (0 остатков)** |
|
||||
| Класс 3 «номер трека в title» | ✅ **ЗАКРЫТ (156 строк)** |
|
||||
| Класс 4 «транслит вместо русского» | ✅ **ЗАКРЫТ (все реальные группы)** |
|
||||
| Строки `no_change` (~1100) | 🔴 **НЕ ПРОВЕРЯЛИСЬ** |
|
||||
| Применение на NAS | **НЕ начато** |
|
||||
|
||||
**Бэкапы этой волны:** `tag-fix-plan.csv.bak-20260926-180619` (+ серия более ранних).
|
||||
|
||||
### ⏭ ЧТО ДЕЛАТЬ ПЕРВЫМ ДЕЛОМ В СЛЕДУЮЩЕЙ СЕССИИ
|
||||
|
||||
1. **Проверить строки `no_change` (~1100)** — единственный непроверенный пласт. Известный мусор:
|
||||
- `01` в artist, вода `zvukoff.ru` / `goldwarez.org` / `muzmo.ru` / `www.mp3arena.ru` в title;
|
||||
- `Рок-Группа - Кошка` (стр. 6319), `TechnoRock(A1ElektroEnerg` (обрезано),
|
||||
`34 ashlee simpson - l.o.v.e` (номер в artist), `09 Spencer Hill - Cool` (вода),
|
||||
`10 Boom (Bimbo Jones Mix)` (artist пусто).
|
||||
- Предупреждение: часть `no_change` **легитимна** (`O.K.`, `STILL LIFE` у Чижа, `Green Apelsin`,
|
||||
`Guf`, западные группы) — разбирать глазами, а не массово.
|
||||
2. Только после этого — **бэкап `Music/backup/` → применение → приёмка в UI Alex** → Music-библиотека.
|
||||
|
||||
## 🖐 ПЯТНАДЦАТАЯ ВОЛНА: КЛАСС 3 ЗАКРЫТ, КЛАСС 4 НАЧАТ (2026-09-26)
|
||||
|
||||
### ✅ КЛАСС 3 (номер трека в `new_title`) — ЗАКРЫТ ПОЛНОСТЬЮ (156 строк)
|
||||
|
||||
Reference in new issue
Block a user