mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-20 18:25:30 -04:00
Fixed MP3 only Album/Track TIDAL downloads; #75
This commit is contained in:
parent
60e1f05115
commit
68a73e1905
3 changed files with 26 additions and 18 deletions
|
@ -104,7 +104,10 @@ class Track:
|
|||
self.cover_url = u
|
||||
|
||||
def load_meta(self):
|
||||
"""Send a request to the client to get metadata for this Track."""
|
||||
"""Send a request to the client to get metadata for this Track.
|
||||
|
||||
Usually only called for single tracks and last.fm playlists.
|
||||
"""
|
||||
assert self.id is not None, "id must be set before loading metadata"
|
||||
|
||||
self.resp = self.client.get(self.id, media_type="track")
|
||||
|
@ -137,7 +140,10 @@ class Track:
|
|||
:param kwargs:
|
||||
"""
|
||||
# args override attributes
|
||||
self.quality = min(kwargs["quality"], self.client.max_quality)
|
||||
self.quality = min(
|
||||
kwargs["quality"], self.client.max_quality, self.meta.quality
|
||||
)
|
||||
|
||||
self.folder = kwargs["parent_folder"] or self.folder
|
||||
|
||||
self.file_format = kwargs.get("track_format", TRACK_FORMAT)
|
||||
|
|
|
@ -184,11 +184,9 @@ class TrackMetadata:
|
|||
}
|
||||
)
|
||||
self.streamable = resp.get("allowStreaming", False)
|
||||
if resp.get("audioQuality"): # for album entries in single tracks
|
||||
self.quality = TIDAL_Q_MAP[resp["audioQuality"]]
|
||||
|
||||
self.bit_depth = 24 if self.get("quality", False) == 3 else 16
|
||||
self.sampling_rate = 44100
|
||||
if q := resp.get("audioQuality"): # for album entries in single tracks
|
||||
self._get_tidal_quality(q)
|
||||
|
||||
elif self.__source == "deezer":
|
||||
self.album = resp.get("title", "Unknown Album")
|
||||
|
@ -235,7 +233,7 @@ class TrackMetadata:
|
|||
|
||||
self.tracknumber = track.get("track_number", 1)
|
||||
self.discnumber = track.get("media_number", 1)
|
||||
self.artist = safe_get(track, "artist", "name")
|
||||
self.artist = safe_get(track, "performer", "name")
|
||||
|
||||
elif self.__source == "tidal":
|
||||
self.title = track["title"].strip()
|
||||
|
@ -243,6 +241,7 @@ class TrackMetadata:
|
|||
self.tracknumber = track.get("trackNumber", 1)
|
||||
self.discnumber = track.get("volumeNumber", 1)
|
||||
self.artist = track.get("artist", {}).get("name")
|
||||
self._get_tidal_quality(track["audioQuality"])
|
||||
|
||||
elif self.__source == "deezer":
|
||||
self.title = track["title"].strip()
|
||||
|
@ -283,6 +282,12 @@ class TrackMetadata:
|
|||
logger.debug("Work found: %s", work)
|
||||
self.title = f"{work}: {self.title}"
|
||||
|
||||
def _get_tidal_quality(self, q: str):
|
||||
self.quality = TIDAL_Q_MAP[q]
|
||||
if self.quality >= 2:
|
||||
self.bit_depth = 24 if self.get("quality") == 3 else 16
|
||||
self.sampling_rate = 44100
|
||||
|
||||
@property
|
||||
def album(self) -> str:
|
||||
"""Return the album of the track.
|
||||
|
|
|
@ -105,7 +105,9 @@ class Album(Tracklist):
|
|||
"""
|
||||
# Generate the folder name
|
||||
self.folder_format = kwargs.get("folder_format", FOLDER_FORMAT)
|
||||
self.quality = min(kwargs.get("quality", 3), self.client.max_quality)
|
||||
if not hasattr(self, "quality"):
|
||||
self.quality = min(kwargs.get("quality", 3), self.client.max_quality)
|
||||
|
||||
self.folder = self._get_formatted_folder(
|
||||
kwargs.get("parent_folder", "StreamripDownloads"), self.quality
|
||||
)
|
||||
|
@ -185,7 +187,9 @@ class Album(Tracklist):
|
|||
else:
|
||||
kwargs["parent_folder"] = self.folder
|
||||
|
||||
if not track.download(quality=quality, database=database, **kwargs):
|
||||
if not track.download(
|
||||
quality=min(self.quality, quality), database=database, **kwargs
|
||||
):
|
||||
return False
|
||||
|
||||
logger.debug("tagging tracks")
|
||||
|
@ -216,18 +220,11 @@ class Album(Tracklist):
|
|||
logging.debug(f"Loading {self.tracktotal} tracks to album")
|
||||
for track in _get_tracklist(resp, self.client.source):
|
||||
if track.get("type") == "Music Video":
|
||||
self.append(
|
||||
Video.from_album_meta(
|
||||
track,
|
||||
self.client,
|
||||
)
|
||||
)
|
||||
self.append(Video.from_album_meta(track, self.client))
|
||||
else:
|
||||
self.append(
|
||||
Track.from_album_meta(
|
||||
album=self.meta,
|
||||
track=track,
|
||||
client=self.client,
|
||||
album=self.meta, track=track, client=self.client
|
||||
)
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue