mirror of
https://git.sr.ht/~joren/streamrip-go
synced 2026-07-27 23:42:28 +02:00
feat: infer beatport release artist
This commit is contained in:
@@ -114,7 +114,7 @@ func TestAlbumMetadataCollapsesManyReleaseArtists(t *testing.T) {
|
||||
writeJSON(t, w, map[string]any{
|
||||
"id": 7,
|
||||
"name": "Compilation",
|
||||
"track_count": 1,
|
||||
"track_count": 2,
|
||||
"artists": []any{
|
||||
map[string]any{"id": 1, "name": "A"},
|
||||
map[string]any{"id": 2, "name": "B"},
|
||||
@@ -125,12 +125,10 @@ func TestAlbumMetadataCollapsesManyReleaseArtists(t *testing.T) {
|
||||
case "/catalog/releases/7/tracks/":
|
||||
writeJSON(t, w, map[string]any{
|
||||
"next": nil,
|
||||
"results": []any{map[string]any{
|
||||
"id": 42,
|
||||
"name": "Track Name",
|
||||
"number": 1,
|
||||
"artists": []any{map[string]any{"id": 1, "name": "A"}},
|
||||
}},
|
||||
"results": []any{
|
||||
map[string]any{"id": 42, "name": "Track A", "number": 1, "artists": []any{map[string]any{"id": 1, "name": "A"}}},
|
||||
map[string]any{"id": 43, "name": "Track B", "number": 2, "artists": []any{map[string]any{"id": 2, "name": "B"}}},
|
||||
},
|
||||
})
|
||||
default:
|
||||
t.Fatalf("unexpected path %q", r.URL.Path)
|
||||
@@ -154,6 +152,52 @@ func TestAlbumMetadataCollapsesManyReleaseArtists(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAlbumMetadataUsesArtistPresentOnEveryTrack(t *testing.T) {
|
||||
c, closeServer := newTestClient(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
switch r.URL.Path {
|
||||
case "/catalog/releases/7/":
|
||||
writeJSON(t, w, map[string]any{
|
||||
"id": 7,
|
||||
"name": "Artist Album",
|
||||
"track_count": 3,
|
||||
"artists": []any{
|
||||
map[string]any{"id": 1, "name": "Main"},
|
||||
map[string]any{"id": 2, "name": "Guest A"},
|
||||
map[string]any{"id": 3, "name": "Guest B"},
|
||||
map[string]any{"id": 4, "name": "Guest C"},
|
||||
},
|
||||
})
|
||||
case "/catalog/releases/7/tracks/":
|
||||
writeJSON(t, w, map[string]any{
|
||||
"next": nil,
|
||||
"results": []any{
|
||||
map[string]any{"id": 42, "name": "Track A", "number": 1, "artists": []any{map[string]any{"id": 1, "name": "Main"}, map[string]any{"id": 2, "name": "Guest A"}}},
|
||||
map[string]any{"id": 43, "name": "Track B", "number": 2, "artists": []any{map[string]any{"id": 1, "name": "Main"}, map[string]any{"id": 3, "name": "Guest B"}}},
|
||||
map[string]any{"id": 44, "name": "Track C", "number": 3, "artists": []any{map[string]any{"id": 1, "name": "Main"}, map[string]any{"id": 4, "name": "Guest C"}}},
|
||||
},
|
||||
})
|
||||
default:
|
||||
t.Fatalf("unexpected path %q", r.URL.Path)
|
||||
}
|
||||
}))
|
||||
defer closeServer()
|
||||
|
||||
meta, err := c.GetMetadata(context.Background(), "7", "album")
|
||||
if err != nil {
|
||||
t.Fatalf("GetMetadata() error = %v", err)
|
||||
}
|
||||
artist := meta["artist"].(map[string]any)
|
||||
if artist["name"] != "Main" {
|
||||
t.Fatalf("album artist = %q, want Main", artist["name"])
|
||||
}
|
||||
track := meta["tracks"].(map[string]any)["items"].([]any)[0].(map[string]any)
|
||||
album := track["album"].(map[string]any)
|
||||
albumArtist := album["artist"].(map[string]any)
|
||||
if albumArtist["name"] != "Main" {
|
||||
t.Fatalf("track album artist = %q, want Main", albumArtist["name"])
|
||||
}
|
||||
}
|
||||
|
||||
func TestReleaseArtistCollapseCanBeDisabled(t *testing.T) {
|
||||
cfg := &config.Config{Session: config.DefaultConfigData(), File: config.DefaultConfigData()}
|
||||
cfg.Session.Beatport.VariousArtistsThreshold = -1
|
||||
|
||||
Reference in New Issue
Block a user