From 5f18c510acb3c23217e0e95bb3d38afd2b451487 Mon Sep 17 00:00:00 2001 From: craig Date: Thu, 16 May 2024 16:38:51 +0200 Subject: [PATCH 1/2] seems to work - halt progress if this info is missing --- streamrip/client/downloadable.py | 11 ++++++++--- streamrip/media/playlist.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/streamrip/client/downloadable.py b/streamrip/client/downloadable.py index 9eba477..241aaf7 100644 --- a/streamrip/client/downloadable.py +++ b/streamrip/client/downloadable.py @@ -124,9 +124,14 @@ def __init__(self, session: aiohttp.ClientSession, info: dict): self.session = session self.url = info["url"] self.source: str = "deezer" - max_quality_available = max( - i for i, size in enumerate(info["quality_to_size"]) if size > 0 - ) + try: + max_quality_available = max( + i for i, size in enumerate(info["quality_to_size"]) if size > 0 + ) + except: + raise NonStreamableError( + "Missing download info. Skipping.", + ) self.quality = min(info["quality"], max_quality_available) self._size = info["quality_to_size"][self.quality] if self.quality <= 1: diff --git a/streamrip/media/playlist.py b/streamrip/media/playlist.py index 858b3c0..4109d43 100644 --- a/streamrip/media/playlist.py +++ b/streamrip/media/playlist.py @@ -79,7 +79,7 @@ async def resolve(self) -> Track | None: self.client.get_downloadable(self.id, quality), ) except NonStreamableError as e: - logger.error("Error fetching download info for track: %s", e) + logger.error(f"Error fetching download info for track {self.id}: %s", e) self.db.set_failed(self.client.source, "track", self.id) return None From 55036c330c3df752e1ed53154dd0003a5f93bffe Mon Sep 17 00:00:00 2001 From: Nathan Thomas Date: Mon, 10 Jun 2024 20:34:23 -0700 Subject: [PATCH 2/2] Minor fixes --- streamrip/client/downloadable.py | 10 +++++----- streamrip/media/playlist.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/streamrip/client/downloadable.py b/streamrip/client/downloadable.py index 241aaf7..d778a8f 100644 --- a/streamrip/client/downloadable.py +++ b/streamrip/client/downloadable.py @@ -124,14 +124,14 @@ def __init__(self, session: aiohttp.ClientSession, info: dict): self.session = session self.url = info["url"] self.source: str = "deezer" - try: - max_quality_available = max( - i for i, size in enumerate(info["quality_to_size"]) if size > 0 - ) - except: + qualities_available = [ + i for i, size in enumerate(info["quality_to_size"]) if size > 0 + ] + if len(qualities_available) == 0: raise NonStreamableError( "Missing download info. Skipping.", ) + max_quality_available = max(qualities_available) self.quality = min(info["quality"], max_quality_available) self._size = info["quality_to_size"][self.quality] if self.quality <= 1: diff --git a/streamrip/media/playlist.py b/streamrip/media/playlist.py index 4109d43..bf3bbbe 100644 --- a/streamrip/media/playlist.py +++ b/streamrip/media/playlist.py @@ -79,7 +79,7 @@ async def resolve(self) -> Track | None: self.client.get_downloadable(self.id, quality), ) except NonStreamableError as e: - logger.error(f"Error fetching download info for track {self.id}: %s", e) + logger.error(f"Error fetching download info for track {self.id}: {e}") self.db.set_failed(self.client.source, "track", self.id) return None