From f34975e54f321d64400473b81730147afb2bdf48 Mon Sep 17 00:00:00 2001 From: vitiko98 Date: Tue, 26 Jan 2021 18:42:29 -0400 Subject: [PATCH] Close #54 and #57 --- qobuz_dl/cli.py | 4 ++-- qobuz_dl/core.py | 8 ++++++-- qobuz_dl/downloader.py | 8 ++++++-- qobuz_dl/exceptions.py | 4 ++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/qobuz_dl/cli.py b/qobuz_dl/cli.py index 0fecef2..78e2526 100644 --- a/qobuz_dl/cli.py +++ b/qobuz_dl/cli.py @@ -32,14 +32,14 @@ def reset_config(config_file): password = input("Enter your password\n- ") config["DEFAULT"]["password"] = hashlib.md5(password.encode("utf-8")).hexdigest() config["DEFAULT"]["default_folder"] = ( - input("Folder for downloads (leave empy for default 'Qobuz Downloads')\n- ") + input("Folder for downloads (leave empty for default 'Qobuz Downloads')\n- ") or "Qobuz Downloads" ) config["DEFAULT"]["default_quality"] = ( input( "Download quality (5, 6, 7, 27) " "[320, LOSSLESS, 24B <96KHZ, 24B >96KHZ]" - "\n(leave empy for default '6')\n- " + "\n(leave empty for default '6')\n- " ) or "6" ) diff --git a/qobuz_dl/core.py b/qobuz_dl/core.py index 602e3fa..5174833 100644 --- a/qobuz_dl/core.py +++ b/qobuz_dl/core.py @@ -102,13 +102,17 @@ class QobuzDL: def download_from_id(self, item_id, album=True, alt_path=None): if handle_download_id(self.downloads_db, item_id, add_id=False): - logger.info(f"{OFF}This release ID ({item_id}) was already downloaded") + logger.info( + f"{OFF}This release ID ({item_id}) was already downloaded " + "according to the local database.\nUse the '--no-db' flag " + "to bypass this." + ) return try: downloader.download_id_by_type( self.client, item_id, - self.directory if not alt_path else alt_path, + alt_path or self.directory, str(self.quality), album, self.embed_art, diff --git a/qobuz_dl/downloader.py b/qobuz_dl/downloader.py index cee824d..ad1a25b 100644 --- a/qobuz_dl/downloader.py +++ b/qobuz_dl/downloader.py @@ -7,6 +7,7 @@ from tqdm import tqdm import qobuz_dl.metadata as metadata from qobuz_dl.color import OFF, GREEN, RED, YELLOW, CYAN +from qobuz_dl.exceptions import NonStreamable QL_DOWNGRADE = "FormatRestrictedByFormatAvailability" logger = logging.getLogger(__name__) @@ -145,8 +146,8 @@ def download_and_tag( if version: new_track_title = f"{new_track_title} ({version})" - track_file = f'{track_metadata["track_number"]:02}. {new_track_title}{extension}' - final_file = os.path.join(root_dir, sanitize_filename(track_file)) + track_file = f'{track_metadata["track_number"]:02}. {new_track_title}' + final_file = os.path.join(root_dir, sanitize_filename(track_file))[:250] + extension if os.path.isfile(final_file): logger.info(f"{OFF}{new_track_title} was already downloaded") @@ -200,6 +201,9 @@ def download_id_by_type( if album: meta = client.get_album_meta(item_id) + if not meta.get("streamable"): + raise NonStreamable("This release is not streamable") + if albums_only and ( meta.get("release_type") != "album" or meta.get("artist").get("name") == "Various Artists" diff --git a/qobuz_dl/exceptions.py b/qobuz_dl/exceptions.py index e9ac22a..9461cda 100644 --- a/qobuz_dl/exceptions.py +++ b/qobuz_dl/exceptions.py @@ -16,3 +16,7 @@ class InvalidAppSecretError(Exception): class InvalidQuality(Exception): pass + + +class NonStreamable(Exception): + pass