Skip to content

Commit 24d23ad

Browse files
authored
Handle NonStreamableError for metadata parsing (#595)
1 parent 1c2bd25 commit 24d23ad

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

streamrip/media/album.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from ..client import Client
88
from ..config import Config
99
from ..db import Database
10+
from ..exceptions import NonStreamableError
1011
from ..filepath_utils import clean_filepath
1112
from ..metadata import AlbumMetadata
1213
from ..metadata.util import get_album_track_ids
@@ -50,7 +51,14 @@ class PendingAlbum(Pending):
5051
db: Database
5152

5253
async def resolve(self) -> Album | None:
53-
resp = await self.client.get_metadata(self.id, "album")
54+
try:
55+
resp = await self.client.get_metadata(self.id, "album")
56+
except NonStreamableError as e:
57+
logger.error(
58+
f"Album {self.id} not available to stream on {self.client.source} ({e})",
59+
)
60+
return None
61+
5462
meta = AlbumMetadata.from_album_resp(resp, self.client.source)
5563
if meta is None:
5664
logger.error(

streamrip/media/artist.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from ..config import Config, QobuzDiscographyFilterConfig
88
from ..console import console
99
from ..db import Database
10+
from ..exceptions import NonStreamableError
1011
from ..metadata import ArtistMetadata
1112
from .album import Album, PendingAlbum
1213
from .media import Media, Pending
@@ -180,8 +181,15 @@ class PendingArtist(Pending):
180181
config: Config
181182
db: Database
182183

183-
async def resolve(self) -> Artist:
184-
resp = await self.client.get_metadata(self.id, "artist")
184+
async def resolve(self) -> Artist | None:
185+
try:
186+
resp = await self.client.get_metadata(self.id, "artist")
187+
except NonStreamableError as e:
188+
logger.error(
189+
f"Artist {self.id} not available to stream on {self.client.source} ({e})",
190+
)
191+
return None
192+
185193
meta = ArtistMetadata.from_resp(resp, self.client.source)
186194
albums = [
187195
PendingAlbum(album_id, self.client, self.config, self.db)

streamrip/media/playlist.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,14 @@ class PendingPlaylist(Pending):
147147
db: Database
148148

149149
async def resolve(self) -> Playlist | None:
150-
resp = await self.client.get_metadata(self.id, "playlist")
150+
try:
151+
resp = await self.client.get_metadata(self.id, "playlist")
152+
except NonStreamableError as e:
153+
logger.error(
154+
f"Playlist {self.id} not available to stream on {self.client.source} ({e})",
155+
)
156+
return None
157+
151158
meta = PlaylistMetadata.from_resp(resp, self.client.source)
152159
name = meta.name
153160
parent = self.config.session.downloads.folder
@@ -261,6 +268,7 @@ async def _make_query(
261268
if that fails.
262269
263270
Args:
271+
----
264272
query (str): Query to search
265273
s (Status):
266274
callback: function to call after each query completes

0 commit comments

Comments
 (0)