diff --git a/internal/app/app.go b/internal/app/app.go index 3050bc5..c5fef73 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -1310,7 +1310,7 @@ func titleFromMetadata(meta map[string]any, fallback string) string { if title, ok := meta["title"].(string); ok { title = strings.TrimSpace(title) version := strings.TrimSpace(jsonutil.StringFromAny(meta["version"])) - if version != "" { + if version != "" && !isOriginalMix(version) { return title + " (" + version + ")" } if title != "" { @@ -1320,6 +1320,10 @@ func titleFromMetadata(meta map[string]any, fallback string) string { return fallback } +func isOriginalMix(version string) bool { + return strings.EqualFold(strings.TrimSpace(version), "Original Mix") +} + func replaygainGainFromAny(v any) string { s := strings.TrimSpace(jsonutil.StringFromAny(v)) if s == "" { diff --git a/internal/app/app_test.go b/internal/app/app_test.go index b54f447..14772e1 100644 --- a/internal/app/app_test.go +++ b/internal/app/app_test.go @@ -893,6 +893,20 @@ func TestBuildTagMetadataArtistList(t *testing.T) { } } +func TestTitleFromMetadataSkipsOriginalMix(t *testing.T) { + meta := map[string]any{"title": "Dance Done", "version": "Original Mix"} + if got := titleFromMetadata(meta, "42"); got != "Dance Done" { + t.Fatalf("titleFromMetadata()=%q", got) + } +} + +func TestTitleFromMetadataIncludesNonOriginalMix(t *testing.T) { + meta := map[string]any{"title": "Dance Done", "version": "Extended Mix"} + if got := titleFromMetadata(meta, "42"); got != "Dance Done (Extended Mix)" { + t.Fatalf("titleFromMetadata()=%q", got) + } +} + func TestNormalizeInitialKey(t *testing.T) { tests := map[string]string{ "C Major": "C",