[2026-09-27] eagle: family/how-to/navidrome-truenas-android.md personal/plans/music-artist-albumartist-repair.md
This commit is contained in:
1 parent
0f1cc14ab2
commit
3a7955cb36
2 files changed
+108
-16
No files matched your search
@@ -396,9 +396,20 @@ artist=Maria Makarova (organ) ← исполнитель вмес
|
||||
`~/Downloads/music-tags/REPORT-new-album-equals-cur.csv` (6202 строки) +
|
||||
`REPORT-album-kept-all-folders.csv` (558 папок с классификацией kind).
|
||||
**Уточнено: реальный мусор — 9 папок / 265 треков** (только значения-огрызки в скобках).
|
||||
- [ ] 🔴 **БЛОКЕР: решение Alex по правке `album` для 9 папок** — какой `album` ставить
|
||||
(имя папки / реальный альбом из источника). Полный разбор —
|
||||
[[personal/plans/music-artist-albumartist-repair]] §СЕССИЯ 18.
|
||||
- [x] ~~Решение Alex по правке `album` для мусорных папок~~ → ✅ **ПРАВИЛА ПОЛУЧЕНЫ 2026-09-27**:
|
||||
- файл в **корне папки артиста** → `album` = имя папки артиста (`Дискотека Авария`)
|
||||
- файл в **подпапке-альбоме** → `album` = имя подпапки (`Москва пьёт пиво`)
|
||||
- **папка-сборник** (`!Retro`, `!Radio`) → `album='Retro'`, `albumartist='Various Artists'`
|
||||
- правило корня подтверждено из Zulip (сообщение 128410): «то что в корне лежит мы считаем
|
||||
одним альбомом». **Атрибуты и скобочный мусор разобраны — 306 строк.**
|
||||
- ⚠️ **Открыто:** расхождение «убрать скобки» vs «имя подпапки» на 3 папках
|
||||
(`Филосовские`, `Разное`, `Из сказок`) — ждёт ответа Alex.
|
||||
Разбор — [[personal/plans/music-artist-albumartist-repair]] §СЕССИЯ 18.
|
||||
- [ ] 🔴 **Сгенерировать НОВЫЙ дифф** со всеми 306 строками `album` внутри.
|
||||
**Старый `DIFF-new-vs-38.csv` НЕ трогать** (прямое указание Alex).
|
||||
- [ ] 🔴 **Валидатор смысла `new_album`** — паттерн «значение целиком в скобках» `^\(.+\)$`,
|
||||
заглушки (`нет альбома`, `NULL`, `no title`, `Non spécifié`), спам-URL. В пайплайне ОТСУТСТВУЕТ:
|
||||
это и есть причина дефекта (дифф двух планов мусор не ловит — он стоит в обоих).
|
||||
- [ ] ⚠️ **Проверить, не проиндексировались ли бэкап-папки** (8043 трека vs 7861 на диске,
|
||||
т.е. +182) — запрос к БД Navidrome. ⚠️ **Скан завершён, проверка НЕ выполнена.**
|
||||
`.ndignore` создан ПОСЛЕ первого скана → нужен рескан или проверка БД.
|
||||
|
||||
@@ -19,15 +19,18 @@ related:
|
||||
- '[[personal/tech/music-tags-repair-truenas]]'
|
||||
- '[[personal/plans/tagwriter-container]]'
|
||||
- '[[family/how-to/navidrome-truenas-android]]'
|
||||
status: session18-navidrome-deployed-album-kept-defect-open
|
||||
status: session18-navidrome-deployed-album-rules-recovered
|
||||
# Music `artist` + `albumartist` Repair — правила Alex и ход работ
|
||||
|
||||
## 🟣 СЕССИЯ 18 (2026-09-27) — NAVIDROME РАЗВЁРНУТ, ВСКРЫТ ДЕФЕКТ-КЛАСС «ОСТАВЛЕНО КАК ЕСТЬ»
|
||||
## 🟣 СЕССИЯ 18 (2026-09-27) — NAVIDROME РАЗВЁРНУТ, ДЕФЕКТ-КЛАСС ВСКРЫТ, ПРАВИЛА ВОССТАНОВЛЕНЫ ИЗ ZULIP
|
||||
|
||||
> **СТАТУС СЕССИИ 18:** Navidrome ✅ развёрнут и работает (см. ниже + `[[family/how-to/navidrome-truenas-android]]`).
|
||||
> Вскрыт дефект-класс `new_album == cur_album` (6202 строки, 79%). Уточнён масштаб реального мусора:
|
||||
> **9 папок / 265 треков** (не 28 папок). **Решение о правке `album` НЕ принято — ждёт Alex.**
|
||||
> Артефакты: `REPORT-new-album-equals-cur.csv`, `REPORT-album-kept-all-folders.csv`.
|
||||
> Вскрыт дефект-класс `new_album == cur_album` (6202 строки, 79%). Масштаб реального мусора:
|
||||
> **9 папок / 265 треков** (не 28 папок). **Правила `album` восстановлены из базы Zulip**
|
||||
> (см. §ПРАВИЛА ВОССТАНОВЛЕНЫ). **Финальные решения по 306 строкам приняты.**
|
||||
> ⚠️ Один открытый вопрос — расхождение двух правил на 3 папках Высоцкого (ждёт Alex).
|
||||
> Артефакты: `REPORT-new-album-equals-cur.csv`, `REPORT-album-kept-all-folders.csv`, `ALBUM-FIX-TABLE.csv`.
|
||||
> **Дальше: генерация НОВОГО диффа (старый `DIFF-new-vs-38.csv` НЕ трогать).**
|
||||
|
||||
> **Контекст:** Navidrome поднят и просканировал библиотеку (8043 трека). Alex открыл UI и
|
||||
> спросил: «**Откуда альбомы в скобках взялись?** Типа `Дискотека Авария` — для корня,
|
||||
@@ -246,16 +249,94 @@ Alex: «**Чем тебе не угодили те которые не в ско
|
||||
> **Правило: мусор определяется по паттерну «значение целиком в скобках», а не по «странности»
|
||||
> названия. Отсутствие скобок = значение легитимно.**
|
||||
|
||||
### ⏭ Что нужно решить (ждёт Alex)
|
||||
### 🔴 ПРАВИЛА `album` ВОССТАНОВЛЕНЫ ИЗ БАЗЫ ZULIP (решающий шаг сессии)
|
||||
|
||||
1. **Валидатор смысла `new_album`** — паттерны: огрызок в скобках `^\(.+\)$`, заглушки
|
||||
Alex: «**Читай базу зулип как мы его делали и новый дифф готовь чтобы там эта хуйня была
|
||||
исправлена. Старый диф не трогай.**» → запрос в `zulip-database-1` восстановил правила.
|
||||
|
||||
> 🔑 **МЕТОД-УРОК:** правила работы с `album` **обсуждались в Zulip и нигде больше** — ни в скилле,
|
||||
> ни в доке, ни в комментариях скрипта. Первым шагом надо было идти в Zulip DB, а не
|
||||
> переспрашивать Alex. **Запрос:** `zerver_message` + `zerver_stream`, фильтр
|
||||
> `up.full_name='Alex'` + диапазон `date_sent`. Ключевые сообщения: **127513–127593, 128410.**
|
||||
|
||||
**Правило КОРНЯ папки артиста (сообщение 128410, дословно):**
|
||||
> «**Муммий Тролль, Агата, Ария, Rammstein, Жуки, Князь, Benassi, банд эрос — то что в корне
|
||||
> лежит мы считаем одним альбомом. и albumartist соответственно титульного исполнителя ставим.
|
||||
> не надо ничего cur брать! редактируешь блядь csv!**»
|
||||
|
||||
**Формат `!Radio` — «Категория - Подпапка» (127513–127507):**
|
||||
```
|
||||
y OOF → Radio - OOF
|
||||
z Старое → Radio - Старое
|
||||
1 DRIVE / 2 ALT,PUNK / 5 POPSA → Radio - DRIVE / Radio - ALT,PUNK / Radio - POPSA
|
||||
2009-04 → 2009-04 Radio (год-месяц вперёд)
|
||||
2008-07, 2008-04 → + Radio
|
||||
t 2009-07 c6Or_NICK → 2009-07 c6Or_NICK (без "!Radio")
|
||||
s 2009-08 Drinkin Summer → 2009-08 Drinkin Summer
|
||||
```
|
||||
|
||||
**Категории целиком (127523):**
|
||||
```
|
||||
!ZabuGor → "Pop - ZabuGor"
|
||||
!Retro → "Retro"
|
||||
Забугр → "Retro - Забугор"
|
||||
```
|
||||
|
||||
**`misc`/`base`/`plux` — имя ПОДпапки, НЕ родителя (127436, 127489):**
|
||||
```
|
||||
Rammstein/misc → album = "Rammstein - misc" (НЕ "Rammstein"! — отдельная правка)
|
||||
base/plux/pan → не надо, пусть будет родительский альбом
|
||||
!rock_o_pop → убрать "!"
|
||||
!Классика → убрать "!"
|
||||
```
|
||||
|
||||
### ✅ ФИНАЛЬНЫЕ РЕШЕНИЯ ПО 306 СТРОКАМ (Alex, конец сессии)
|
||||
|
||||
| Случай | Правило |
|
||||
|---|---|
|
||||
| Файл в **корне папки артиста** | `album` = **имя папки артиста** (`Дискотека Авария` вместо `(Авария)`) |
|
||||
| Файл в **подпапке-альбоме** | `album` = **имя подпапки** (`Москва пьёт пиво`, `Старые хиты`) |
|
||||
| **Папка-сборник** (`!Retro`, `!Radio`) | общее правило сборника: `album='Retro'`, `albumartist='Various Artists'` |
|
||||
| `Птаха - Красивые, богатые (2009)` | имя папки как альбом — ОК |
|
||||
|
||||
> 🔴 **Скобочный мусор в подпапках (`(Авария)` в `Москва пьёт пиво`/`Старые хиты`) — это мусор
|
||||
> ПОВЕРХ правильного имени подпапки. Ставить имя подпапки, а не снятые скобки (`Авария`).**
|
||||
|
||||
### ⚠️ ОТКРЫТЫЙ ВОПРОС (единственный, ждёт ответа Alex)
|
||||
|
||||
Расхождение между двумя правилами — «убрать скобки» vs «имя подпапки» — **на 3 папках**:
|
||||
|
||||
| Папка | A: скобки убрать | B: имя подпапки | файлов |
|
||||
|---|---|---|---:|
|
||||
| `Владимир Высоцкий/Филосовские` | `Философские` | `Филосовские` (опечатка в имени!) | 97 |
|
||||
| `Владимир Высоцкий/Разное` | `Высоцкий - Разное` | `Разное` | 44 |
|
||||
| `Владимир Высоцкий/Из сказок` | `Из Сказок` | `Из сказок` (нижний регистр) | 16 |
|
||||
|
||||
**Совпадают (расхождения нет):** `Блатные`, `Морские`, `Спортивные`.
|
||||
|
||||
### ✅ Артефакты сессии 18
|
||||
|
||||
| Файл | Что |
|
||||
|---|---|
|
||||
| `~/Downloads/music-tags/REPORT-new-album-equals-cur.csv` | **6202 строки**: `folder, album_kept, count, path, title, artist, albumartist, genre` |
|
||||
| `~/Downloads/music-tags/REPORT-album-kept-all-folders.csv` | 558 папок: `kind, folder, files, unique_albums, values` |
|
||||
| `~/Downloads/music-tags/ALBUM-FIX-TABLE.csv` | 306 строк: `folder, cur_album, new_album, path, title` (черновик, до финальных правил) |
|
||||
| `/tmp/report_kept_album.py` | группировка папка → значение → count |
|
||||
| `/tmp/report_all_junk_folders.py` | классификация папок (МУСОР/СМЕШАННАЯ/OK) |
|
||||
| `/tmp/check_diff_coverage.py` | проверка покрытия дефекта диффом (7,6%) |
|
||||
| `/tmp/where_avaria.py` | где физически лежат файлы `(Авария)` |
|
||||
| `/tmp/album_rules_v2.py` | применение финальных правил (КОРЕНЬ/ПОДПАПКА/СБОРНИК) |
|
||||
|
||||
### ⏭ Что осталось
|
||||
|
||||
1. 🔴 **Ждёт Alex:** ответ по 3 папкам (A или B выше).
|
||||
2. **Сгенерировать НОВЫЙ дифф** со всеми 306 строками `album` внутри. **Старый
|
||||
`DIFF-new-vs-38.csv` НЕ трогать** (прямое указание Alex).
|
||||
3. **Валидатор смысла `new_album`** — паттерны: огрызок в скобках `^\\(.+\\)$`, заглушки
|
||||
(`нет альбома`, `NULL`, `no title`, `Album`, `Non spécifié`), спам-URL. **В пайплайне его нет.**
|
||||
2. Для «скобочных» папок — какой `album` ставить: реальное название из внешнего источника,
|
||||
имя подпапки, или имя папки артиста. **Кандидат-правило:** `album` = имя папки
|
||||
минус год; для `misc`/`disk`/`base`/`plux` — имя ПОДпапки; для корня артиста — имя папки.
|
||||
3. Регистровые дубли (`Четверо Парней`/`Четверо парней`, `Бунт на Корабле`) — канонизация.
|
||||
4. 🔴 **Правило «на всю папку», которого не хватало:** `album` решать на уровне ПАПКИ,
|
||||
не построчно. Построчное наследование `cur_album` — корень дефекта.
|
||||
4. Регистровые дубли (`Четверо Парней`/`Четверо парней`, `Бунт на Корабле`) — канонизация.
|
||||
5. 🔴 **Правило «на всю папку»:** `album` решать на уровне ПАПКИ, не построчно.
|
||||
Построчное наследование `cur_album` — корень дефекта.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user