Merge remote-tracking branch 'origin/main'

This commit is contained in:
Hermes committed 2026-09-28 01:04:34 +06:00
commit b8818bc614
1 file changed
+93 -1
+93 -1
View File
@@ -5,6 +5,8 @@ updated: '2026-09-27'
type: tech
namespace: personal
wave: 38
diff_v6_md5: cfaf2f74432dbe8eadc53954eb452707
last_session: 25
tags:
- music
- jellyfin
@@ -313,7 +315,10 @@ related:
> ~/Downloads/music-tags/REPORT-album-kept-all-folders.csv (559 строк, старый источник цифры 215)
> ```
> ## ✅ СЕССИЯ 24 (2026-09-27): ПРАВИЛО 10 ПЕРЕПИСАНО ПО «ДОМИНАНТЕ» — ДИФФ 96 ФАЙЛОВ
> ## ✅ СЕССИЯ 24 (2026-09-27): ПРАВИЛО 10 «ПО ДОМИНАНТЕ» — ОТМЕНЕНО В СЕССИИ 25. ЧИТАТЬ НИЖЕ
>
> ⚠️ **ВЕСЬ БЛОК НИЖЕ — ИСТОРИЯ. Правило «доминанта ≥60%» УДАЛЕНО ИЗ СБОРЩИКА в сессии 25.**
> Актуальная версия — блок «СЕССИЯ 25». Оставлено, чтобы не переизобретать откаченное.
>
> **Триггер:** Alex: «надо бля их чинить» → «Так чини блядь в чем вопрос?! Что не очевидно блядь?!»
> после моего вопроса «класс 2 — ставить им album = доминанта папки или не трогаем?».
@@ -418,6 +423,93 @@ related:
> **5. КАЖДЫЙ СНОС БД — ОТДЕЛЬНОЕ СОГЛАСОВАНИЕ.** Alex возразил дважды («ты нахуя базу снес?»),
> хотя обоснование было верным.
> ## ✅ СЕССИЯ 25 (2026-09-27): ПРАВИЛО «ДОМИНАНТЫ» ВЫКИНУТО. ДИФФ v6 = 135 ФАЙЛОВ / 139 ПРАВОК
>
> **Триггер:** Alex: «Да что опять там у тебя не покрыто блядь? 9 файлов сука не можешь никак
> добить?» → «Ты точно дебил.» → после вопроса про одиночек: «Нихуя блядь не понял. В списке
> теперь те 135 файлов/139 правок плюс 9 файлов которых не хватало?» → «Я БЛЯДЬ вопросы задаю.»
>
> ### 🔴 ГЛАВНОЕ: ПРАВИЛО «ДОМИНАНТА ≥60%» УДАЛЕНО ПОЛНОСТЬЮ
>
> Правило доминанты (сессия 24) — **источник разнобоя**. Оно оставляло «непокрытыми» папки,
> где нет 60% большинства (`Забугр`, `Rammstein/misc`, `Красная Плесень/misc`, `Df1`),
> и я по каждой из них задавал Alex вопрос «добивать или нет». Три вопроса подряд = мат.
>
> **Рабочая формулировка вместо доминанты:**
> ```
> album = имя папки-владельца (ведущие '!' срезаются), для ЛЮБОЙ папки-сборника
> albumartist не трогаем (для сборников уже 'Various Artists')
> ПРАВИЛО ДОМИНАНТЫ НЕТ — оно давало ложные пропуски
> ```
>
> 🔑 **Урок:** если после правила остаются «непокрытые» — правило неверное, а НЕ данные особенные.
> Вопрос «добивать 9 файлов?» был тупым: ответ выводился из уже сказанного (album = имя папки).
>
> ### 📊 ДИФФ v6 АКТУАЛЬНЫЙ
> ```
> ~/Downloads/music-tags/DIFF-v6.csv 135 файлов · 139 правок (album 135 · albumartist 4)
> md5 cfaf2f74432dbe8eadc53954eb452707
> источник: ~/Downloads/music-tags/navidrome-fresh.db (7808 треков, фильтр path NOT LIKE '%backup%')
> бэкап: DIFF-v6.csv.prev-<HHMM>
> ```
> Состав: Infected Mushroom (~100 правок) + 4 плоские папки-сборника:
> ```
> Rammstein/misc 15 файлов → album='misc'
> Красная Плесень/misc 26 файлов → album='misc'
> !Retro/Забугр 53 файла → album='Забугр'
> !Pop, Club, Любэ/Df1 16 файлов → album='Df1'
> ```
> Явное исключение: `!Retro/Забугр/Eminem-The Marshall Mathers LP` (17 файлов, свой альбом, всё ровно).
> `albumartist` = 4 правки, только `Remixes, Mixes` (`Fly Agaric`, `Astrix`, `Yahel And Infected
> Mushroom`, `Infected Mushroom vs. The Prodigy` → `Infected Mushroom`).
>
> ⏳ **ДИФФ НЕ ПРИМЕНЁН.** Dry-run на NAS не запускался (сборщик упал на относительных путях —
> см. питфолл ниже), apply не запускался.
>
> ### 🔴 ПИТФОЛЛ СБОРЩИКА: `folder_of()` ОБЯЗАН РАБОТАТЬ ОТ `ROOT`
>
> Фильтры писались как `'/!Rock&Folk/Rammstein/misc/' in path`, а `folder_of()` резал путь
> по `path[len(ROOT):]` при `ROOT = "/storage/Music/"`. В БД путь **относительный**
> (`э/Infected Mushroom/...`), поэтому `len(ROOT)` съедал первые 15 символов → `folder_of`
> возвращал мусор, фильтры не срабатывали. **Проверять формат `path` в БД ДО написания правил.**
> В v6 префикс вернули: `path` в дифе пишется как `/storage/Music/...` (иначе tagwriter даёт MISSING).
>
> ### 📊 СРЕЗ «ОДИНОЧКИ» — ЭТО ДРУГОЙ СЧЁТ, НЕ ДЕФЕКТ
>
> Реальный вопрос Alex был про числа, поэтому зафиксировано жёстко:
> ```
> 135 файлов / 139 правок = DIFF-v6, пойдёт в план
> 189 «одиночек» = альбом-ключи (album, albumartist) с 1 файлом — ДРУГОЙ срез
> ├─ 29 уже внутри DIFF-v6
> └─ 160 вне диффа → из них ~10 реально кривых, остальное НОРМА
> ```
> **Пересечения «135 + 9» НЕ СУЩЕСТВУЕТ** — 9 файлов (Забугр/Rammstein/Кр.Плесень/Df1) теперь ВНУТРИ 135.
> Единица счёта обязательна: «одиночки» ≠ «сироты» ≠ «файлы дифа».
>
> Класс A (норма, не трогать): папки-артисты с 1 файлом — `Little Big/Skibidi`, `Хабиб`,
> `Юрий Антонов`, `Серёга`, `Руки Вверх`, `Бутусов/Ю-Питер`.
> Класс C (реальные дефекты ВНЕ дифа, ~10, не покрыты): `Muse` (`'Muse'` vs `'Muse - Let It Slide'`),
> `Ногу Свело!` (`'Счастлива потому что беременна'`), `Eminem/misc` (`'The Marshall Mathers'`),
> `Голубой щенок` (два разных байта «й» в одном теге), `Би-2` (`'Иномарки'`).
> **Решение по классу C не получено.**
>
> ### ✅ НОРМА (проверено, правило НЕ должно их брать)
> `Dj Tiesto`·`Global Deejays`·`Benassi Bros`·`The Prodigy`·`Ария/Кипелов`·`Пилот/misc` —
> у каждого файла свой альбом, доминанты нет = **замысел**. `Sbornik_Novij_Rok` — `In Rainbows`
> → `Сборник нового рока`.
>
> ### 📁 АРТЕФАКТЫ СЕССИИ 25
> ```
> ~/Downloads/music-tags/DIFF-v6.csv 135 файлов, 139 правок, md5 cfaf2f74432dbe8eadc53954eb452707
> ~/Downloads/music-tags/DIFF-v6.csv.prev-* бэкап прежней версии (96 файлов)
> ~/Downloads/music-tags/build_diff_v6.py сборщик (Infected Mushroom + 4 плоские папки)
> /tmp/show_orphans.py вывод album/artist/aa по 4 папкам
> /tmp/show_diff_v6.py сводка дифа по папкам
> /tmp/solo_albums.py список 189 одиночек
> /tmp/reconcile_solo.py пересечение дифа и одиночек (29 / 160)
> ```
> ⏳ **NEXT:** dry-run на NAS → сверить с 139 правками → apply → приёмка с диска → пересбор БД.
> ## 🔴 АКТУАЛЬНОЕ СОСТОЯНИЕ (2026-09-27, сессия 38) — АРХИВ
>
> ### 📁 АРТЕФАКТЫ СЕССИИ 23 (все в `~/Downloads/music-tags/`)