Author Topic: Can't process tags with 3-character identifiers  (Read 3883 times)

Abject999

  • Newbie
  • *
  • Posts: 4
    • View Profile
Can't process tags with 3-character identifiers
« on: October 22, 2012, 20:26:33 »
I have a large number of files that don't appear in the artist or album lists.
After lots of fluffing about I found that the identifiers were only 3 characters long.
kid3-qt can process the 3-char fields and I used that to rewrite the tags. The
identifiers were now 4 characters long, and the files appeared in the lists.

What is the likelihood that gmb could be made to process 3-character identifiers?


A hex dump of the first few lines of a sample file ...

Original File:
0000000: 4944 3303 0000 0000 112f 5454 3200 0000  ID3....../TT2...
0000010: 0014 0000 0052 6f63 6b20 2620 526f 6c6c  .....Rock & Roll
0000020: 2053 7569 6369 6465 5450 3100 0000 000c   SuicideTP1.....
0000030: 0000 0044 6176 6964 2042 6f77 6965 5443  ...David BowieTC
0000040: 4d00 0000 000d 0000 0044 6176 6964 2042  M........David B
0000050: 6f77 6965 0054 414c 0000 0000 2000 0000  owie.TAL.... ...
0000060: 5468 6520 5369 6e67 6c65 7320 436f 6c6c  The Singles Coll
0000070: 6563 7469 6f6e 205b 4469 7363 2031 5d54  ection [Disc 1]T
0000080: 524b 0000 0000 0600 0000 3132 2f31 3954  RK........12/19T
0000090: 5041 0000 0000 0400 0000 312f 3254 5945  PA........1/2TYE
00000a0: 0000 0000 0500 0000 3139 3933 5443 4f00  ........1993TCO.
00000b0: 0000 0005 0000 0028 3137 2954 454e 0000  .......(17)TEN..
00000c0: 0000 1000 0000 6954 756e 6573 2076 362e  ......iTunes v6.
00000d0: 302e 342e 3243 4f4d 0000 0000 5f00 0000  0.4.2COM...._...
00000e0: 656e 6700 2030 3030 3030 3538 3820 3030  eng. 00000588 00

File after being saved from kid3-qt (Title changed)
0000000: 4944 3303 0000 0000 112f 5449 5432 0000  ID3....../TIT2..
0000010: 0014 0000 0044 7563 6b20 2620 446f 6c6c  .....Duck & Doll
0000020: 2053 7569 6369 6465 5450 4531 0000 000c   SuicideTPE1....
0000030: 0000 0044 6176 6964 2042 6f77 6965 5443  ...David BowieTC
0000040: 4f4d 0000 000d 0000 0044 6176 6964 2042  OM.......David B
0000050: 6f77 6965 0054 414c 4200 0000 2000 0000  owie.TALB... ...
0000060: 5468 6520 5369 6e67 6c65 7320 436f 6c6c  The Singles Coll
0000070: 6563 7469 6f6e 205b 4469 7363 2031 5d54  ection [Disc 1]T
0000080: 5243 4b00 0000 0600 0000 3132 2f31 3954  RCK.......12/19T
0000090: 504f 5300 0000 0400 0000 312f 3254 5945  POS.......1/2TYE
00000a0: 5200 0000 0500 0000 3139 3933 5443 4f4e  R.......1993TCON
00000b0: 0000 0005 0000 0028 3137 2954 454e 4300  .......(17)TENC.
00000c0: 0000 1040 0000 6954 756e 6573 2076 362e  [email protected] v6.
00000d0: 302e 342e 3243 4f4d 4d00 0000 5f00 0000  0.4.2COMM..._...
00000e0: 656e 6700 2030 3030 3030 3538 3820 3030  eng. 00000588 00

Quentin Sculo

  • Administrator
  • Hero Member
  • *****
  • Posts: 1082
    • View Profile
Re: Can't process tags with 3-character identifiers
« Reply #1 on: October 23, 2012, 00:56:22 »
3 characters identifiers should only be used id3v2.2, not in 2.3 or 2.4. The version number indicate 2.3 and the frame header format seems to be that of v2.3 (4 bytes identifier + 4 bytes for size, in 2.2 it is 3 + 3).
So it seems a software upgraded the tag but kept the 3 letter identifier with a 00 as 4th byte when it should be only uppercase letters or digits ("The frame ID made out of the characters capital A-Z and 0-9") even though most 3-letter identifiers have a perfect 4-letter identifier match in v2.3
I guess I could make gmb tolerate that, depends how widespread this is. Do you know what software made this upgrade (itunes ?) and could you test how a few players handle them, and what the "id3v2 -l filename.mp3" command returns ?

