An album and an artist carry nothing summarised from their tracks #24

Closed
opened 2026-08-02 15:48:07 +02:00 by Claude · 1 comment
Collaborator

An album row carries no artists and no genres of its own. Upstream fills
both from the tracks below it: in a real library 325 of 329 MusicAlbum
rows carry Artists/AlbumArtists and 315 of 329 carry Genres, where
ours carry the empty string.

A track now writes what its own tags said (#4), but nothing summarises a
folder from its children, so the album and the artist above it stay bare.
The same gap leaves a MusicArtist row with nothing but its name.

Found while reviewing #4: extending the scan comparison to the tag
columns fails on the album row of the reference library —

/fixtures/media/music/Sine Ensemble/First Signal
  upstream  Artists="Sine Ensemble"  AlbumArtists="Sine Ensemble"
  ours      Artists=""               AlbumArtists=""

which is why that comparison is scoped to tracks for now
(crates/jellyfin-app/tests/scan_ingest.rs).

An album row carries no artists and no genres of its own. Upstream fills both from the tracks below it: in a real library 325 of 329 `MusicAlbum` rows carry `Artists`/`AlbumArtists` and 315 of 329 carry `Genres`, where ours carry the empty string. A track now writes what its own tags said (#4), but nothing summarises a folder from its children, so the album and the artist above it stay bare. The same gap leaves a `MusicArtist` row with nothing but its name. Found while reviewing #4: extending the scan comparison to the tag columns fails on the album row of the reference library — /fixtures/media/music/Sine Ensemble/First Signal upstream Artists="Sine Ensemble" AlbumArtists="Sine Ensemble" ours Artists="" AlbumArtists="" which is why that comparison is scoped to tracks for now (`crates/jellyfin-app/tests/scan_ingest.rs`).
Author
Collaborator

Fixed in 4d41702.

What changed

An album is described by the tracks below it, once the library has been read:
its name from the first of them to carry an ALBUM tag, its artists and album
artists grouped case-insensitively with the one most of them name first, its
genres distinct in the order they were first seen, what it runs for, and the
earliest year any of them gives.

An artist is described by nothing. Upstream leaves the row its folder made —
measured on the reference library, all sixty-seven carry no genres and a
running time of zero, where their albums carry both.

A folder is described from what the pass read off disk, and read again first
where the pass left it alone, so a document beside it keeps what it gave the
row. A folder whose description still stands is not read at all: the
comparison holds the name and the year aside where the summary has nothing to
say about them, which is what keeps a Kodi-style library from being walked
into on every scan.

Measured

/mnt/media/music, 4889 tracks, against the upstream database for the same
files:

upstream ours
MusicArtist rows 67 67, every column matching
MusicAlbum rows 329 329
albums carrying Artists / AlbumArtists 325 / 325 325 / 325
albums carrying RunTimeTicks 329 329
ProductionYear agreeing — 296, against 258 from the folder name

What still differs on an album row is upstream of this: 141 Genres are the
track-level tag splitting filed as #27 — upstream's own track rows carry
Ambient;Downtempo;Electronic as one genre where ours carry three, and the
album faithfully summarises whichever it is given — 33 ProductionYear are
the PremiereDate the port does not write, and the nine others are tracks
whose tags we read differently, one of them a file whose tags are corrupt.

A rescan writes nothing: written=0 summarised=0 unchanged=5387.

Left for later

  • #35 — an album bills nobody and names no ids of its own: upstream writes
    people for 325 of the 329 and external ids for 278.
Fixed in 4d41702. ## What changed An album is described by the tracks below it, once the library has been read: its name from the first of them to carry an `ALBUM` tag, its artists and album artists grouped case-insensitively with the one most of them name first, its genres distinct in the order they were first seen, what it runs for, and the earliest year any of them gives. An artist is described by nothing. Upstream leaves the row its folder made — measured on the reference library, all sixty-seven carry no genres and a running time of zero, where their albums carry both. A folder is described from what the pass read off disk, and read again first where the pass left it alone, so a document beside it keeps what it gave the row. A folder whose description still stands is not read at all: the comparison holds the name and the year aside where the summary has nothing to say about them, which is what keeps a Kodi-style library from being walked into on every scan. ## Measured `/mnt/media/music`, 4889 tracks, against the upstream database for the same files: | | upstream | ours | |---|---|---| | `MusicArtist` rows | 67 | 67, every column matching | | `MusicAlbum` rows | 329 | 329 | | albums carrying `Artists` / `AlbumArtists` | 325 / 325 | 325 / 325 | | albums carrying `RunTimeTicks` | 329 | 329 | | `ProductionYear` agreeing | — | 296, against 258 from the folder name | What still differs on an album row is upstream of this: 141 `Genres` are the track-level tag splitting filed as #27 — upstream's own *track* rows carry `Ambient;Downtempo;Electronic` as one genre where ours carry three, and the album faithfully summarises whichever it is given — 33 `ProductionYear` are the `PremiereDate` the port does not write, and the nine others are tracks whose tags we read differently, one of them a file whose tags are corrupt. A rescan writes nothing: `written=0 summarised=0 unchanged=5387`. ## Left for later - #35 — an album bills nobody and names no ids of its own: upstream writes people for 325 of the 329 and external ids for 278.
Sign in to join this conversation.
No description provided.