From 9e51f696cce11466f6efce80f2f3b37f9f11983f Mon Sep 17 00:00:00 2001 From: strecke <35091155+strecke@users.noreply.github.com> Date: Sat, 19 Sep 2026 00:36:24 +0200 Subject: [PATCH] fix(listenbrainz): remove ArtistURLRetriever implementation ListenBrainz metadata only provides the artist's official homepage, which is not a Last.fm URL. Implementing ArtistURLRetriever causes ListenBrainz to intercept GetArtistURL, populating model.Artist.ExternalUrl with the artist homepage and preventing the Last.fm agent from supplying the canonical Last.fm profile URL. Fixes #6165 Signed-off-by: strecke <35091155+strecke@users.noreply.github.com> --- adapters/listenbrainz/agent.go | 13 -------- adapters/listenbrainz/agent_test.go | 50 ++++------------------------- 2 files changed, 6 insertions(+), 57 deletions(-) diff --git a/adapters/listenbrainz/agent.go b/adapters/listenbrainz/agent.go index a59a5393f..a9bdf4f08 100644 --- a/adapters/listenbrainz/agent.go +++ b/adapters/listenbrainz/agent.go @@ -116,18 +116,6 @@ func (l *listenBrainzAgent) IsAuthorized(ctx context.Context, userId string) boo return err == nil && sk != "" } -func (l *listenBrainzAgent) GetArtistURL(ctx context.Context, id, name, mbid string) (string, error) { - if mbid == "" { - return "", agents.ErrNotFound - } - - url, err := l.client.getArtistUrl(ctx, mbid) - if err != nil { - return "", err - } - return url, nil -} - func (l *listenBrainzAgent) GetArtistTopSongs(ctx context.Context, id, artistName, mbid string, count int) ([]agents.Song, error) { resp, err := l.client.getArtistTopSongs(ctx, mbid, count) if err != nil { @@ -255,7 +243,6 @@ func init() { var ( _ agents.ArtistTopSongsRetriever = (*listenBrainzAgent)(nil) - _ agents.ArtistURLRetriever = (*listenBrainzAgent)(nil) _ agents.ArtistSimilarRetriever = (*listenBrainzAgent)(nil) _ agents.SimilarSongsByTrackRetriever = (*listenBrainzAgent)(nil) ) diff --git a/adapters/listenbrainz/agent_test.go b/adapters/listenbrainz/agent_test.go index a201b7c3a..cd2d45ee8 100644 --- a/adapters/listenbrainz/agent_test.go +++ b/adapters/listenbrainz/agent_test.go @@ -179,50 +179,12 @@ var _ = Describe("listenBrainzAgent", func() { }) }) - Describe("GetArtistUrl", func() { - var agent *listenBrainzAgent - var httpClient *tests.FakeHttpClient - BeforeEach(func() { - httpClient = &tests.FakeHttpClient{} - client := newClient("BASE_URL", httpClient) - agent = listenBrainzConstructor(ds) - agent.client = client - }) - - It("returns artist url when MBID present", func() { - f, _ := os.Open("tests/fixtures/listenbrainz.artist.metadata.homepage.json") - httpClient.Res = http.Response{Body: f, StatusCode: 200} - Expect(agent.GetArtistURL(ctx, "", "", "d2a92ee2-27ce-4e71-bfc5-12e34fe8ef56")).To(Equal("http://projectmili.com/")) - Expect(httpClient.RequestCount).To(Equal(1)) - Expect(httpClient.SavedRequest.URL.Query().Get("artist_mbids")).To(Equal("d2a92ee2-27ce-4e71-bfc5-12e34fe8ef56")) - }) - - It("returns error when url not present", func() { - f, _ := os.Open("tests/fixtures/listenbrainz.artist.metadata.no_homepage.json") - httpClient.Res = http.Response{Body: f, StatusCode: 200} - _, err := agent.GetArtistURL(ctx, "", "", "7c2cc610-f998-43ef-a08f-dae3344b8973") - Expect(err).To(HaveOccurred()) - Expect(httpClient.RequestCount).To(Equal(1)) - Expect(httpClient.SavedRequest.URL.Query().Get("artist_mbids")).To(Equal("7c2cc610-f998-43ef-a08f-dae3344b8973")) - }) - - It("returns error when fetch calls fails", func() { - httpClient.Err = errors.New("error") - _, err := agent.GetArtistURL(ctx, "", "", "7c2cc610-f998-43ef-a08f-dae3344b8973") - Expect(err).To(HaveOccurred()) - Expect(httpClient.RequestCount).To(Equal(1)) - Expect(httpClient.SavedRequest.URL.Query().Get("artist_mbids")).To(Equal("7c2cc610-f998-43ef-a08f-dae3344b8973")) - }) - - It("returns error when ListenBrainz returns an error", func() { - httpClient.Res = http.Response{ - Body: io.NopCloser(bytes.NewBufferString(`{"code": 400,"error": "artist mbid 1 is not valid."}`)), - StatusCode: 400, - } - _, err := agent.GetArtistURL(ctx, "", "", "7c2cc610-f998-43ef-a08f-dae3344b8973") - Expect(err).To(HaveOccurred()) - Expect(httpClient.RequestCount).To(Equal(1)) - Expect(httpClient.SavedRequest.URL.Query().Get("artist_mbids")).To(Equal("7c2cc610-f998-43ef-a08f-dae3344b8973")) + Describe("ArtistURLRetriever", func() { + It("does not implement ArtistURLRetriever", func() { + agent := listenBrainzConstructor(ds) + var iface any = agent + _, ok := iface.(agents.ArtistURLRetriever) + Expect(ok).To(BeFalse()) }) })