✨ Track media items will be re-created with album information. Path format refactored.
This commit is contained in:
+10
-9
@@ -156,20 +156,19 @@ class Download:
|
|||||||
|
|
||||||
def instantiate_media(
|
def instantiate_media(
|
||||||
self,
|
self,
|
||||||
session: Session,
|
|
||||||
media_type: type[MediaType.TRACK, MediaType.VIDEO, MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX],
|
media_type: type[MediaType.TRACK, MediaType.VIDEO, MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX],
|
||||||
id_media: str,
|
id_media: str,
|
||||||
) -> Track | Video:
|
) -> Track | Video | Album | Playlist | Mix:
|
||||||
if media_type == MediaType.TRACK:
|
if media_type == MediaType.TRACK:
|
||||||
media = Track(session, id_media)
|
media = self.session.track(id_media, with_album=True)
|
||||||
elif media_type == MediaType.VIDEO:
|
elif media_type == MediaType.VIDEO:
|
||||||
media = Video(session, id_media)
|
media = self.session.video(id_media)
|
||||||
elif media_type == MediaType.ALBUM:
|
elif media_type == MediaType.ALBUM:
|
||||||
media = Album(self.session, id_media)
|
media = self.session.album(id_media)
|
||||||
elif media_type == MediaType.PLAYLIST:
|
elif media_type == MediaType.PLAYLIST:
|
||||||
media = Playlist(self.session, id_media)
|
media = self.session.playlist(id_media)
|
||||||
elif media_type == MediaType.MIX:
|
elif media_type == MediaType.MIX:
|
||||||
media = Mix(self.session, id_media)
|
media = self.session.mix(id_media)
|
||||||
else:
|
else:
|
||||||
raise MediaUnknown
|
raise MediaUnknown
|
||||||
|
|
||||||
@@ -186,7 +185,9 @@ class Download:
|
|||||||
) -> (bool, str):
|
) -> (bool, str):
|
||||||
# If no media instance is provided, we need to create the media instance.
|
# If no media instance is provided, we need to create the media instance.
|
||||||
if media_id and media_type:
|
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:
|
elif not media:
|
||||||
raise MediaMissing
|
raise MediaMissing
|
||||||
|
|
||||||
@@ -342,7 +343,7 @@ class Download:
|
|||||||
):
|
):
|
||||||
# If no media instance is provided, we need to create the media instance.
|
# If no media instance is provided, we need to create the media instance.
|
||||||
if media_id and media_type:
|
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:
|
elif not media:
|
||||||
raise MediaMissing
|
raise MediaMissing
|
||||||
|
|
||||||
|
|||||||
@@ -101,17 +101,17 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist |
|
|||||||
result = media.name
|
result = media.name
|
||||||
elif isinstance(media, Track):
|
elif isinstance(media, Track):
|
||||||
result = media.album.name
|
result = media.album.name
|
||||||
elif name == "track_num":
|
elif name == "album_track_num":
|
||||||
if isinstance(media, Track | Video):
|
if isinstance(media, Track | Video):
|
||||||
num_tracks: int = media.album.num_tracks if hasattr(media, "album") else 1
|
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)
|
result = str(media.track_num).zfill(count_digits)
|
||||||
|
elif name == "album_num_tracks":
|
||||||
|
if isinstance(media, Track | Video):
|
||||||
|
result = str(media.album.num_tracks if hasattr(media, "album") else 1)
|
||||||
elif name == "track_id":
|
elif name == "track_id":
|
||||||
if isinstance(media, Track | Video):
|
if isinstance(media, Track | Video):
|
||||||
result = media.id
|
result = media.id
|
||||||
elif name == "track_id":
|
|
||||||
if isinstance(media, Track):
|
|
||||||
result = media.id
|
|
||||||
elif name == "playlist_id":
|
elif name == "playlist_id":
|
||||||
if isinstance(media, Playlist):
|
if isinstance(media, Playlist):
|
||||||
result = media.id
|
result = media.id
|
||||||
@@ -148,6 +148,7 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist |
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# TODO: Implement better exception logging.
|
# TODO: Implement better exception logging.
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user