Fix ampache compatibility
Ampache returns strings where integers are normally expected and full URLs instead of IDs for some album art. Fixes #272
This commit is contained in:
@@ -592,8 +592,12 @@ class SubsonicAdapter(Adapter):
|
||||
def delete_playlist(self, playlist_id: str):
|
||||
self._get_json(self._make_url("deletePlaylist"), id=playlist_id)
|
||||
|
||||
def get_cover_art_uri(self, cover_art_id: str, scheme: str, size: int) -> str:
|
||||
params = {"id": cover_art_id, "size": size, **self._get_params()}
|
||||
def get_cover_art_uri(self, cover_art: str, scheme: str, size: int) -> str:
|
||||
# Some servers return a full URL instead of an ID
|
||||
if cover_art.startswith("http://") or cover_art.startswith("https://"):
|
||||
return cover_art
|
||||
|
||||
params = {"id": cover_art, "size": size, **self._get_params()}
|
||||
return self._make_url("getCoverArt") + "?" + urlencode(params)
|
||||
|
||||
def get_song_file_uri(self, song_id: str, schemes: Iterable[str]) -> str:
|
||||
|
@@ -17,10 +17,12 @@ from dateutil import parser
|
||||
|
||||
from .. import api_objects as SublimeAPI
|
||||
|
||||
# Translation map
|
||||
# Translation map for encoding/decoding API results. For instance some servers
|
||||
# may return a string where an integer is required.
|
||||
decoder_functions = {
|
||||
datetime: (lambda s: parser.parse(s) if s else None),
|
||||
timedelta: (lambda s: timedelta(seconds=s) if s else None),
|
||||
timedelta: (lambda s: timedelta(seconds=float(s)) if s else None),
|
||||
int: (lambda s: int(s) if s else None),
|
||||
}
|
||||
encoder_functions = {
|
||||
datetime: (lambda d: datetime.strftime(d, "%Y-%m-%dT%H:%M:%S.%f%z") if d else None),
|
||||
|
Reference in New Issue
Block a user