[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
c8778307e9
commit
204b254cc5
2 files changed
+142
-15
No files matched your search
@@ -5508,6 +5508,118 @@ track 118
|
||||
**неподряд**, сортировка битая; если один `folder`+`field` повторяется с разными `new` —
|
||||
это сборник, не дефект.
|
||||
|
||||
## ✅ ЧИСТКА ДИФФА ОТ ШУМА `track N → N/M` (2026-09-27, финал сессии 29-окти)
|
||||
|
||||
> **ТРИГГЕР:** Alex: «**я думаю трек 6 не надо править на "6/14" ты как считаешь?**»
|
||||
|
||||
### 🔑 ПОДТВЕРЖДЕНО ФАКТОМ ИЗ БД: `track_number` ХРАНИТСЯ ЦЕЛЫМ
|
||||
|
||||
```sql
|
||||
SELECT track_number, COUNT(*) FROM media_file
|
||||
WHERE path NOT LIKE 'backup%' GROUP BY track_number
|
||||
```
|
||||
Дал: `0` (1581) · `1` (510) · `2` (466) · … · `24` (22) — **только целые**, без `/M`
|
||||
и без ведущих нулей.
|
||||
|
||||
**Следствие:** `6 → 6/14` и `8 → 08` — **значение трека НЕ меняется**. База всё равно
|
||||
приведёт его к целому. Это форматная косметика, не правка.
|
||||
|
||||
### ✅ УБРАНО 118 строк шума
|
||||
|
||||
| Скрипты | Убрано | Осталось |
|
||||
|---|---:|---:|
|
||||
| `/tmp/drop_track_noise.py` (`N → N/M`) | 117 | 945 |
|
||||
| добор последней `8 → 08` | 1 | **945** |
|
||||
|
||||
⚠️ **ПИТФОЛЛ СЧЁТА:** первый подсчёт через `awk ... | grep -c "/"` дал **33** строки —
|
||||
потому что `awk -F','` разваливает пути с запятыми в кавычках и часть строк теряется.
|
||||
Реальный объём — **117**. Считать надо CSV-парсером, не `awk` по кавычкам.
|
||||
|
||||
**Бэкапы:** `/tmp/DIFF-v3.bak-20260927-205211.csv`, `/tmp/DIFF-v3.bak2-*.csv`
|
||||
|
||||
### 🔴 РЕШЕНИЕ ALEX (зафиксировано): `N/M` в треках НЕ ПРАВИМ
|
||||
|
||||
Причина, названная Alex и подтверждённая фактом: значение не меняется, правится впустую.
|
||||
Дополнительно: `TRCK` с `/` ломает часть парсеров и сортировку в Navidrome.
|
||||
|
||||
## 🔴 РЕШЕНИЕ ALEX: ПАПКУ `Разное` НЕ РАЗГРЕБАЕМ
|
||||
|
||||
> Alex: «**нет. план такой и был что папку Разное мы кидаем как альбом "Разное" а не разгребаем.**»
|
||||
|
||||
Класс из 76 файлов (папки-мусорки внутри артиста) — **ЗАКРЫТ БЕЗ ДЕЙСТВИЙ**:
|
||||
|
||||
```
|
||||
44 !Барды/Владимир Высоцкий/Разное album='Разное'
|
||||
14 !Rock&Folk/Пилот/Избранное album='Избранное'
|
||||
10 !Rock&Folk/ДДТ/2003 - песни album='Песни'
|
||||
3 !Rock&Folk/Наутилус Помпилиус/2000 - песни album='песни'
|
||||
3 !Rock&Folk/Rammstein/misc album='misc'
|
||||
1 !A Not sorted/SD-card-2026-05/Агата Кристи album='Избранное'
|
||||
1 !Детские/Из чего же.mp3 album='' → починен, см. ниже
|
||||
```
|
||||
|
||||
🔑 **Это ПЛАН, а не дефект.** Папка-мусорка намеренно становится альбомом-мусоркой.
|
||||
**НЕ «улучшать»** — Николай/следующая сессия: не предлагать разгребать `Разное`,
|
||||
`Избранное`, `Песни`, `misc`. Детектор `/tmp/diag_root_junk.py` ловит их как «мусор» —
|
||||
это **ложное срабатывание по определению плана**.
|
||||
|
||||
## ✅ ФИКС ОПЕЧАТКИ `Андервуд` + ДЫРКИ `!Детские` (2026-09-27, финал)
|
||||
|
||||
> **ТРИГГЕР:** Alex: «**Андервуд надо исправить еще**» → «**`!Детские/Из чего же.mp3` - где альбом**»
|
||||
|
||||
### 1. `Андервуд` (опечатка протекла из имени папки в `album`)
|
||||
|
||||
```
|
||||
folder !A Not sorted/SD-card-2026-05/Андервуд
|
||||
cur_artist Ундервуд ← уже правильное написание
|
||||
new_album Андервуд → Ундервуд ← ❌ было имя папки с опечаткой
|
||||
```
|
||||
Папка на диске названа с опечаткой (`А` вместо `У`); правило корня взяло её как есть.
|
||||
Доказательство правильного значения — `cur_artist` у того же файла.
|
||||
|
||||
### 2. `!Детские/Из чего же.mp3` (потеря значения)
|
||||
|
||||
```
|
||||
cur_album Íåèçâåñòíîå íàçâàíèå ← битьё CP1251 = «Неизвестное название»
|
||||
new_album (пусто) → Детские
|
||||
```
|
||||
Генератор распознал битый `cur_album` как мусор и **обнулил**, но подставил значение
|
||||
в `new_albumartist = Детские песни` — не в то поле. `album` остался пустым, диф показывал
|
||||
`[Unknown Album] → (пусто)`, т.е. план **сотрал бы тег**. Файл лежит в корне `!Детские`.
|
||||
|
||||
### Скрипт и верификация
|
||||
|
||||
`/tmp/fix_v3_typos.py` — правит **только `/tmp/apply-plan-v3.csv`**,
|
||||
`APPLY-PLAN.csv` (канон/RC) **НЕ ТРОНУТ**. Бэкап: `/tmp/apply-plan-v3.csv.bak-20260927-204950`.
|
||||
Проверено `grep` по диффу:
|
||||
```
|
||||
строка 2: Андервуд — album: Андервуд -> Ундервуд ✅
|
||||
строка 28: !Детские — album: [Unknown Album] -> Детские ✅
|
||||
```
|
||||
|
||||
## 📊 ФИНАЛЬНОЕ СОСТОЯНИЕ ДИФФА (2026-09-27, сессия 29-окти — ЗАКРЫТА)
|
||||
|
||||
| Артефакт | Значение |
|
||||
|---|---|
|
||||
| `~/Downloads/music-tags/DIFF-base-vs-applyplan-v3.csv` | **945 записей** |
|
||||
| `md5` | `a89d7b56ce65835c361395c5b7d1064d` |
|
||||
| Сортировка | `field` **по алфавиту**: `album → albumartist → genre` |
|
||||
|
||||
```
|
||||
album 28 склейки, правило корня, опечатки папок
|
||||
albumartist 6 The Prodigy, Дискотека Авария, Потап, Король и Шут,
|
||||
Eminem (<2 разных>), Ленинград (<2 разных>)
|
||||
genre 911 снятие «!» префиксов
|
||||
```
|
||||
`track` в диффе **0** — весь блок убран как шум (см. выше).
|
||||
БД 7861 ↔ план 7861, сопоставлено 7861, **не найдено 0**.
|
||||
|
||||
### 🔴 ОСТАЁТСЯ НА РЕШЕНИЕ ALEX
|
||||
|
||||
`Sbornik_Novij_Rok` — сборник, `genre` не одно значение (`Folk/Pop/Rock/Punk/Rap`) →
|
||||
N ПАПКА-строк по одному полю. Alex решения не давал; для сборника это ожидаемо,
|
||||
но требует подтверждения формы вывода.
|
||||
|
||||
## 🔴 ОСТАВШИЙСЯ ДЕФЕКТ: `!Rock&Folk/Rammstein/misc` — 3 файла
|
||||
|
||||
Обнаружен Alex в конце сессии: «**`!Rock&Folk/Rammstein/misc` - album - rammstein - неправильно**».
|
||||
|
||||
Reference in new issue
Block a user