mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-25 04:24:49 -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 ..client import Client
|
||||||
from ..config import Config
|
from ..config import Config
|
||||||
from ..db import Database
|
from ..db import Database
|
||||||
|
from ..exceptions import NonStreamableError
|
||||||
from ..filepath_utils import clean_filepath
|
from ..filepath_utils import clean_filepath
|
||||||
from ..metadata import AlbumMetadata
|
from ..metadata import AlbumMetadata
|
||||||
from ..metadata.util import get_album_track_ids
|
from ..metadata.util import get_album_track_ids
|
||||||
|
@ -50,7 +51,14 @@ class PendingAlbum(Pending):
|
||||||
db: Database
|
db: Database
|
||||||
|
|
||||||
async def resolve(self) -> Album | None:
|
async def resolve(self) -> Album | None:
|
||||||
|
try:
|
||||||
resp = await self.client.get_metadata(self.id, "album")
|
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)
|
meta = AlbumMetadata.from_album_resp(resp, self.client.source)
|
||||||
if meta is None:
|
if meta is None:
|
||||||
logger.error(
|
logger.error(
|
||||||
|
|
|
@ -7,6 +7,7 @@ from ..client import Client
|
||||||
from ..config import Config, QobuzDiscographyFilterConfig
|
from ..config import Config, QobuzDiscographyFilterConfig
|
||||||
from ..console import console
|
from ..console import console
|
||||||
from ..db import Database
|
from ..db import Database
|
||||||
|
from ..exceptions import NonStreamableError
|
||||||
from ..metadata import ArtistMetadata
|
from ..metadata import ArtistMetadata
|
||||||
from .album import Album, PendingAlbum
|
from .album import Album, PendingAlbum
|
||||||
from .media import Media, Pending
|
from .media import Media, Pending
|
||||||
|
@ -180,8 +181,15 @@ class PendingArtist(Pending):
|
||||||
config: Config
|
config: Config
|
||||||
db: Database
|
db: Database
|
||||||
|
|
||||||
async def resolve(self) -> Artist:
|
async def resolve(self) -> Artist | None:
|
||||||
|
try:
|
||||||
resp = await self.client.get_metadata(self.id, "artist")
|
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)
|
meta = ArtistMetadata.from_resp(resp, self.client.source)
|
||||||
albums = [
|
albums = [
|
||||||
PendingAlbum(album_id, self.client, self.config, self.db)
|
PendingAlbum(album_id, self.client, self.config, self.db)
|
||||||
|
|
|
@ -147,7 +147,14 @@ class PendingPlaylist(Pending):
|
||||||
db: Database
|
db: Database
|
||||||
|
|
||||||
async def resolve(self) -> Playlist | None:
|
async def resolve(self) -> Playlist | None:
|
||||||
|
try:
|
||||||
resp = await self.client.get_metadata(self.id, "playlist")
|
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)
|
meta = PlaylistMetadata.from_resp(resp, self.client.source)
|
||||||
name = meta.name
|
name = meta.name
|
||||||
parent = self.config.session.downloads.folder
|
parent = self.config.session.downloads.folder
|
||||||
|
@ -261,6 +268,7 @@ class PendingLastfmPlaylist(Pending):
|
||||||
if that fails.
|
if that fails.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
----
|
||||||
query (str): Query to search
|
query (str): Query to search
|
||||||
s (Status):
|
s (Status):
|
||||||
callback: function to call after each query completes
|
callback: function to call after each query completes
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue