summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-03-13 06:38:13 +0100
committerRobert Honz <exislow+github@gmail.com>2024-03-13 06:40:32 +0100
commitbbb6051fdd34fabf7565df480df66c128ffa4ef5 (patch)
tree8c55f15714e624acd8ba8f8fd0d5cf67584c01fa
parent832f5ce4433687551812e4208e1d565264130711 (diff)
downloadtidal-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.py19
-rw-r--r--tidal_dl_ng/helper/path.py11
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