mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-09 14:11:55 -04:00
Handle NonStreamableError for metadata parsing (#595)
This commit is contained in:
parent
1c2bd2545c
commit
24d23ad230
3 changed files with 28 additions and 4 deletions
|
@ -7,6 +7,7 @@ from .. import progress
|
|||
from ..client import Client
|
||||
from ..config import Config
|
||||
from ..db import Database
|
||||
from ..exceptions import NonStreamableError
|
||||
from ..filepath_utils import clean_filepath
|
||||
from ..metadata import AlbumMetadata
|
||||
from ..metadata.util import get_album_track_ids
|
||||
|
@ -50,7 +51,14 @@ class PendingAlbum(Pending):
|
|||
db: Database
|
||||
|
||||
async def resolve(self) -> Album | None:
|
||||
resp = await self.client.get_metadata(self.id, "album")
|
||||
try:
|
||||
resp = await self.client.get_metadata(self.id, "album")
|
||||
except NonStreamableError as e:
|
||||
logger.error(
|
||||
f"Album {self.id} not available to stream on {self.client.source} ({e})",
|
||||
)
|
||||
return None
|
||||
|
||||
meta = AlbumMetadata.from_album_resp(resp, self.client.source)
|
||||
if meta is None:
|
||||
logger.error(
|
||||
|
|
|
@ -7,6 +7,7 @@ from ..client import Client
|
|||
from ..config import Config, QobuzDiscographyFilterConfig
|
||||
from ..console import console
|
||||
from ..db import Database
|
||||
from ..exceptions import NonStreamableError
|
||||
from ..metadata import ArtistMetadata
|
||||
from .album import Album, PendingAlbum
|
||||
from .media import Media, Pending
|
||||
|
@ -180,8 +181,15 @@ class PendingArtist(Pending):
|
|||
config: Config
|
||||
db: Database
|
||||
|
||||
async def resolve(self) -> Artist:
|
||||
resp = await self.client.get_metadata(self.id, "artist")
|
||||
async def resolve(self) -> Artist | None:
|
||||
try:
|
||||
resp = await self.client.get_metadata(self.id, "artist")
|
||||
except NonStreamableError as e:
|
||||
logger.error(
|
||||
f"Artist {self.id} not available to stream on {self.client.source} ({e})",
|
||||
)
|
||||
return None
|
||||
|
||||
meta = ArtistMetadata.from_resp(resp, self.client.source)
|
||||
albums = [
|
||||
PendingAlbum(album_id, self.client, self.config, self.db)
|
||||
|
|
|
@ -147,7 +147,14 @@ class PendingPlaylist(Pending):
|
|||
db: Database
|
||||
|
||||
async def resolve(self) -> Playlist | None:
|
||||
resp = await self.client.get_metadata(self.id, "playlist")
|
||||
try:
|
||||
resp = await self.client.get_metadata(self.id, "playlist")
|
||||
except NonStreamableError as e:
|
||||
logger.error(
|
||||
f"Playlist {self.id} not available to stream on {self.client.source} ({e})",
|
||||
)
|
||||
return None
|
||||
|
||||
meta = PlaylistMetadata.from_resp(resp, self.client.source)
|
||||
name = meta.name
|
||||
parent = self.config.session.downloads.folder
|
||||
|
@ -261,6 +268,7 @@ class PendingLastfmPlaylist(Pending):
|
|||
if that fails.
|
||||
|
||||
Args:
|
||||
----
|
||||
query (str): Query to search
|
||||
s (Status):
|
||||
callback: function to call after each query completes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue