diff --git a/streamrip/core.py b/streamrip/core.py index 0d49a52..e82921d 100644 --- a/streamrip/core.py +++ b/streamrip/core.py @@ -251,11 +251,13 @@ class MusicDL(list): "{bit_depth} bit / {sampling_rate} Hz\n" "Version: {version}" ) - fields = (fname for _, fname, _, _ in Formatter().parse(fmt) if fname) - ret = fmt.format(**{k: media.get(k, "Unknown") for k in fields}) + elif isinstance(media, Artist): + fmt = "{name}" else: raise NotImplementedError + fields = (fname for _, fname, _, _ in Formatter().parse(fmt) if fname) + ret = fmt.format(**{k: media.get(k, "Unknown") for k in fields}) return ret def interactive_search( diff --git a/streamrip/downloader.py b/streamrip/downloader.py index 5d8f7d1..3848189 100644 --- a/streamrip/downloader.py +++ b/streamrip/downloader.py @@ -1091,8 +1091,6 @@ class Artist(Tracklist): def load_meta(self): """Send an API call to get album info based on id.""" self.meta = self.client.get(self.id, media_type="artist") - # TODO find better fix for this - self.name = self.meta['items'][0]['artist']['name'] self._load_albums() def _load_albums(self): @@ -1100,12 +1098,15 @@ class Artist(Tracklist): generate album objects and append them to self. """ if self.client.source == "qobuz": + self.name = self.meta['name'] albums = self.meta["albums"]["items"] elif self.client.source == "tidal": + self.name = self.meta['items'][0]['artist']['name'] albums = self.meta["items"] elif self.client.source == "deezer": + # TODO: load artist name albums = self.meta["albums"] else: @@ -1171,6 +1172,10 @@ class Artist(Tracklist): logger.debug(f"{i} albums downloaded") + @property + def title(self): + return self.name + @classmethod def from_api(cls, item: dict, client: ClientInterface, source: str = "qobuz"): """Create an Artist object from the api response of Qobuz, Tidal,