mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-18 00:54:50 -04:00
Misc bug fixes
This commit is contained in:
parent
629239b7af
commit
2f258865ad
3 changed files with 37 additions and 12 deletions
|
@ -177,6 +177,7 @@ class Track:
|
||||||
|
|
||||||
self.download_cover() # only downloads for playlists and singles
|
self.download_cover() # only downloads for playlists and singles
|
||||||
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")
|
||||||
|
return True
|
||||||
|
|
||||||
def download(
|
def download(
|
||||||
self,
|
self,
|
||||||
|
@ -250,9 +251,10 @@ class Track:
|
||||||
self.move(self.final_path)
|
self.move(self.final_path)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
database = kwargs.get("database")
|
||||||
database.add(self.id)
|
database.add(self.id)
|
||||||
logger.debug(f"{self.id} added to database")
|
logger.debug(f"{self.id} added to database")
|
||||||
except AttributeError:
|
except AttributeError: # assume database=None was passed
|
||||||
pass
|
pass
|
||||||
|
|
||||||
logger.debug("Downloaded: %s -> %s", self.path, self.final_path)
|
logger.debug("Downloaded: %s -> %s", self.path, self.final_path)
|
||||||
|
@ -264,8 +266,8 @@ class Track:
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def __validate_qobuz_dl_info(info: dict) -> bool:
|
def __validate_qobuz_dl_info(self, info: dict) -> bool:
|
||||||
return not all(
|
return all(
|
||||||
(info.get("sampling_rate"), info.get("bit_depth"), not info.get("sample"))
|
(info.get("sampling_rate"), info.get("bit_depth"), not info.get("sample"))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -884,9 +886,11 @@ class Album(Tracklist):
|
||||||
else:
|
else:
|
||||||
kwargs["parent_folder"] = self.folder
|
kwargs["parent_folder"] = self.folder
|
||||||
|
|
||||||
|
logger.debug("Downloading 2")
|
||||||
if not track.download(quality=quality, database=database, **kwargs):
|
if not track.download(quality=quality, database=database, **kwargs):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
logger.debug("tagging tracks")
|
||||||
# deezer tracks come tagged
|
# deezer tracks come tagged
|
||||||
if kwargs.get("tag_tracks", True) and self.client.source != "deezer":
|
if kwargs.get("tag_tracks", True) and self.client.source != "deezer":
|
||||||
track.tag(cover=self.cover_obj, embed_cover=kwargs.get("embed_cover", True))
|
track.tag(cover=self.cover_obj, embed_cover=kwargs.get("embed_cover", True))
|
||||||
|
|
|
@ -107,12 +107,9 @@ class TrackMetadata:
|
||||||
"""
|
"""
|
||||||
if self.__source == "qobuz":
|
if self.__source == "qobuz":
|
||||||
# Tags
|
# Tags
|
||||||
print(resp.keys())
|
|
||||||
self.album = resp.get("title")
|
self.album = resp.get("title")
|
||||||
self.tracktotal = resp.get("tracks_count", 1)
|
self.tracktotal = resp.get("tracks_count", 1)
|
||||||
self.genre = resp.get("genres_list") or resp.get("genre")
|
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.date = resp.get("release_date_original") or resp.get("release_date")
|
||||||
self.copyright = resp.get("copyright")
|
self.copyright = resp.get("copyright")
|
||||||
self.albumartist = safe_get(resp, "artist", "name")
|
self.albumartist = safe_get(resp, "artist", "name")
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import base64
|
import base64
|
||||||
|
import contextlib
|
||||||
|
import sys
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from string import Formatter
|
from string import Formatter
|
||||||
|
@ -11,6 +13,7 @@ from Crypto.Util import Counter
|
||||||
from pathvalidate import sanitize_filename
|
from pathvalidate import sanitize_filename
|
||||||
from requests.packages import urllib3
|
from requests.packages import urllib3
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
|
from tqdm.contrib import DummyTqdmFile
|
||||||
|
|
||||||
from .constants import LOG_DIR, TIDAL_COVER_URL
|
from .constants import LOG_DIR, TIDAL_COVER_URL
|
||||||
from .exceptions import InvalidSourceError, NonStreamable
|
from .exceptions import InvalidSourceError, NonStreamable
|
||||||
|
@ -98,6 +101,20 @@ def get_quality_id(bit_depth: Optional[int], sampling_rate: Optional[int]):
|
||||||
return 4
|
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):
|
def tqdm_download(url: str, filepath: str, params: dict = None, desc: str = None):
|
||||||
"""Downloads a file with a progress bar.
|
"""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)
|
raise NonStreamable(url)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
with std_out_err_redirect_tqdm() as orig_stdout:
|
||||||
with open(filepath, "wb") as file, tqdm(
|
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:
|
) as bar:
|
||||||
for data in r.iter_content(chunk_size=1024):
|
for data in r.iter_content(chunk_size=1024):
|
||||||
size = file.write(data)
|
size = file.write(data)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue