An album artist is read from a key upstream does not read #42
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A track's album artist is read from a key upstream's own reader does not read.
loftymaps the non-standard Vorbis keyALBUM ARTIST— with a space — to thealbum artist (
lofty/src/tag/item.rs); ATL maps onlyALBUMARTIST. So thisserver reads a name where upstream reads none, and prefers the spaced key's
value where a file carries both.
Measured on the reference library, after #39:
AlbumArtistscolumn differs from upstream, every one ofthem this —
Grimes + d'Eon|Grimeshere against upstream'sGrimes.PeopleBaseItemMaprows more than upstream, every one anAlbumArtist,32 of them files whose only album-artist key is the spaced one.
Two shapes to decide between: refuse the keys upstream's reader does not map,
which means keeping a list of what ATL reads per format; or read the tag blocks
directly rather than through the generic key table, where the raw key name is
visible.
Not a splitting question — the value is one string either way.
The tag reader mapped keys upstream's does not, so a file spelling its album
artist one way was billed for a person upstream never credits.
Upstream reads tags with ATL, this port with lofty, and the two disagree about
which key names which field. ATL at the pinned version maps
ALBUMARTISTonlyin a Vorbis comment,
TP2/TPE2only in anID3v2tag (a user-definedTXXXframe goes to additional fields, never to the album artist), both
ALBUMARTISTand
ALBUM ARTISTin an APE tag, andaARTonly in MP4. lofty additionallymaps a spaced
ALBUM ARTISTcomment and aTXXXframe named for the field.Tag blocks are now read directly, with the keys upstream's reader does not map
removed before lofty's table runs. lofty's generic view discards the raw key, so
filtering after the fact is not possible.
A second defect fell out of it: the fallback to the prober's own tags was per
key, so where the reader was made to answer "no album artist", ffprobe's
ALBUM ARTISTsupplied it again. A reader that opened a file now answers everykey it reads, empty where the file names none — an empty answer is the file
saying nothing, and is the whole answer. A file no reader can open still keeps
what the prober made of it.
Measured over 5387 tracks against upstream's own database:
AlbumArtistsdifferPeopleBaseItemMaprowsThe people table is now row-for-row identical to upstream —
EXCEPTin bothdirections over path, name, role and both orderings is empty. Five artist values
this port carried and upstream did not are gone.
The review checked the mapping table against ATL's own source at the version
Directory.Packages.propspins, rather than against this description of it, andfound one more over-read on the way: lofty maps RIFF's
IMUSto a composerwhere upstream's WAV reader maps no composer at all. Fixed here too, though no
file in either library is a
.wav.Genres are untouched by this and still differ on 4 tracks, which is #44.