Support multi-value TXXX/WXXX frames in ID3v2#11
Conversation
Four fixtures covering null-separated multi-value TXXX fields (2-value, 3-value, empty-slot, and single-value regression guard) plus the Python script that generates them. Signed-off-by: Rouzax <GitHub@mgdn.nl>
ID3v2.4 allows null-separated multiple strings in TXXX value fields. Audio::Scan previously read only the first value. Add a loop mirroring the existing STRINGLIST handler for standard text frames: returns an arrayref when multiple values are present, scalar when single. This enables plural tags like TXXX:ALBUMARTISTS written by Picard to reach consumers as arrays instead of being truncated. Signed-off-by: Rouzax <GitHub@mgdn.nl>
Tests cover: two values, three values, empty slot skipping, and existing single-value regression (covered by pre-existing tests). Signed-off-by: Rouzax <GitHub@mgdn.nl>
|
Please note that we won't have new binaries for all possible platforms "automatically". I tend to only update recent, popular platforms by default. But I understand the change doesn't break existing installations, but rather adds a missing "feature" (support for multiple values). Therefore for users of outdated versions of this library nothing will change - neither good or bad. |
|
Thanks for the note on platform coverage. That's completely fine. The change is indeed additive only. Installations running an older Audio-Scan will keep getting a single scalar for TXXX frames, exactly as today. Nothing breaks for them. On the slimserver side, the code that consumes these tags already needs to handle both scalars and arrayrefs anyway (some tag types already return arrays). So the scanner will work correctly regardless of which Audio-Scan version is installed: arrayref means multi-value support is available, scalar means it falls back to current behavior. |
Summary
Context
Part of LMS-Community/slimserver#1555 (display_artist support). Vorbis/FLAC already deliver multi-value tags correctly; this closes the MP3 gap.
Forum discussion (post #133 in the thread): https://forums.lyrion.org/forum/user-forums/ripping-encoding-transcoding-tagging/1816764-lms-metadata-scaan-overrides-local-tags
Test plan