Menu

#152 Most ID3v2 frames should be unique

3.4.4
closed
nobody
ID3 (1)
1
2017-06-16
2017-02-15
No

The ID3v2 (both 2.3 and 2.4) specification requires most frames to be unique : all text frames but TXXX (see section 4.2), most URL link frames (section 4.3), etc.
Conversely, "all text information frames supports multiple strings, stored as a null separated list" in 2.4 ('/'-separated in 2.3).

However, Kid3 allows the user to add, for instance, as many "Artist" fields as she wants, and write them as distinct TPE1 frames. It also allows to use '|' as separator (and converts it as needed).

Kid3 should either :

  • prevent the user from creating multiple fields of the same type, and let the behaviour of '|' as it is
  • let the interface as it is, but merge the correlated fields into one unique ID3 frame. In this case, we might also consider disabling '|'.

Related

Discussion: kid3-cli how to access multiple values for a tag

Discussion

  • Urs Fleisch

    Urs Fleisch - 2017-02-16

    Thanks for the report. I saw it in the specification, Kid3 indeed lets the user do forbidden things. I would prefer to leave the behaviour of '|' as it is, especially for TMCL and TIPL it is necessary to have it (of course I could have chosen another character, but '|' does not seem such a bad choice). I know of users who want to have multiple artist and genre frames, for ID3v2.4 string lists would be a viable alternative, but for ID3v2.3, no such thing exists.

    The interface of Kid3 should be uniform for all supported tags. For the Vorbis comments used in Ogg/Vorbis and FLAC files, the specification states that "field names are not required to be unique", the use of multiple artists is even encouraged. Currently, contents can be copied between different tags. Restricting multple frames would make this impossible.

    The third thing which keeps me back from implementing such restrictions right now is that I would like to check the state of support or at least graceful degradation of illegal multiple frames vs. string lists in popular players. Conforming to the specification is good as long as it does not make users unhappy. All those proprietary and partly unneeded "enhancements" of iTunes to the ID3 specification (MVNM, MVIN, WFED, PCST, TCAT, TDES, TGID, TCMP, TSO2, TSOC, CHAP, CTOC) violate the specification, but are used in the real world. Also the use of TPE2 as "Album Artist" is against the specification, but widely used.

     
  • Florent Coriat

    Florent Coriat - 2017-02-16

    I agree that Kid3 should present the same interface to all tags, and it should be able to gracefully (but maybe not silently) interpret illegal tags.

    However, i think Kid3 default operation should enforce standard compliance in generated tags. In my opinion, it should ideally not use '|', but display every frame on its own line. This is the natural way for Vorbis tags, and a good emulation for ID3 lists. TMCL and TIPL should be presented as double-fields frames (concatenated on write, like any other).
    In ID3v2.3, such lists do exist for artists ; but you're right : not for genre…
    Well, that's my view of the ideal behaviour, but may be hard to code and too strict for some people who might keep an "expert mode" that allows forbidden things (and multiple genres…). And of course it should allow to manipulate iTunes tags.

    The problem with Kid3 current behaviour is that it silently allows to generate illegal frames, and its UI does not clearly states how '|' can be used for ID3. So as a compromise, I think it could have at least options and warnings to enforce the standard in generated tags, like, for example :

    • display a warning when (first) / prevent adding duplicate or illegal (iTunes…) frames in ID3 tags (particularly in a previously conforming tag), recalling the '|' usage for duplicates
    • an option to automatically / a manual action to "convert" illegal tags to compliant ones
    • a "strict mode" with everything enforced…
     

    Last edit: Florent Coriat 2017-02-17
  • Urs Fleisch

    Urs Fleisch - 2017-02-18

    I will try to improve this and also make the entry of string lists more intuitive.

     
  • Urs Fleisch

    Urs Fleisch - 2017-06-16
    • status: open --> closed
     
  • Urs Fleisch

    Urs Fleisch - 2017-06-16

    Version 3.5.0 has now an option in "Tags/Tag2/ID3v2/Mark standard violations" to mark frames which violate the standard. You can also filter for files which have a marked file.

     
MongoDB Logo MongoDB