From 81ef7865b7a788c60ddf35c66e8b15a74e474bc7 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sat, 26 Sep 2026 20:41:50 +0600 Subject: [PATCH] [2026-09-26] eagle: personal/tech/music-tags-final-review.md personal/tech/music-tags-repair-truenas.md --- personal/tech/music-tags-final-review.md | 23 ++++--- personal/tech/music-tags-repair-truenas.md | 78 +++++++++++++++++++++- 2 files changed, 90 insertions(+), 11 deletions(-) diff --git a/personal/tech/music-tags-final-review.md b/personal/tech/music-tags-final-review.md index 6b50c0e9..953b75e5 100755 --- a/personal/tech/music-tags-final-review.md +++ b/personal/tech/music-tags-final-review.md @@ -18,15 +18,18 @@ related: _Обновлено: 2026-09-26. Источник: `~/Downloads/music-tags/tag-fix-plan.csv`._ -> ## ✅ 31-я волна ЗАКРЫТА — написания артистов сведены, сводки честные +> ## ✅ 32-я волна ЗАКРЫТА — написания артистов сведены, сводки честные > **Построчное чтение завершено: 1–7906 (100%).** > 28-я волна: **сквозная нумерация треков по дискам** (9 многодисковых альбомов) — ✅ ГОТОВО. > 29-я волна: **5 замечаний Alex** + 597 треков без `new_track` — ✅ применено. > 30-я волна: **`single` переопределён** = артист ровно с 1 треком; Benassi добит из треклистов. > 31-я волна: **сведены все написания артистов** + срезан номер из `artist` + мусор `.wma`. -> ✅ **Итог: `single` 664 + `multi` 6638 = 7302** (пустой `artist` выброшен из обеих сводок). +> 32-я волна: **срезан префикс диджея-сборника** (`DJ Tiesto - <артист>` ×13), +> инициалы → полные имена (`А. Апина`, `Пугачева`, `Губин`, `А.Маршал`, `К. Орбакайте`…), +> мусор-плейсхолдеры (`Сбрник`, `Классика`), `В. Высоцкий - Песня о друге (Вертикаль OST)`. +> ✅ **Итог: `single` 652 + `multi` 6650 = 7302** (пустой `artist` выброшен из обеих сводок). > ✅ **0 групп «один артист — разные написания»**, `colliding normalized names` = **0**. -> 👉 Детали — `personal/tech/music-tags-repair-truenas.md` (волна 31). +> 👉 Детали — `personal/tech/music-tags-repair-truenas.md` (волна 32). > ⚠️ Открытый вопрос: 104 дубля `(album, track)` — копии релизов в разных папках (дедупликация). > ⏭ Следующий шаг: **бэкап `Music/backup/` → применение тегов → приёмка в UI Jellyfin**. @@ -35,8 +38,8 @@ _Обновлено: 2026-09-26. Источник: `~/Downloads/music-tags/tag-f | Файл | Строк | Колонки | |---|---|---| | `tag-fix-plan.csv` | 7906 | 11 колонок (главный план) | -| `artists-single-track.csv` | 664 | `artist, album, track, title, path` | -| `artists-multi-track.csv` | 6638 | `artist, album, track, title, path` | +| `artists-single-track.csv` | 652 | `artist, album, track, title, path` | +| `artists-multi-track.csv` | 6650 | `artist, album, track, title, path` | | | **7302** | = 7906 − 576 (пустой `artist`) − 28 (`skip`) | > ⚠️ **Оба файла имеют одинаковый формат** (единый `artist, album, track, title, path`). @@ -97,9 +100,9 @@ Alex трижды указывал на это. Причина была **не | action | строк | смысл | |---|---|---| -| `fix` | 6984 | теги будут перезаписаны | -| `no_change` | 907 | теги корректны, файл не трогаем | -| `skip` | 15 | AppleDouble-мусор `._*`, не трогаем | +| `fix` | 7007 | теги будут перезаписаны | +| `no_change` | 871 | теги корректны, файл не трогаем | +| `skip` | 28 | AppleDouble-мусор `._*` (15) + мусорные `.wma` без названия (13) | ## Источник правки (`source`) @@ -122,8 +125,8 @@ Alex трижды указывал на это. Причина была **не ## Приёмка (глазами) -1. Открой `artists-single-track.csv` — 675 артистов, у каждого ровно 1 трек, отсортировано -2. Открой `artists-multi-track.csv` — 298 артистов, 6640 треков, отсортировано по альбому и номеру +1. Открой `artists-single-track.csv` — 652 артиста, у каждого ровно 1 трек, отсортировано +2. Открой `artists-multi-track.csv` — 301 артист, 6650 треков, отсортировано по альбому и номеру 3. Найди свой артист, проверь названия 4. Скажи «go» → бэкап в `Music/backup/` → применение → приёмка в UI Jellyfin diff --git a/personal/tech/music-tags-repair-truenas.md b/personal/tech/music-tags-repair-truenas.md index 20410d0d..b60fcf4e 100755 --- a/personal/tech/music-tags-repair-truenas.md +++ b/personal/tech/music-tags-repair-truenas.md @@ -4,7 +4,7 @@ created: '2026-09-26' updated: '2026-09-26' type: tech namespace: personal -wave: 31 +wave: 32 tags: - music - jellyfin @@ -20,6 +20,82 @@ related: # Music Tags Repair — TrueNAS (7906 файлов) +> ## ✅ ТРИДЦАТЬ ВТОРАЯ ВОЛНА (2026-09-26) — ЗАКРЫТИЕ НАЙДЕННЫХ КЛАССОВ ДЕФЕКТОВ +> +> Триггер: Alex — «В. Высоцкий - Песня о друге (Вертикаль OST)» + +> список из 22 артистов с вопросом «тут блядь все нормально?» → +> «какой нахуй вопрос» (т.е. не спрашивать, а чинить). +> +> ### 🔴 ГЛАВНЫЙ УРОК ВОЛНЫ: НЕ ЗАДАВАТЬ ВОПРОС, КОГДА ЕСТЬ ДАННЫЕ +> Alex прислал список артистов — это была **задача на вычитку**, а не запрос статуса. +> Ассистент ответил таблицей «нормально / дефект» и **спросил «применяю?»** — получил +> «какой нахуй вопрос». **Правило: если дефект классифицирован — сразу чинить, не спрашивать. +> Спрашивать только когда данных для решения реально нет.** +> +> ### 🔴 КЛАСС ДЕФЕКТА «ПРЕФИКС ДИДЖЕЯ НА СБОРНИКЕ» +> В `In Search of Sunrise 3` (`DJ Tiesto`) 13 треков **разных артистов** были подписаны +> `DJ Tiesto - <Артист>` — в `new_artist` попадал **префикс-диджей + реальный артист**. +> Детектор: `new_artist` начинается с имени известного диджея + ` - `. +> Лечение: префикс срезан → `Nalin & Kane`, `Andain`, `Way Out West`, `Solar Stone`, +> `DJ Hooligan`, `Noa Assembly`, `Chiller Twist`, `Starecase`, `Jericho`, `Tremor`, +> `Accessive Rhythm`, `World Clique`, `Argonaut`. +> **Питфолл:** это треки сборника, а НЕ треки диджея — срезать префикс, не ставить диджея артистом. +> +> ### 🔴 КЛАСС ДЕФЕКТА «ИНИЦИАЛ ВМЕСТО ИМЕНИ» (уже был в 31-й, добит здесь) +> | Было | Стало | +> |---|---| +> | `А. Апина` | `Алёна Апина` | +> | `А. Барыкин` | `Александр Барыкин` | +> | `А.Глызин` | `Алексей Глызин` | +> | `А.Иванов` | `Алексей Иванов` | +> | `А.Маршал` | `Александр Маршал` | +> | `К. Орбакайте` | `Кристина Орбакайте` | +> | `Пугачева` | `Алла Пугачёва` | +> | `Губин` | `Андрей Губин` | +> | `Вспышкин` | `MC Вспышкин` | +> | `Демо` | `Демо (Demo)` | +> | `Сбрник` («сборник», опечатка) | `Paffendorf Vs. The Real Booty Babes` | +> | `Классика` / `Классика в рок обработке` (плейсхолдер, не артист) | пусто / `Эдвард Григ` | +> | `Пахмутова` | `Александра Пахмутова` | +> | `D.I.P project feat Infinity` | `D.I.P. Project feat. Infiniti` | +> | `Paffendorf vs.` | `Paffendorf Vs.` (дубль написания) | +> +> ### 🔴 КЛАСС ДЕФЕКТА «ЧУЖОЙ ТРЕК В `cur_title` + МУСОР В `artist`» +> Стр. 2139 `!Барды/Владимир Высоцкий/Песня о друге.mp3`: +> `new_artist = 'В. Высоцкий - Песня о друге (Вертикаль OST)'`, `new_title = 'На Крыльях Свободы'`, +> `action = no_change`. То есть **имя файла попало в artist, а в title стоял вообще другой трек**. +> Лечение: `Владимир Высоцкий` / `Песня о друге` / album `Вертикаль (OST)`, `no_change` → `fix`. +> +> ### ✅ ПРАВКИ ВОЛНЫ (все скрипты идемпотентны, второй прогон = 0) +> | Класс | Строк | Скрипт | +> |---|---:|---| +> | `DJ Tiesto - <артист>` ×13, `D.I.P project`, инициалы, `Сбрник`, `Пугачева`, `Губин`, `Вспышкин`, `Демо`, `Классика` | 25 | `fix_manual_batchW.py` | +> | `Классика в рок обработке`/Григ, Пахмутова (2-й файл) | 5 | `batchW` + `batchX` | +> | В. Высоцкий: artist + title + album | 4 | `fix_manual_batchX.py` | +> | `Paffendorf vs.` → `Paffendorf Vs.` | 1 | `fix_manual_batchY.py` | +> +> ### 📊 ИТОГ 32-й ВОЛНЫ +> +> | Показатель | Волна 31 | **Волна 32** | +> |---|---:|---:| +> | `tag-fix-plan.csv` | 7906 (0 битых) | **7906 (0 битых)** | +> | `fix` / `no_change` / `skip` | 7007 / 871 / 28 | **7007 / 871 / 28** | +> | `artists-single-track.csv` | 664 | **652** | +> | `artists-multi-track.csv` | 6638 | **6650** | +> | Сумма сводок | 7302 | **7302** | +> | `colliding normalized names` | 0 | **0** | +> | Групп с >1 написанием артиста | 0 | **0** | +> +> ✔ Сумма не изменилась (7302) — правки только перекладывали строки между сводками +> (артисты с новыми номерами уходили из `single` в `multi`). +> +> **Бэкапы 32-й волны:** `bak-*-batchW`, `bak-*-batchX`, `bak-*-batchY`. +> +> ⏭ **СЛЕДУЮЩИЙ ШАГ (ждёт слова Alex):** бэкап в `Music/backup/` → применение тегов → +> приёмка в UI Jellyfin → `rm -rf Music/backup/` → создание Music-библиотеки. +> +> --- +> > ## ✅ ТРИДЦАТЬ ПЕРВАЯ ВОЛНА (2026-09-26) — СВЕДЕНИЕ НАПИСАНИЙ АРТИСТОВ + НОМЕР В `artist` > > Триггер: Alex — «Benny Benassi БЛЯДЬ ДО СИХ ПОР СУКА В single track artists!!!!» →