mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-21 02:35:29 -04:00
Fix Tidal downloads, #51
This commit is contained in:
parent
649964b4e4
commit
0304fae688
5 changed files with 129 additions and 42 deletions
|
@ -15,7 +15,7 @@ from .constants import (
|
|||
TRACK_KEYS,
|
||||
)
|
||||
from .exceptions import InvalidContainerError, InvalidSourceError
|
||||
from .utils import get_quality_id, safe_get
|
||||
from .utils import get_quality_id, safe_get, tidal_cover_url
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -90,15 +90,21 @@ class TrackMetadata:
|
|||
|
||||
if isinstance(track, TrackMetadata):
|
||||
self.update(track)
|
||||
if isinstance(album, TrackMetadata):
|
||||
self.update(album)
|
||||
|
||||
if track is not None:
|
||||
elif track is not None:
|
||||
self.add_track_meta(track)
|
||||
|
||||
if album is not None:
|
||||
if isinstance(album, TrackMetadata):
|
||||
self.update(album)
|
||||
elif album is not None:
|
||||
self.add_album_meta(album)
|
||||
|
||||
def update(self, meta):
|
||||
assert isinstance(meta, TrackMetadata)
|
||||
|
||||
for k, v in meta.asdict().items():
|
||||
if v is not None:
|
||||
setattr(self, k, v)
|
||||
|
||||
def add_album_meta(self, resp: dict):
|
||||
"""Parse the metadata from an resp dict returned by the
|
||||
API.
|
||||
|
@ -154,12 +160,11 @@ class TrackMetadata:
|
|||
|
||||
# non-embedded
|
||||
self.explicit = resp.get("explicit", False)
|
||||
# 80, 160, 320, 640, 1280
|
||||
uuid = resp.get("cover")
|
||||
self.cover_urls = {
|
||||
sk: resp.get(rk) # size key, resp key
|
||||
for sk, rk in zip(
|
||||
COVER_SIZES,
|
||||
("cover", "cover_medium", "cover_large", "cover_xl"),
|
||||
)
|
||||
sk: tidal_cover_url(uuid, size)
|
||||
for sk, size in zip(COVER_SIZES, (160, 320, 640, 1280))
|
||||
}
|
||||
self.streamable = resp.get("allowStreaming", False)
|
||||
self.quality = TIDAL_Q_MAP[resp["audioQuality"]]
|
||||
|
@ -225,6 +230,8 @@ class TrackMetadata:
|
|||
self.tracknumber = track.get("track_position", 1)
|
||||
self.discnumber = track.get("disk_number")
|
||||
self.artist = track.get("artist", {}).get("name")
|
||||
if track.get("album"):
|
||||
self.add_album_meta(track["album"])
|
||||
|
||||
elif self.__source == "soundcloud":
|
||||
self.title = track["title"].strip()
|
||||
|
@ -240,9 +247,6 @@ class TrackMetadata:
|
|||
else:
|
||||
raise ValueError(self.__source)
|
||||
|
||||
if track.get("album"):
|
||||
self.add_album_meta(track["album"])
|
||||
|
||||
def _mod_title(self, version, work):
|
||||
if version is not None:
|
||||
self.title = f"{self.title} ({version})"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue