Misc bug fixes

This commit is contained in:
nathom 2021-04-13 20:52:07 -07:00
parent 629239b7af
commit 2f258865ad
3 changed files with 37 additions and 12 deletions

View file

@ -177,6 +177,7 @@ class Track:
self.download_cover() # only downloads for playlists and singles
self.path = os.path.join(gettempdir(), f"{hash(self.id)}_{self.quality}.tmp")
return True
def download(
self,
@ -250,9 +251,10 @@ class Track:
self.move(self.final_path)
try:
database = kwargs.get("database")
database.add(self.id)
logger.debug(f"{self.id} added to database")
except AttributeError:
except AttributeError: # assume database=None was passed
pass
logger.debug("Downloaded: %s -> %s", self.path, self.final_path)
@ -264,8 +266,8 @@ class Track:
return True
def __validate_qobuz_dl_info(info: dict) -> bool:
return not all(
def __validate_qobuz_dl_info(self, info: dict) -> bool:
return all(
(info.get("sampling_rate"), info.get("bit_depth"), not info.get("sample"))
)
@ -884,9 +886,11 @@ class Album(Tracklist):
else:
kwargs["parent_folder"] = self.folder
logger.debug("Downloading 2")
if not track.download(quality=quality, database=database, **kwargs):
return False
logger.debug("tagging tracks")
# deezer tracks come tagged
if kwargs.get("tag_tracks", True) and self.client.source != "deezer":
track.tag(cover=self.cover_obj, embed_cover=kwargs.get("embed_cover", True))

View file

@ -107,12 +107,9 @@ class TrackMetadata:
"""
if self.__source == "qobuz":
# Tags
print(resp.keys())
self.album = resp.get("title")
self.tracktotal = resp.get("tracks_count", 1)
self.genre = resp.get("genres_list") or resp.get("genre")
print("in meta:")
print(self.genre)
self.date = resp.get("release_date_original") or resp.get("release_date")
self.copyright = resp.get("copyright")
self.albumartist = safe_get(resp, "artist", "name")

View file

@ -1,4 +1,6 @@
import base64
import contextlib
import sys
import logging
import os
from string import Formatter
@ -11,6 +13,7 @@ from Crypto.Util import Counter
from pathvalidate import sanitize_filename
from requests.packages import urllib3
from tqdm import tqdm
from tqdm.contrib import DummyTqdmFile
from .constants import LOG_DIR, TIDAL_COVER_URL
from .exceptions import InvalidSourceError, NonStreamable
@ -98,6 +101,20 @@ def get_quality_id(bit_depth: Optional[int], sampling_rate: Optional[int]):
return 4
@contextlib.contextmanager
def std_out_err_redirect_tqdm():
orig_out_err = sys.stdout, sys.stderr
try:
sys.stdout, sys.stderr = map(DummyTqdmFile, orig_out_err)
yield orig_out_err[0]
# Relay exceptions
except Exception as exc:
raise exc
# Always restore sys.stdout/err if necessary
finally:
sys.stdout, sys.stderr = orig_out_err
def tqdm_download(url: str, filepath: str, params: dict = None, desc: str = None):
"""Downloads a file with a progress bar.
@ -118,8 +135,15 @@ def tqdm_download(url: str, filepath: str, params: dict = None, desc: str = None
raise NonStreamable(url)
try:
with std_out_err_redirect_tqdm() as orig_stdout:
with open(filepath, "wb") as file, tqdm(
total=total, unit="iB", unit_scale=True, unit_divisor=1024, desc=desc
file=orig_stdout,
total=total,
unit="iB",
unit_scale=True,
unit_divisor=1024,
desc=desc,
dynamic_ncols=True,
) as bar:
for data in r.iter_content(chunk_size=1024):
size = file.write(data)