feat(0.9): romaji sort-tags only, robust dupe detection, Mittelweg no-duration, autofill all fields
- Japanese tracks stored with original names in folder/filename/tags; romaji only in sort tags - findExistingTrack: case-insensitive, searches all album folders under artist, strips release suffix - --max-filesize 30M + 2x duration cap on all yt-dlp calls - iTunes collectionArtistName captured as album_artist; fixes compilation album splitting - album_artist tag uses mainArtist (not rawArtist) so all tracks in one album are consistent - No-duration cascade: steps 5-8 (title-only/no-filter) removed — fail cleanly like with-duration - Autofill iTunes: fills title, artist, albumArtist, discNum (was album/genre/year/track/total only) - Autofill MusicBrainz: fills albumArtist, discNum (was missing both) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
8be3a515e6
commit
fa4c954ab9
6 files changed
+148
-98
No files matched your search
+28
-32
@@ -50,6 +50,31 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an
|
||||
|
||||
---
|
||||
|
||||
## [0.9] — 2026-06-21
|
||||
|
||||
### Changed
|
||||
- **Backend** — Japanese tracks now stored with original Japanese names in folders, filenames, and all main tags (title/artist/album/album\_artist); Romaji goes only into sort tags (TITLESORT / ARTISTSORT / ALBUMARTISTSORT / ALBUMSORT) for sorting and search in Navidrome. Previously, romaji was applied to filenames and tags too, causing name drift, duplicate misses, and wrong iTunes resolutions (e.g. "Hisaishi Yuzuru" instead of "Joe Hisaishi")
|
||||
- **Backend** — Metadata editor: files and album/artist folders are renamed using the original name typed in the form (may be Japanese), not romaji; sort tags still receive the romaji conversion
|
||||
- **Backend** — `album_artist` tag in downloaded tracks now consistently uses `mainArtist` (the iTunes-resolved album artist) rather than the raw per-track artist. This prevents Navidrome from splitting one album into multiple when track artists vary (e.g. compilations)
|
||||
- **Backend (download)** — No-duration cascade now ends after step 4 (same Mittelweg philosophy as the with-duration branch): no title-only or filter-free fallback grabs that pull wrong covers (observed: Yorushika 車窓 → Piano Echoes Shasou)
|
||||
- **Backend (download)** — `--max-filesize 30M` added to all yt-dlp calls; Mittelweg/no-duration steps also cap at 2× expected duration — a 28-min video can no longer be saved as a ~52 MB mp3
|
||||
|
||||
### Fixed
|
||||
- **Backend (download)** — Duplicate detection now matches case-insensitively (DJ OKAWARI vs DJ Okawari) and across all album folders under the artist folder, comparing normalized title without track prefix or release/variant suffix — prevents re-downloading songs whose filename drifted between runs
|
||||
- **Backend (download)** — iTunes `collectionArtistName` (album artist) is now captured and passed through the download pipeline as the `album_artist` tag; fixes compilation albums showing "Various Artists" for some tracks and the individual track artist for others
|
||||
- **Metadata editor (autofill)** — iTunes button now fills all available fields: title (`trackName`), artist (`artistName`), album-artist (`collectionArtistName`), album, genre, year, track #, disc #, total tracks, cover
|
||||
- **Metadata editor (autofill)** — MusicBrainz button now fills album-artist (from release artist-credit) and disc # in addition to the existing fields
|
||||
|
||||
### Investigated (Point 4 — album splitting)
|
||||
Primary causes identified:
|
||||
1. Missing `album_artist` tag / inconsistent value across tracks — fixed above (mainArtist + collectionArtistName)
|
||||
2. `tagAlbumArtist` was using `rawArtist` (per-track Spotify name) instead of `mainArtist` — fixed
|
||||
3. Album name comes from iTunes `collectionName` — consistent within a collection, no fix needed
|
||||
4. Year from iTunes `releaseDate` — album-level date, consistent within a collection
|
||||
5. MBIDs not set — still missing; not the primary splitting cause
|
||||
|
||||
---
|
||||
|
||||
## [0.8] — 2026-06-19
|
||||
|
||||
### Removed
|
||||
@@ -224,35 +249,6 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an
|
||||
- **Web + Android** — yt-dlp backend update / maintenance
|
||||
|
||||
### Known Bugs
|
||||
- **Backend (download)** — Duplicate detection is filename-only and exact: a track re-downloads
|
||||
when the cleaned filename changes (e.g. `… - recognize - Single.mp3` vs `… - recognize.mp3`),
|
||||
leaving two copies. Should match on normalized artist+title (ignore release suffix / variant /
|
||||
track prefix), not the raw filename.
|
||||
- **Backend (download)** — No size/length safety cap: a wrong long video can be saved as a huge
|
||||
file (observed a 52 MB mp3 ≈ 28 min vs the correct 4 MB ~3 min). Needs a `--max-filesize` /
|
||||
duration cap as defense-in-depth.
|
||||
- **Backend (metadata/sorting)** — iTunes `collectionArtistName` (album artist) is not captured,
|
||||
so `album_artist` can be wrong on compilations / various-artists releases, splitting albums and
|
||||
mis-sorting them in Navidrome.
|
||||
- **Metadata editor (autofill)** — Both autofill buttons fill only a partial subset of the form:
|
||||
iTunes sets album/genre/year/track/total/cover (no title, artist, album-artist, disc);
|
||||
MusicBrainz sets title/artist/album/genre/year/track/total (no album-artist, disc). They should
|
||||
fill **every** field they can resolve (title, artist, album-artist, album, genre, year, track #,
|
||||
disc #, total tracks, cover). This needs both the backend endpoints to return those fields
|
||||
(e.g. iTunes `collectionArtistName`, `discNumber`, `trackName`) and the frontend to populate the
|
||||
inputs. Artists are stored `;`-separated (feat./ft./&/comma normalized to `;` at download, so the
|
||||
field never contains feat./ft.) and both lookups already search with the first artist — but
|
||||
multi-artist tracks still mostly fail because the match is strict and gives up when iTunes/MB
|
||||
credit a different/combined primary artist; needs a fallback (title-only, or try the other listed
|
||||
artists).
|
||||
- **Backend (download)** — Re-downloading a playlist re-fetches some already-present tracks: the
|
||||
duplicate check matches the exact computed path only (same album folder, exact track-number
|
||||
prefix, exact resolved artist/title). Any drift between runs — different iTunes/romaji name, a
|
||||
different track number, a different album folder, or a `- Piano Version`/`(var)` variant suffix
|
||||
— makes the file look new. The check is also case-sensitive (filename-existence on a
|
||||
case-sensitive Linux FS), so `DJ OKAWARI` vs `DJ Okawari` misses too. Should match by
|
||||
normalized, case-insensitive first-artist + title across the artist's folders, not the exact path.
|
||||
- **Backend (download)** — The no-duration branch (tracks where iTunes returns no duration) has
|
||||
**no Mittelweg protection**: it still falls through to title-only / no-filter grabs and pulls
|
||||
wrong covers by other uploaders (observed: `Yorushika – 車窓` saved as `Piano Echoes – Shasou`).
|
||||
The channel-required relaxation should apply to the no-duration branch too.
|
||||
- **Backend (download)** — The duplicate check requires at least a `firstArtist` folder match. If the same song was previously stored under a very different artist name (e.g. before an iTunes-name fix), it will not be detected as a duplicate and will be re-downloaded.
|
||||
- **Backend (metadata/sorting)** — MusicBrainz `release['artist-credit']` is often absent in the standard recording search response (requires `inc=artist-credits` which can slow the endpoint). The albumArtist field from MusicBrainz autofill may fall back to the recording artist rather than the release artist.
|
||||
- **Backend (metadata/sorting)** — MBIDs are not embedded in downloaded tracks; Navidrome cannot use them for authoritative album grouping (low priority — album splitting is mostly solved via consistent `album_artist`).
|
||||
Reference in new issue
Block a user