diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py index c859ed7de..55a037009 100644 --- a/api/funkwhale_api/subsonic/views.py +++ b/api/funkwhale_api/subsonic/views.py @@ -269,7 +269,20 @@ class SubsonicViewSet(viewsets.GenericViewSet): ) @find_object(music_models.Artist.objects.all(), filter_playable=True) def get_artist_info2(self, request, *args, **kwargs): - payload = {"artist-info2": {}} + artist = kwargs.pop("obj") + artist_info = {} + if artist.mbid: + artist_info["musicBrainzId"] = [str(artist.mbid)] + if artist.attachment_cover: + artist_info["mediumImageUrl"] = [ + artist.attachment_cover.download_url_medium_square_crop + ] + artist_info["largeImageUrl"] = [ + artist.attachment_cover.download_url_large_square_crop + ] + if artist.description: + artist_info["biography"] = [artist.description.rendered] + payload = {"artistInfo2": artist_info} return response.Response(payload, status=200) diff --git a/api/tests/subsonic/test_views.py b/api/tests/subsonic/test_views.py index f11f863fa..a1a6708ec 100644 --- a/api/tests/subsonic/test_views.py +++ b/api/tests/subsonic/test_views.py @@ -166,7 +166,11 @@ def test_get_artist_info2( artist = factories["music.Artist"](playable=True) playable_by = mocker.spy(music_models.ArtistQuerySet, "playable_by") - expected = {"artist-info2": {}} + expected = { + "artistInfo2": { + "musicBrainzId": [artist.mbid], + } + } response = logged_in_api_client.get(url, {"id": artist.pk}) assert response.status_code == 200 diff --git a/changes/changelog.d/subsonic-artistinfo2.feature b/changes/changelog.d/subsonic-artistinfo2.feature new file mode 100644 index 000000000..e01f822f0 --- /dev/null +++ b/changes/changelog.d/subsonic-artistinfo2.feature @@ -0,0 +1 @@ +Implement Subsonic getArtistInfo2 response