[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/kraken-host-resource-limits.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
36446fb12b
commit
3ad74fbe75
3 files changed
+141
-14
No files matched your search
@@ -11,6 +11,8 @@ tags:
|
||||
- albumartist
|
||||
- repair
|
||||
- truenas
|
||||
- compilation
|
||||
- mojibake
|
||||
related:
|
||||
- '[[family/plans/music-jellyfin-lidarr-taiga]]'
|
||||
- '[[personal/tech/music-tags-repair-truenas]]'
|
||||
@@ -257,30 +259,111 @@ def decode_mojibake(s):
|
||||
ffprobe может **показать** `album_artist`, которого в байтах `TPE2` **нет**
|
||||
(читает из ID3v1-хвоста или TXXX). Проверять наличие `TPE2` — только `od` по байтам.
|
||||
|
||||
## ✅ ЭТАП ЗАВЕРШЁН: `fix-plan-FINAL.csv` (7861 строка, 0 пустых)
|
||||
|
||||
Построен итоговый построчный план правок. **Файлы музыки НЕ тронуты** — ждёт проверки Alex
|
||||
и отдельного «go».
|
||||
|
||||
**Колонки:** `path, class, cur_title, cur_artist, cur_album, cur_albumartist,`
|
||||
`new_artist, new_albumartist, new_album, changed`
|
||||
|
||||
```
|
||||
строк: 7861
|
||||
изменений (changed): 7233
|
||||
NEED_LOOKUP: 0
|
||||
пустых new_artist: 0
|
||||
```
|
||||
|
||||
**Распределение `new_albumartist`:**
|
||||
|
||||
```
|
||||
1518 Various Artists ← сборники (!Radio, !Retro, НТЛ, Eminem, Sbornik_Novij_Rok…)
|
||||
322 Детские песни ← !Детские/*
|
||||
248 Сказки ← !Детские/Сказки
|
||||
284 Владимир Высоцкий ← НЕ сборник: albumartist = artist
|
||||
```
|
||||
|
||||
### Разбивка 633 папок по группам (метод, который сработал)
|
||||
|
||||
| Группа | Критерий | Папок | Решение |
|
||||
|---|---|---:|---|
|
||||
| **A** | 1 уникальный артист | 540 | АЛЬБОМ → `albumartist` = artist |
|
||||
| **B** | 2–5 артистов | 44 | **ручная разметка** → `list4-groupB.md` |
|
||||
| **C** | 6+ артистов | 49 | СБОРНИК → `Various Artists` |
|
||||
|
||||
**Группа B — главный питфолл.** Из 44 папок только **11 СБОРНИКИ**, остальные **33 — АЛЬБОМЫ
|
||||
с фитами** (`Benassi Bros`, `Savant/*`, `Любэ`, `Король и Шут`, `Муммий Тролль`, `Аквариум`).
|
||||
Механический критерий «>1 артиста = сборник» здесь даёт ложные `Various Artists`.
|
||||
|
||||
### Как решались `artist` (178 пустых → 0)
|
||||
|
||||
| Источник | Найдено |
|
||||
|---|---:|
|
||||
| Композитор из **скобок** в имени файла | 57 |
|
||||
| Поиск в интернете (Википедия, soundtimes.ru) | 43 + 27 + 19 = 89 |
|
||||
| Народные/безавторские → `Детские песни` | 22 + 9 = 31 |
|
||||
| Близнец-файл (`Двойка` = Б. Шнапер) | 1 |
|
||||
|
||||
**Формат «автор в имени файла»** (`9. Чебурашка В.Шаинский - Э.Успенский.mp3`) —
|
||||
композитор до дефиса. Экстрактор должен терпеть: строчные инициалы (`е. Крылатов`),
|
||||
опечатки (`Петр Чойковский` → `Пётр Чайковский`, `В. Шиинский`), без точек (`Ю Чичков`),
|
||||
`И, Ефремов` (запятая вместо точки).
|
||||
|
||||
**Сказки-аудио:** авторы — не композиторы, а литераторы: `Теремок` = Русская народная сказка,
|
||||
`Золотой петушок` = Александр Пушкин, `Серебряное копытце` = Павел Бажов,
|
||||
`Маленький Мук` = Вильгельм Гауф.
|
||||
|
||||
### Классы папок (`folders-plan.csv`)
|
||||
|
||||
```
|
||||
АЛЬБОМ: 492 СБОРНИК: 63
|
||||
СКАЗКИ: 36 ДЕТСКИЕ-СБОРНИК: 9
|
||||
АЛЬБОМ-мульти(?): 30 ДЕТСКИЕ: 2
|
||||
ПУСТО-АРТИСТ: 1
|
||||
```
|
||||
|
||||
`АЛЬБОМ-мульти(?)` (30 папок) разобраны вручную — почти все НЕ сборники, а альбомы с фитами.
|
||||
|
||||
## ⏭ СЛЕДУЮЩИЕ ШАГИ
|
||||
|
||||
1. **Завершить ручную разбивку по группам** — оставшиеся корневые папки:
|
||||
`!Rock&Folk`, `!Барды`, `!Рэп`, `!Классика`, `z Другое…`, `!Pop, Club, Любэ` (без `!Radio`),
|
||||
`!Retro`, `!Детские`
|
||||
2. **Показать списки Alex на проверку**
|
||||
3. Скрипт обновляет `tag-inventory3.csv` → финальные колонки `fix_artist`, `fix_albumartist`, `fix_album`
|
||||
4. Поиск артистов в интернете — только для строк, где нет скобок и не мойибаке
|
||||
5. **Только после «go»** — правка файлов (с бэкапом, с пост-сверкой)
|
||||
1. **Alex проверяет `fix-plan-FINAL.csv`** — три выборки: 57 строк «из скобок»,
|
||||
1518 строк `Various Artists`, 248 строк `Сказки`
|
||||
2. **Скрипт-писатель `apply_tags.py` — написать заново** (старый не годен, см. §Разбор):
|
||||
- `delall` — **вне** `if`, `add` — только при непустом значении
|
||||
- **+`TPE2`** (`albumartist`) в `_frames()`
|
||||
- декодер мойибаке CP1251→UTF-8
|
||||
- фильтр `.mp3` — **обязателен** (иначе `ID3()` поверх не-MP3 → нет `moov atom`, непоправимо)
|
||||
- `save(path, v2_version=3)` **в тот же путь**, не в `.tmp` через `ID3(path)`
|
||||
3. **Сухой прогон на 20 файлах** + пост-сверка (прочитать тег ПОСЛЕ, сравнить с ожиданием)
|
||||
4. **Только после «go»** — массовая правка с бэкапом
|
||||
|
||||
## 📁 ФАЙЛЫ РАБОТЫ (Mac)
|
||||
|
||||
```
|
||||
/Users/admin/milestones/music-csv-2026-09-26/
|
||||
├── fix-plan-FINAL.csv ⭐ 7861 стр, ИТОГОВЫЙ план правок
|
||||
├── fix-plan-final.csv промежуточный (NEED_LOOKUP=121)
|
||||
├── fix-plan-final2/3/4.csv промежуточные после каждой волны lookup
|
||||
├── raw_tags_full.tsv 7861 стр, сырые теги (md5 0c3647fa...)
|
||||
├── tag-inventory3.csv 7861 стр, 13 колонок, +albumartist
|
||||
├── tag-inventory2.csv.bak-20260927 бэкап
|
||||
├── tag-fix-plan.csv.bak-20260927 бэкап
|
||||
├── albumartist-plan.csv черновик (НЕ финал — см. §Процессный запрет)
|
||||
├── folders-plan.csv 633 папки: класс + предложенный albumartist/album
|
||||
├── mojibake_rows.tsv 492 строки с мойибаке
|
||||
├── verify-problems.csv 12 строк без albumartist
|
||||
├── folder-categories.csv 633 папки с категориями
|
||||
├── list2-folders.txt 633 папки (файлы/артисты)
|
||||
├── list3-radio.md ручная разметка !Radio (31 папка)
|
||||
├── analyze.py / build_inventory3.py / verify_manual.py / audit_categories.py
|
||||
└── README.md, MD5SUMS.txt
|
||||
├── list3-radio.md ручная разметка !Radio (31 папка, 19 сборников)
|
||||
├── list4-groupB.md ручная разметка группы B (44 папки, 11 сборников)
|
||||
├── need-lookup.txt / lookup-still.txt списки на поиск в интернете
|
||||
└── *.py analyze / build_inventory3 / build_folders_plan /
|
||||
build_fix_plan / resolve_composers / apply_lookup1-3 /
|
||||
build_final / verify_manual / audit_categories
|
||||
```
|
||||
|
||||
### Питфолл: субагент пишет в корень vault
|
||||
|
||||
Субагент по поиску композиторов создал `Советские детские песни — композиторы.md`
|
||||
**в корне vault** (не в `personal/`). Содержимое перенесено в рабочую логику, файл удалён.
|
||||
**В задание субагенту явно писать: файлов не создавать, вернуть результат текстом.**
|
||||
Reference in new issue
Block a user