diff --git a/scanner/metadata/metadata.go b/scanner/metadata/metadata.go index a9cfdaa79..86d3af49f 100644 --- a/scanner/metadata/metadata.go +++ b/scanner/metadata/metadata.go @@ -79,7 +79,7 @@ func (m *baseMetadata) Composer() string { return m.getTag("composer", "t func (m *baseMetadata) Genre() string { return m.getTag("genre") } func (m *baseMetadata) Year() int { return m.parseYear("date") } func (m *baseMetadata) Comment() string { return m.getTag("comment") } -func (m *baseMetadata) Compilation() bool { return m.parseBool("compilation") } +func (m *baseMetadata) Compilation() bool { return m.parseBool("tcmp", "compilation") } func (m *baseMetadata) TrackNumber() (int, int) { return m.parseTuple("track", "tracknumber") } func (m *baseMetadata) DiscNumber() (int, int) { return m.parseTuple("disc", "discnumber") } func (m *baseMetadata) DiscSubtitle() string { @@ -168,10 +168,12 @@ func (m *baseMetadata) parseTuple(tags ...string) (int, int) { return 0, 0 } -func (m *baseMetadata) parseBool(tagName string) bool { - if v, ok := m.tags[tagName]; ok { - i, _ := strconv.Atoi(strings.TrimSpace(v)) - return i == 1 +func (m *baseMetadata) parseBool(tags ...string) bool { + for _, tagName := range tags { + if v, ok := m.tags[tagName]; ok { + i, _ := strconv.Atoi(strings.TrimSpace(v)) + return i == 1 + } } return false } diff --git a/scanner/metadata/taglib/taglib_parser.cpp b/scanner/metadata/taglib/taglib_parser.cpp index 60dfbd53b..968c2d1f3 100644 --- a/scanner/metadata/taglib/taglib_parser.cpp +++ b/scanner/metadata/taglib/taglib_parser.cpp @@ -57,10 +57,10 @@ int taglib_read(const char *filename, unsigned long id) { if (mp3File->ID3v2Tag()) { const auto &frameListMap(mp3File->ID3v2Tag()->frameListMap()); - if (!frameListMap["TCMP"].isEmpty()) - tags.insert("compilation", frameListMap["TCMP"].front()->toString()); - if (!frameListMap["TSST"].isEmpty()) - tags.insert("discsubtitle", frameListMap["TSST"].front()->toString()); + for (const auto &[name, values] : frameListMap) { + if (!values.isEmpty()) + tags.insert(name, values.front()->toString()); + } } }