This commit is contained in:
Frederick 2020-11-19 09:08:10 +01:00
commit 32f74f28e9

View file

@ -410,9 +410,11 @@ class SubsonicApi:
return songs
return []
def get_raw_album_list(self, ltype, size=MAX_LIST_RESULTS):
def get_more_albums(self, ltype, size=MAX_LIST_RESULTS, offset=0):
try:
response = self.connection.getAlbumList2(ltype=ltype, size=size)
response = self.connection.getAlbumList2(
ltype=ltype, size=size, offset=offset
)
except Exception:
logger.warning(
"Connecting to subsonic failed when loading album list."
@ -429,6 +431,24 @@ class SubsonicApi:
return albums
return []
def get_raw_album_list(self, ltype, size=MAX_LIST_RESULTS):
"""
Subsonic servers don't offer any way to retrieve the total number
of albums to get, and the spec states that the max number returned
for `getAlbumList2` is 500. To get all the albums, we make a
`getAlbumList2` request each time the response contains 500 albums. If
it does not, we assume we have all the albums and return them.
"""
offset = 0
total = []
albums = self.get_more_albums(ltype, size, offset)
total = albums
while len(albums) == size:
offset = offset + size
albums = self.get_more_albums(ltype, size, offset)
total = total + albums
return total
def get_albums_as_refs(self, artist_id=None):
albums = (
self.get_raw_album_list("alphabeticalByName")