diff --git a/endpoints/lastfm.py b/endpoints/lastfm.py index 9db2a0b..c7e6cfc 100644 --- a/endpoints/lastfm.py +++ b/endpoints/lastfm.py @@ -21,6 +21,7 @@ class LastFM(FastAPI): self.endpoints = { "get_artist_by_name": self.artist_by_name_handler, + "get_artist_albums": self.artist_album_handler, #tbd } @@ -49,3 +50,30 @@ class LastFM(FastAPI): 'success': True, 'result': artist_result } + + async def artist_album_handler(self, data: ValidArtistSearchRequest): + """ + Get artist's albums/releases + """ + artist = data.a.strip() + if not artist: + return { + 'err': True, + 'errorText': 'No artist specified' + } + + album_result = await self.lastfm.get_artist_albums(artist=artist) + album_result_out = [] + seen_release_titles = [] + + for release in album_result: + release_title = release.get('title') + if release_title.lower() in seen_release_titles: + continue + seen_release_titles.append(release_title.lower()) + album_result_out.append(release) + + return { + 'success': True, + 'result': album_result_out + }