diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-04-05 09:39:47 +0200 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-04-05 09:39:47 +0200 |
| commit | a9b0b285d1eb9d6fef49b1077e23677dc85f1eaa (patch) | |
| tree | cc7752c4458c66c0bc3d331ed757fc3a77b9dfe3 | |
| parent | 301a4c5ba4ad74149f19e48695a74b2441171afc (diff) | |
| download | tidal-dl-ng-a9b0b285d1eb9d6fef49b1077e23677dc85f1eaa.tar.gz | |
👷 Switch to `match` function for placeholder replacement.
| -rw-r--r-- | tidal_dl_ng/helper/path.py | 133 |
1 files changed, 67 insertions, 66 deletions
diff --git a/tidal_dl_ng/helper/path.py b/tidal_dl_ng/helper/path.py index df56654..1900441 100644 --- a/tidal_dl_ng/helper/path.py +++ b/tidal_dl_ng/helper/path.py @@ -61,75 +61,76 @@ def format_path_media(fmt_template: str, media: Track | Album | Playlist | UserP return result -def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix) -> str: +def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix) -> str: # noqa: C901 result: str = name try: - if name == "artist_name": - if hasattr(media, "artists"): - result = name_builder_artist(media) - elif hasattr(media, "artist"): - result = media.artist.name - elif name == "album_artist": - result = name_builder_album_artist(media) - elif name == "track_title": - if isinstance(media, Track | Video): - result = name_builder_title(media) - elif name == "mix_name": - if isinstance(media, Mix): - result = media.title - elif name == "playlist_name": - if isinstance(media, Playlist | UserPlaylist): - result = media.name - elif name == "album_title": - if isinstance(media, Album): - result = media.name - elif isinstance(media, Track): - result = media.album.name - 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(num_tracks)) + 1 - 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": - if isinstance(media, Track | Video): - result = media.id - elif name == "playlist_id": - if isinstance(media, Playlist): - result = media.id - elif name == "track_duration_seconds": - if isinstance(media, Track | Video): - result = str(media.duration) - elif name == "track_duration_minutes": - if isinstance(media, Track | Video): - m, s = divmod(media.duration, 60) - result = f"{m:01d}:{s:02d}" - elif name == "album_duration_seconds": - if isinstance(media, Album): - result = str(media.duration) - elif name == "album_duration_minutes": - if isinstance(media, Album): - m, s = divmod(media.duration, 60) - result = f"{m:01d}:{s:02d}" - elif name == "playlist_duration_seconds": - if isinstance(media, Album): - result = str(media.duration) - elif name == "playlist_duration_minutes": - if isinstance(media, Album): - m, s = divmod(media.duration, 60) - result = f"{m:01d}:{s:02d}" - elif name == "album_year": - if isinstance(media, Album): - result = str(media.release_date.year) - elif name == "video_quality": - if isinstance(media, Video): - result = media.video_quality - elif name == "track_quality": - if isinstance(media, Track): - result = ", ".join(tag for tag in media.media_metadata_tags) + match name: + case "artist_name": + if hasattr(media, "artists"): + result = name_builder_artist(media) + elif hasattr(media, "artist"): + result = media.artist.name + case "album_artist": + result = name_builder_album_artist(media) + case "track_title": + if isinstance(media, Track | Video): + result = name_builder_title(media) + case "mix_name": + if isinstance(media, Mix): + result = media.title + case "playlist_name": + if isinstance(media, Playlist | UserPlaylist): + result = media.name + case "album_title": + if isinstance(media, Album): + result = media.name + elif isinstance(media, Track): + result = media.album.name + case "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(num_tracks)) + 1 + result = str(media.track_num).zfill(count_digits) + case "album_num_tracks": + if isinstance(media, Track | Video): + result = str(media.album.num_tracks if hasattr(media, "album") else 1) + case "track_id": + if isinstance(media, Track | Video): + result = media.id + case "playlist_id": + if isinstance(media, Playlist): + result = media.id + case "track_duration_seconds": + if isinstance(media, Track | Video): + result = str(media.duration) + case "track_duration_minutes": + if isinstance(media, Track | Video): + m, s = divmod(media.duration, 60) + result = f"{m:01d}:{s:02d}" + case "album_duration_seconds": + if isinstance(media, Album): + result = str(media.duration) + case "album_duration_minutes": + if isinstance(media, Album): + m, s = divmod(media.duration, 60) + result = f"{m:01d}:{s:02d}" + case "playlist_duration_seconds": + if isinstance(media, Album): + result = str(media.duration) + case "playlist_duration_minutes": + if isinstance(media, Album): + m, s = divmod(media.duration, 60) + result = f"{m:01d}:{s:02d}" + case "album_year": + if isinstance(media, Album): + result = str(media.release_date.year) + case "video_quality": + if isinstance(media, Video): + result = media.video_quality + case "track_quality": + if isinstance(media, Track): + result = ", ".join(tag for tag in media.media_metadata_tags) except Exception as e: # TODO: Implement better exception logging. print(e) |
