Support for TXXX, WXXX and generic W frames

I hacked readTextWithDescrFrame() and readTFrame() to generalize them
to other case (presence or not of a language and whether or not the
data part is encoded (URL are not)

This patch depend of 3b7a3d548500bd10afa63819a9904ac12e15cdc5 since I found the
bug while developping this patch
This commit is contained in:
Xavier Henner
2015-05-24 12:23:30 +10:00
committed by David Howden
parent f6a1e5325c
commit 45d987ac1d
2 changed files with 62 additions and 11 deletions
+23 -2
View File
@@ -211,15 +211,36 @@ func readID3v2Frames(r io.Reader, h *ID3v2Header) (map[string]interface{}, error
}
switch {
case name == "TXXX" || name == "TXX":
t, err := readTextWithDescrFrame(b, false, true) // no lang, but enc
if err != nil {
return nil, err
}
result[rawName] = t
case name[0] == 'T':
txt, err := readTFrame(b)
txt, err := readTFrame(b, true) // text is encoded
if err != nil {
return nil, err
}
result[rawName] = txt
case name == "WXXX" || name == "WXX":
t, err := readTextWithDescrFrame(b, false, false) // no lang, no enc
if err != nil {
return nil, err
}
result[rawName] = t
case name[0] == 'W':
txt, err := readTFrame(b, false) // url are not encoded
if err != nil {
return nil, err
}
result[rawName] = txt
case name == "COMM" || name == "USLT":
t, err := readTextWithDescrFrame(b)
t, err := readTextWithDescrFrame(b, true, true) // both lang and enc
if err != nil {
return nil, err
}