diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-03-13 06:38:13 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-03-13 06:40:32 +0100 |
| commit | bbb6051fdd34fabf7565df480df66c128ffa4ef5 (patch) | |
| tree | 8c55f15714e624acd8ba8f8fd0d5cf67584c01fa | |
| parent | 832f5ce4433687551812e4208e1d565264130711 (diff) | |
| download | tidal-dl-ng-bbb6051fdd34fabf7565df480df66c128ffa4ef5.tar.gz | |
✨ Track media items will be re-created with album information. Path format refactored.
| -rw-r--r-- | tidal_dl_ng/download.py | 19 | ||||
| -rw-r--r-- | tidal_dl_ng/helper/path.py | 11 |
2 files changed, 16 insertions, 14 deletions
diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 7490753..82e1bee 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -156,20 +156,19 @@ class Download: def instantiate_media( self, - session: Session, media_type: type[MediaType.TRACK, MediaType.VIDEO, MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX], id_media: str, - ) -> Track | Video: + ) -> Track | Video | Album | Playlist | Mix: if media_type == MediaType.TRACK: - media = Track(session, id_media) + media = self.session.track(id_media, with_album=True) elif media_type == MediaType.VIDEO: - media = Video(session, id_media) + media = self.session.video(id_media) elif media_type == MediaType.ALBUM: - media = Album(self.session, id_media) + media = self.session.album(id_media) elif media_type == MediaType.PLAYLIST: - media = Playlist(self.session, id_media) + media = self.session.playlist(id_media) elif media_type == MediaType.MIX: - media = Mix(self.session, id_media) + media = self.session.mix(id_media) else: raise MediaUnknown @@ -186,7 +185,9 @@ class Download: ) -> (bool, str): # If no media instance is provided, we need to create the media instance. if media_id and media_type: - media = self.instantiate_media(self.session, media_type, media_id) + media = self.instantiate_media(media_type, media_id) + elif isinstance(media, Track): + media = self.session.track(media.id, with_album=True) elif not media: raise MediaMissing @@ -342,7 +343,7 @@ class Download: ): # If no media instance is provided, we need to create the media instance. if media_id and media_type: - media = self.instantiate_media(self.session, media_type, media_id) + media = self.instantiate_media(media_type, media_id) elif not media: raise MediaMissing diff --git a/tidal_dl_ng/helper/path.py b/tidal_dl_ng/helper/path.py index 81b7b1a..65f9163 100644 --- a/tidal_dl_ng/helper/path.py +++ b/tidal_dl_ng/helper/path.py @@ -101,16 +101,16 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | result = media.name elif isinstance(media, Track): result = media.album.name - elif name == "track_num": + elif name == "album_track_num": if isinstance(media, Track | Video): num_tracks: int = media.album.num_tracks if hasattr(media, "album") else 1 - count_digits: int = int(math.log10(len(str(num_tracks)))) + 1 + count_digits: int = int(math.log10(num_tracks)) + 1 result = str(media.track_num).zfill(count_digits) - elif name == "track_id": + elif name == "album_num_tracks": if isinstance(media, Track | Video): - result = media.id + result = str(media.album.num_tracks if hasattr(media, "album") else 1) elif name == "track_id": - if isinstance(media, Track): + if isinstance(media, Track | Video): result = media.id elif name == "playlist_id": if isinstance(media, Playlist): @@ -148,6 +148,7 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | except Exception as e: # TODO: Implement better exception logging. print(e) + pass return result |
