Move alternative tag names mapping to metadata
This commit is contained in:
@@ -24,6 +24,15 @@ func (e *Extractor) Parse(paths ...string) (map[string]metadata.ParsedTags, erro
|
||||
return fileTags, nil
|
||||
}
|
||||
|
||||
func (e *Extractor) CustomMappings() metadata.ParsedTags {
|
||||
return metadata.ParsedTags{
|
||||
"title": {"titlesort"},
|
||||
"album": {"albumsort"},
|
||||
"artist": {"artistsort"},
|
||||
"tracknumber": {"trck", "_track"},
|
||||
}
|
||||
}
|
||||
|
||||
func (e *Extractor) extractMetadata(filePath string) (metadata.ParsedTags, error) {
|
||||
tags, err := Read(filePath)
|
||||
if err != nil {
|
||||
@@ -31,13 +40,6 @@ func (e *Extractor) extractMetadata(filePath string) (metadata.ParsedTags, error
|
||||
return nil, err
|
||||
}
|
||||
|
||||
alternativeTags := map[string][]string{
|
||||
"title": {"titlesort"},
|
||||
"album": {"albumsort"},
|
||||
"artist": {"artistsort"},
|
||||
"tracknumber": {"trck", "_track"},
|
||||
}
|
||||
|
||||
if length, ok := tags["lengthinmilliseconds"]; ok && len(length) > 0 {
|
||||
millis, _ := strconv.Atoi(length[0])
|
||||
if duration := float64(millis) / 1000.0; duration > 0 {
|
||||
@@ -45,13 +47,6 @@ func (e *Extractor) extractMetadata(filePath string) (metadata.ParsedTags, error
|
||||
}
|
||||
}
|
||||
|
||||
for tagName, alternatives := range alternativeTags {
|
||||
for _, altName := range alternatives {
|
||||
if altValue, ok := tags[altName]; ok {
|
||||
tags[tagName] = append(tags[tagName], altValue...)
|
||||
}
|
||||
}
|
||||
}
|
||||
return tags, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@ var _ = Describe("Extractor", func() {
|
||||
Expect(m).To(HaveKeyWithValue("tcmp", []string{"1"})) // Compilation
|
||||
Expect(m).To(HaveKeyWithValue("genre", []string{"Rock"}))
|
||||
Expect(m).To(HaveKeyWithValue("date", []string{"2014", "2014"}))
|
||||
Expect(m).To(HaveKeyWithValue("tracknumber", []string{"2/10", "2/10", "2"}))
|
||||
Expect(m).To(HaveKeyWithValue("discnumber", []string{"1/2"}))
|
||||
Expect(m).To(HaveKeyWithValue("has_picture", []string{"true"}))
|
||||
Expect(m).To(HaveKeyWithValue("duration", []string{"1.02"}))
|
||||
@@ -52,6 +51,10 @@ var _ = Describe("Extractor", func() {
|
||||
Expect(m).To(HaveKeyWithValue("lyrics", []string{"Lyrics 1\rLyrics 2"}))
|
||||
Expect(m).To(HaveKeyWithValue("bpm", []string{"123"}))
|
||||
|
||||
Expect(m).To(HaveKeyWithValue("tracknumber", []string{"2/10"}))
|
||||
m = m.Map(e.CustomMappings())
|
||||
Expect(m).To(HaveKeyWithValue("tracknumber", []string{"2/10", "2/10", "2"}))
|
||||
|
||||
m = mds["tests/fixtures/test.ogg"]
|
||||
Expect(err).To(BeNil())
|
||||
Expect(m).ToNot(HaveKey("title"))
|
||||
|
||||
Reference in New Issue
Block a user