Abject999

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Can't process tags with 3-character identifiers
« Reply #2 on: October 23, 2012, 11:36:31 »
id3v2 tag info for 1-12 Rock & Roll Suicide.mp3:
TIT2 (Title/songname/content description): Rock & Roll Suicide
TPE1 (Lead performer(s)/Soloist(s)): David Bowie
TCOM (Composer): David Bowie
TALB (Album/Movie/Show title): The Singles Collection [Disc 1]
TRCK (Track number/Position in set): 12/19
TPOS (Part of a set): 1/2
TYER (Year): 1993
TCON (Content type): Rock (17)
TENC (Encoded by): iTunes v6.0.4.2
COMM (Comments): ()[eng]:  00000588 00000682 00005604 00008D25 00029229 00028414 00007A69 00007C6E 000289CB 00023500
COMM (Comments): ()[eng]:  00000000 00000210 000007F8 0000000000786378 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
PRIV (Private frame):  (unimplemented)
PRIV (Private frame):  (unimplemented)
PRIV (Private frame):  (unimplemented)
PRIV (Private frame):  (unimplemented)
PRIV (Private frame):  (unimplemented)
PRIV (Private frame):  (unimplemented)
TPUB (Publisher): EMI Music Distribution
PRIV (Private frame):  (unimplemented)
TPE2 (Band/orchestra/accompaniment): David Bowie
COMM (Comments): (iTunes_CDDB_IDs)[eng]: 19+664D58DC1D548BB110A3A9DB134B46DD+127

   I checked to make sure that the file still has 3 character id's.


find . -name "*.mp3" -type f  -exec xxd -l 16 '{}' \; | ( grep "TT2" ) > ~/Desktop/IDchk

   I used the above to try to get an idea of how many files have 3 char id's. IDchk contains
   a little over 1400 lines.

   The first four bytes for each grep are a mix of ID3 x02 and ID3 x03.
   There would have been more, but I've been moving files around and fixing album info
    for a while, now, and that's probably updated several tags already.

I'll figure out a way of getting the TENC info for the affected files and report back (I suspect
it will be iTunes)

The only other players I currently have are VLC and Parole.
    VLC doesn't report any tag data, and uses the file name as the Title.
    Parole shows the proper name in the playlist, but I don't know if that's because it
          processed the TT2, or because it was clever with the file name. I don't know how to
         make it show tag data.

    I'll find some other players to try after I've got the encodings.

Thank you for your consideration.



Abject999

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Can't process tags with 3-character identifiers
« Reply #3 on: October 24, 2012, 16:04:45 »
The following table gives  the value of the TEN (encoder) frames,
   - how many files had that value,
    the version.revision numbers of the containing ID3 tags
  (e.g. all 13 files encoded with 9.0.2.25 had v3.0 tags only)

iTunes 10.1.1      - x7     v2.0
iTunes 9.0.2.25   - x13           v3.0
iTunes 9.0.3.15   - x1     v2.0
iTunes v4.0.1      - x3     v2.0  v3.0
iTunes v6.0.4.2   - lots   v2.0  v3.0
iTunes v7.4.2      - x5     v2.0
iTunes v7.5         - x1     v2.0

(Attached: noobie script to print TEN frames. Caution: it might make your eyes bleed :/ )

Quentin Sculo

  • Administrator
  • Hero Member
  • *****
  • Posts: 1082
    • View Profile
Re: Can't process tags with 3-character identifiers
« Reply #4 on: October 26, 2012, 04:01:18 »
I'm going to add support for these 3-letter frames, it's not hard, and some other software already support it.
The way I'm going to do it, all frames will be upgraded to a 4-letter frame name when written.

Can you send me one or two of these file by email to test it ? In particular one with an embedded picture would be nice, as their format has some small changes between 2.2 and 2.3.
« Last Edit: October 26, 2012, 04:07:02 by Quentin Sculo »

Abject999

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Can't process tags with 3-character identifiers
« Reply #5 on: October 26, 2012, 06:13:29 »
Sorry, my 'bug' report was wrong. gmb can already handle 3-char frame id's, for the
most part.
It didn't occur to me for quite a while that my generated list of files with 3-char frames
constituted nearly half the mp3's I have on the disc, and I was pretty sure that I wasn't
getting that many <unknown> <unknown>s in the track list.
(It was the <unknown>s that caused me to look into the files in the first place ... after the
right-click->song properties,->get the file name, I'd fire up kid3-qt and see that the file
already had tag data. If I saved the tag - by changing one letter in the title, or deleting one
of the comment frames, say - then the tag would be re-written with 4-frameIDs).

It seems that if id3v2 -l produces a listing like:
(from thisamericanlife.org, weekly podcast from Chicago public radio)

  id3v2 tag info for TAL-20121019-477.mp3:
  PIC (Attached picture): ()[JPG, 0]: , 19854 bytes
  TT2 (Title/songname/content description): #477: Getting Away With It
  TP1 (Lead performer(s)/Soloist(s)): This American Life
  TP2 (Band/orchestra/accompaniment): Chicago Public Media
  TYE (Year): 2012
  TCO (Content type): Podcast (255)
  COM (Comments): ()[eng]: (C) 1995-2012 Chicago Public Media & Ira Glass
  TAL-20121019-477.mp3: No ID3v1 tag

then gmb will happily show the info.

I've pasted [songs] from gmbrc into a spreadsheet, and I think I can use that to produce
a manageable list of files I have to examine.