Handle NonStreamableError for metadata parsing (#595)

This commit is contained in:
Nathan Thomas 2024-01-24 14:00:18 -08:00 committed by GitHub
parent 1c2bd2545c
commit 24d23ad230
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 4 deletions

View File

@ -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(

View File

@ -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)

View File

@ -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