A track's tags are split where upstream does not split them #27
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?
Upstream does not read a track's tags through the ffprobe normalizer.
AudioFileProberreads them with ATL and splits on ATL's own separator — one tag frame per value —
applying further delimiters only when a library sets
UseCustomTagDelimiters, whichis off by default (
AudioFileProber.cs:414-425, and the same shape for artists at:378).Ours runs every track through
probe::tags, whose genre delimiters are/ ; ,andwhose artist handling replaces
feat.before splitting. On the real library:GenresArtistsThe delimiter tables themselves match upstream's
ProbeResultNormalizerexactly —_basicDelimiters,_nameDelimiters,_genreDelimitersand the split whitelist areall faithful. The divergence is that a track never reaches that code upstream.
Found while verifying #9: the by-name values a track is listed under are a faithful
reflection of these columns, so 46 of 429
ItemValuesrows differ for this reasonalone —
Acid Techno;Electronic;Idm;Technois one genre upstream and four here.Fixed in the merge of
fix/27-tag-splitting.The rule could not be fixed as a rule
The premise held — upstream reads a track with a tag library and splits only on
that library's own separator — but no delimiter table could reproduce it,
because ffprobe cannot say how many values a tag holds. Two files from this
library, one whose genres upstream splits and one whose it does not:
Identical to the prober. Upstream tells them apart because ATL reads the file:
three Vorbis fields against one ID3 frame. Nor does the container predict it —
of the FLACs upstream split 1317 and left 1302 whole.
So the track is read twice
As upstream reads one. The prober answers what is in the container; the file's
own tags answer how many values a tag holds, and land in
MediaInfo::written,a value per frame. A track's artists, album artists, genres and composers are
read from there, and from what the prober made of the tag where no reader could
open the file. A video is untouched: upstream reads one through the normalizer
and never through a tag library, which is what the probe corpus records.
The columns and the credits are read from the same place, so a track cannot be
listed under two artists and billed for one.
Measured
/mnt/media/music, 4889 tracks, rows differing from upstream:GenresAlbumArtistsArtistsand the albums summarised from them (#24) go from 141 differing
Genresto 10.ItemValuesis 508 against upstream's 515, from 538.What is left is where the two tag libraries collapse a repeated field
differently — a file naming
ALBUMARTISTtwice is two values to one and one tothe other — which is not reachable without ATL itself.
Left for later
credited rather than how a tag is split.