fix(scanner): preserve parentheses in lyrics when processing alias tags (#4985)
Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -250,7 +250,15 @@ func processPairMapping(name model.TagName, mapping model.TagConf, lowered model
|
|||||||
id3Base := parseID3Pairs(name, lowered)
|
id3Base := parseID3Pairs(name, lowered)
|
||||||
|
|
||||||
if len(aliasValues) > 0 {
|
if len(aliasValues) > 0 {
|
||||||
id3Base = append(id3Base, parseVorbisPairs(aliasValues)...)
|
// For lyrics, don't use parseVorbisPairs as parentheses in lyrics content
|
||||||
|
// should not be interpreted as language keys (e.g. "(intro)" is not a language)
|
||||||
|
if name == model.TagLyrics {
|
||||||
|
for _, v := range aliasValues {
|
||||||
|
id3Base = append(id3Base, NewPair("xxx", v))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
id3Base = append(id3Base, parseVorbisPairs(aliasValues)...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return id3Base
|
return id3Base
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,6 +246,18 @@ var _ = Describe("Metadata", func() {
|
|||||||
metadata.NewPair("eng", "Lyrics"),
|
metadata.NewPair("eng", "Lyrics"),
|
||||||
))
|
))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("should preserve lyrics starting with parentheses from alias tags", func() {
|
||||||
|
props.Tags = model.RawTags{
|
||||||
|
"LYRICS": {"(line one)\nline two\nline three"},
|
||||||
|
}
|
||||||
|
md = metadata.New(filePath, props)
|
||||||
|
|
||||||
|
Expect(md.All()).To(HaveKey(model.TagLyrics))
|
||||||
|
Expect(md.Strings(model.TagLyrics)).To(ContainElements(
|
||||||
|
metadata.NewPair("xxx", "(line one)\nline two\nline three"),
|
||||||
|
))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Describe("ReplayGain", func() {
|
Describe("ReplayGain", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user