[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/id3-tag-repair.md
This commit is contained in:
1 parent
23b4acc8cc
commit
23a5da004b
2 files changed
+245
-3
No files matched your search
@@ -4,7 +4,7 @@ created: '2026-09-27'
|
||||
updated: '2026-09-27'
|
||||
type: plan
|
||||
namespace: personal
|
||||
status: session18-dop-diff-inventoried-folders-counted-awaiting-apply-go
|
||||
status: session18-dop-diff-inventoried-folders-counted-genre-origin-found-awaiting-apply-go
|
||||
tags:
|
||||
- music
|
||||
- metadata
|
||||
@@ -24,8 +24,16 @@ related:
|
||||
## 🟣 СЕССИЯ 18-ДОП (2026-09-27, вечер) — ИНВЕНТАРЬ ДИФФА ПО ФАКТУ, ПОСЛЕ ВОПРОСА ALEX «ГДЕ ДИФ?»
|
||||
|
||||
> **Триггер:** Alex — «**Где диф последний с 371 правкой альбомов/albumartist который ты готовил?**»
|
||||
> → затем «**Какие там записи?**». Отвечено из **Zulip DB** (по скиллу `zulip-db-forensics`),
|
||||
> затем проверено по самим файлам на диске.
|
||||
> → «**Какие там записи?**» → «**Все папки**» → «**С количеством файлов**» →
|
||||
> «**Откуда там 7963 правки?**» → «**Откуда там правка жанра то??**» →
|
||||
> «**Ты только что блядь сказал что в диффе 306 сука файлов! Какие нахуй 4359?!**».
|
||||
> Отвечено из **Zulip DB** (по скиллу `zulip-db-forensics`), затем проверено по самим файлам на диске.
|
||||
>
|
||||
> **Два новых факта сессии (см. разделы ниже):**
|
||||
> 1. **GENRE в плане — колонки в волне 38 НЕ БЫЛО вообще** → все 4359 = первая запись тега (ср. D3).
|
||||
> Генератора `new_genre` на диске нет — только `fix_apply_plan.py` (1 правка мусора).
|
||||
> 2. **306 в диффе НЕТ — 0 ячеек** (literal search). Дифф держит те же скобки как **15 записей**
|
||||
> (схлопывание D16). Моё изложение склеило 306 (счётный файл) и дифф в одну фразу — дефект изложения.
|
||||
|
||||
### 📍 Местонахождение (факт с диска, mtime 2026-09-27 17:41)
|
||||
|
||||
@@ -158,6 +166,104 @@ ANY field differing 7651
|
||||
> план — «что реально отличается от целевого». **Две разные базы счёта** (ср. §Число 371 ≠ строки диффа).
|
||||
> Проверочный скрипт: `/tmp/explain_genre.py`.
|
||||
|
||||
### 🔴 ОТКУДА ВЗЯЛСЯ GENRE В ПЛАНЕ — КОЛОНКИ В ВОЛНЕ 38 НЕ БЫЛО ВООБЩЕ
|
||||
|
||||
Alex: «**Откуда там правка жанра то??**» → затем «**Откуда там 7963 правки?**»
|
||||
|
||||
**Факт — заголовки двух планов (`csv.DictReader`):**
|
||||
|
||||
```
|
||||
tag-fix-plan.csv (волна 38):
|
||||
path, current_verdict, cur_title, cur_artist, cur_album,
|
||||
new_title, new_artist, new_album, new_track, action, source
|
||||
↑ genre ОТСУТСТВУЕТ
|
||||
|
||||
APPLY-PLAN.csv (текущий, 16 колонок):
|
||||
path, folder, class, cur_title, cur_artist, cur_albumartist, cur_album,
|
||||
cur_genre, cur_track, new_title, new_artist, new_albumartist, new_album,
|
||||
new_genre, new_track, changed ← genre ПОЯВИЛСЯ
|
||||
```
|
||||
|
||||
**Следствие (ср. D3):** жанр не писался ни разу за всю историю волн. Любое непустое
|
||||
`new_genre` в текущем плане = **первая запись тега**. Это и есть все `4359`.
|
||||
|
||||
**Состав — 137 пар `cur_genre → new_genre`, три класса:**
|
||||
|
||||
| файлов | было | стало | класс |
|
||||
|---:|---|---|---|
|
||||
| 1136 | *пусто* | `Rock` | заполнение (правило «жанр по артисту/папке», ср. G4) |
|
||||
| 439 | *пусто* | `Pop` | заполнение |
|
||||
| 322 | *пусто* | `Детские` | заполнение |
|
||||
| 252 | *пусто* | `Бардовская песня` | заполнение |
|
||||
| 237 | *пусто* | `Сказки` | заполнение |
|
||||
| 182 | `Рок` | `Rock` | нормализация |
|
||||
| 177 | *пусто* | `Chanson` | заполнение |
|
||||
| 101 | *пусто* | `Dark Cabaret` | заполнение |
|
||||
| 94 | `Other` | `Pop` | разрешение по артисту (G3) |
|
||||
| 82 | `Punk Rock` | `Punk` | нормализация |
|
||||
| 52 | `Metal` | `Heavy Metal` | нормализация |
|
||||
| 41 | `Psy Årance` | `Psy-Trance` | омоглиф (G2) |
|
||||
| 32 | `(17)` | `Rock` | 🔴 **поле прочитано неверно** — `(17)` стоял на 32 файлах ДДТ |
|
||||
| 30 | `Psy Еrance` | `Psy-Trance` | омоглиф (G2) |
|
||||
| 23 | `Dance/Club` | `Dance` | нормализация |
|
||||
| 22 | `Разное` | `Бардовская песня` | 🔴 поле прочитано неверно (Высоцкий) |
|
||||
| 22 | `Детская Музыка` | `Rock` | нормализация |
|
||||
| 16 | `Поп` | `Pop` | нормализация |
|
||||
|
||||
**Кто правил `new_genre` в самом плане:** `~/Downloads/music-tags/fix_apply_plan.py` (mtime 13:13)
|
||||
содержит ровно **одну** genre-правку — мусор `яюElectronic` → `Electronic` (JUNK_FIX), плюс
|
||||
пересчёт `changed`. 🔴 **Генератора, который построил `new_genre`, на месте НЕТ** — `fix_apply_plan.py`
|
||||
правит уже готовый план, а не строит его. Скрипт-строитель отсутствует в
|
||||
`~/Downloads/music-tags/*.py`.
|
||||
|
||||
> 🔑 **МЕТОД-УРОК:** прежде чем объяснять «откуда правка», **сравнивать ЗАГОЛОВКИ обеих версий
|
||||
> плана**. Отсутствие колонки в предыдущей версии объясняет весь объём поля одним фактом —
|
||||
> и это надёжнее любых рассуждений о логике заполнения. Проверочный скрипт: `/tmp/where_genre.py`,
|
||||
> `/tmp/genre_origin.py`.
|
||||
|
||||
### 🔴 306 В ДИФФЕ НЕТ — ПРОВЕРЕНО ПО ЯЧЕЙКАМ (ответ на «Какие нахуй 4359?»)
|
||||
|
||||
Alex: «**Ты только что блядь сказал что в диффе 306 сука файлов! Какие нахуй 4359?!**»
|
||||
|
||||
**Он прав: 306 в диффе не существует.** Проверено скриптом `/tmp/find_306.py` по всем ячейкам:
|
||||
|
||||
```
|
||||
DIFF-new-vs-38-v2.csv
|
||||
строк всего 2854
|
||||
album-строк 164
|
||||
из них old_38 в скобках 15 (12 ПАПКА + 3 ТРЕК)
|
||||
ячеек, содержащих "306" 0 ← literal search по всем колонкам
|
||||
```
|
||||
|
||||
**Где стоят эти 15 строк (схлопывание D16: одна запись папки = N файлов):**
|
||||
|
||||
| scope | old_38 | new_apply_plan |
|
||||
|---|---|---|
|
||||
| ПАПКА | `(2001) Infected Mushroom - S Is Here (Yahel Mix)` | `S Is Here (Yahel Mix)` |
|
||||
| ПАПКА | `(Авария)` | `Москва пьёт пиво` |
|
||||
| ПАПКА | `(Авария)` | `Старые хиты` |
|
||||
| ПАПКА | `(zvezda)` | `zvezda` |
|
||||
| ПАПКА | `(Несчастный Случай)` | `Несчастный Случай` |
|
||||
| ПАПКА | `(Блатные)` | `Блатные` |
|
||||
| ПАПКА | `(Из Сказок)` | `Из Сказок` |
|
||||
| ПАПКА | `(Морские)` | `Морские` |
|
||||
| ПАПКА | `(Высоцкий - Разное)` | `Разное` |
|
||||
| ПАПКА | `(Спортивные)` | `Спортивные` |
|
||||
| ПАПКА | `(Философские)` | `Философские` |
|
||||
| ПАПКА | `(Вилли Токарев)` | `Вилли Токарев` |
|
||||
| ТРЕК | `(2001) Infected Mushroom - Wider (Domestic RMX)` | `Wider (Domestic RMX)` |
|
||||
| ТРЕК | `(2004) Infected Mushroom - Shakawkaw (Vibe Tribe Rmx)` | `Shakawkaw (Vibe Tribe Rmx)` |
|
||||
| ТРЕК | `(2009) Infected Mushroom - Bust a Move (Infected Remix)` | `Bust a Move (Infected Remix)` |
|
||||
|
||||
`distinct paths` в этих строках — **4** (три IM-файла + пустой path у ПАПКА-строк).
|
||||
|
||||
> 🔴 **ПРАВИЛО ИЗЛОЖЕНИЯ (мой дефект, не дефект данных):** я произнёс «306» и «дифф»
|
||||
> **в одном ответе**, хотя 306 — счётный файл `ALBUM-FIX-306.csv` (построчный список путей),
|
||||
> а дифф схлопнул те же 306 в **15 записей**. Alex прочитал это как подмену числа.
|
||||
> **Отвечая про дифф — называть ТОЛЬКО числа диффа (2854 / 2768 / 164).**
|
||||
> Числа из `ALBUM-FIX-*.csv` давать отдельным абзацем с явной пометкой «это счётный файл,
|
||||
> не дифф». Никогда не склеивать два артефакта в одну фразу.
|
||||
|
||||
### 🧾 Список удаления скобок — ГДЕ ЛЕЖИТ (ответ на «Где список с удалением скобок»)
|
||||
|
||||
Alex: «**Где список который ты готовил с удалением скобок**»
|
||||
|
||||
Reference in new issue
Block a user