From 006605ccb3526866a61e41bb2a2d7fef6b7cdabe Mon Sep 17 00:00:00 2001 From: Roman Date: Sun, 7 Jul 2024 17:09:49 +0200 Subject: [PATCH] Skipping tracks on any NonStreamableError when getting downloadable info (#645) (#707) --- streamrip/client/deezer.py | 2 +- streamrip/media/track.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/streamrip/client/deezer.py b/streamrip/client/deezer.py index 3f42260..9315e8f 100644 --- a/streamrip/client/deezer.py +++ b/streamrip/client/deezer.py @@ -173,7 +173,7 @@ class DeezerClient(Client): "quality allowed is 1.", ) except deezer.WrongGeolocation: - if not is_retry: + if not is_retry and fallback_id: return await self.get_downloadable(fallback_id, quality, is_retry=True) raise NonStreamableError( "The requested track is not available. This may be due to your country/location.", diff --git a/streamrip/media/track.py b/streamrip/media/track.py index 695ad9b..b09cfa1 100644 --- a/streamrip/media/track.py +++ b/streamrip/media/track.py @@ -138,7 +138,7 @@ class PendingTrack(Pending): try: meta = TrackMetadata.from_resp(self.album, source, resp) except Exception as e: - logger.error(f"Error building track metadata for {id=}: {e}") + logger.error(f"Error building track metadata for {self.id}: {e}") return None if meta is None: @@ -147,7 +147,13 @@ class PendingTrack(Pending): return None quality = self.config.session.get_source(source).quality - downloadable = await self.client.get_downloadable(self.id, quality) + try: + downloadable = await self.client.get_downloadable(self.id, quality) + except NonStreamableError as e: + logger.error( + f"Error getting downloadable data for track {meta.tracknumber} [{self.id}]: {e}" + ) + return None downloads_config = self.config.session.downloads if downloads_config.disc_subdirectories and self.album.disctotal > 1: