Show user message when config KeyErrors

Formatting
This commit is contained in:
nathom 2021-04-12 15:50:41 -07:00
parent 8ccf74fd76
commit 0367a04137
5 changed files with 46 additions and 25 deletions

View file

@ -50,7 +50,7 @@ def cli(ctx, **kwargs):
global config global config
global core global core
if ctx.invoked_subcommand == 'config': if ctx.invoked_subcommand == "config":
return return
if kwargs["debug"]: if kwargs["debug"]:

View file

@ -489,7 +489,7 @@ class TidalClient(ClientInterface):
try: try:
manifest = json.loads(base64.b64decode(resp["manifest"]).decode("utf-8")) manifest = json.loads(base64.b64decode(resp["manifest"]).decode("utf-8"))
except KeyError: except KeyError:
raise Exception(resp['userMessage']) raise Exception(resp["userMessage"])
logger.debug(manifest) logger.debug(manifest)
return { return {

View file

@ -154,22 +154,37 @@ class MusicDL(list):
self.append(item) self.append(item)
def download(self): def download(self):
arguments = { try:
"database": self.db, arguments = {
"parent_folder": self.config.session["downloads"]["folder"], "database": self.db,
"folder_format": self.config.session["path_format"]["folder"], "parent_folder": self.config.session["downloads"]["folder"],
"track_format": self.config.session["path_format"]["track"], "folder_format": self.config.session["path_format"]["folder"],
"embed_cover": self.config.session["artwork"]["embed"], "track_format": self.config.session["path_format"]["track"],
"embed_cover_size": self.config.session["artwork"]["size"], "embed_cover": self.config.session["artwork"]["embed"],
"keep_hires_cover": self.config.session["artwork"]["keep_hires_cover"], "embed_cover_size": self.config.session["artwork"]["size"],
"set_playlist_to_album": self.config.session["metadata"][ "keep_hires_cover": self.config.session["artwork"]["keep_hires_cover"],
"set_playlist_to_album" "set_playlist_to_album": self.config.session["metadata"][
], "set_playlist_to_album"
"stay_temp": self.config.session["conversion"]["enabled"], ],
"conversion": self.config.session["conversion"], "stay_temp": self.config.session["conversion"]["enabled"],
"concurrent_downloads": self.config.session["concurrent_downloads"], "conversion": self.config.session["conversion"],
"new_tracknumbers": self.config.session['metadata']['new_playlist_tracknumbers'] "concurrent_downloads": self.config.session["concurrent_downloads"],
} "new_tracknumbers": self.config.session["metadata"][
"new_playlist_tracknumbers"
],
}
except KeyError as err:
click.secho(
"There was a problem with your config file. This happens "
"sometimes after updates. Run ",
nl=False,
fg="red",
)
click.secho("rip config --reset ", fg="yellow", nl=False)
click.secho("to reset it. You will need to log in again.", fg="red")
logger.debug(err)
exit()
logger.debug("Arguments from config: %s", arguments) logger.debug("Arguments from config: %s", arguments)
source_subdirs = self.config.session["downloads"]["source_subdirectories"] source_subdirs = self.config.session["downloads"]["source_subdirectories"]

View file

@ -217,7 +217,7 @@ class Track:
try: try:
dl_info = self.client.get_file_url(url_id, self.quality) dl_info = self.client.get_file_url(url_id, self.quality)
except Exception as e: except Exception as e:
click.secho(f"Unable to download track. {e}", fg='red') click.secho(f"Unable to download track. {e}", fg="red")
return False return False
self.path = os.path.join(gettempdir(), f"{hash(self.id)}_{self.quality}.tmp") self.path = os.path.join(gettempdir(), f"{hash(self.id)}_{self.quality}.tmp")
@ -237,10 +237,14 @@ class Track:
# --------- Download Track ---------- # --------- Download Track ----------
if self.client.source in ("qobuz", "tidal"): if self.client.source in ("qobuz", "tidal"):
logger.debug("Downloadable URL found: %s", dl_info.get("url")) logger.debug("Downloadable URL found: %s", dl_info.get("url"))
tqdm_download(dl_info["url"], self.path, desc=self._progress_desc) # downloads file tqdm_download(
dl_info["url"], self.path, desc=self._progress_desc
) # downloads file
elif self.client.source == "deezer": # Deezer elif self.client.source == "deezer": # Deezer
logger.debug("Downloadable URL found: %s", dl_info, desc=self._progress_desc) logger.debug(
"Downloadable URL found: %s", dl_info, desc=self._progress_desc
)
try: try:
tqdm_download(dl_info, self.path) # downloads file tqdm_download(dl_info, self.path) # downloads file
except NonStreamable: except NonStreamable:
@ -317,7 +321,7 @@ class Track:
@property @property
def _progress_desc(self): def _progress_desc(self):
return click.style(f"Track {int(self.meta.tracknumber):02}", fg='blue') return click.style(f"Track {int(self.meta.tracknumber):02}", fg="blue")
def download_cover(self): def download_cover(self):
"""Downloads the cover art, if cover_url is given.""" """Downloads the cover art, if cover_url is given."""
@ -329,7 +333,9 @@ class Track:
# click.secho(f"\nDownloading cover art for {self!s}", fg="blue") # click.secho(f"\nDownloading cover art for {self!s}", fg="blue")
if not os.path.exists(self.cover_path): if not os.path.exists(self.cover_path):
tqdm_download(self.cover_url, self.cover_path, desc=click.style('Cover', fg='cyan')) tqdm_download(
self.cover_url, self.cover_path, desc=click.style("Cover", fg="cyan")
)
else: else:
logger.debug("Cover already exists, skipping download") logger.debug("Cover already exists, skipping download")
@ -1253,7 +1259,7 @@ class Playlist(Tracklist):
if kwargs.get("new_tracknumbers", True): if kwargs.get("new_tracknumbers", True):
item["tracknumber"] = self.__download_index item["tracknumber"] = self.__download_index
item['discnumber'] = 1 item["discnumber"] = 1
self.__download_index += 1 self.__download_index += 1

View file

@ -361,7 +361,7 @@ class TrackMetadata:
for k, v in FLAC_KEY.items(): for k, v in FLAC_KEY.items():
tag = getattr(self, k) tag = getattr(self, k)
if tag: if tag:
if k in ('tracknumber', 'discnumber', 'tracktotal', 'disctotal'): if k in ("tracknumber", "discnumber", "tracktotal", "disctotal"):
tag = f"{int(tag):02}" tag = f"{int(tag):02}"
logger.debug("Adding tag %s: %s", v, tag) logger.debug("Adding tag %s: %s", v, tag)