B"H browse by albums
This commit is contained in:
parent
635c180c13
commit
17432857a6
2 changed files with 23 additions and 4 deletions
|
@ -15,7 +15,7 @@ class SubidyLibraryProvider(backend.LibraryProvider):
|
|||
def browse_songs(self, album_id):
|
||||
return self.subsonic_api.get_songs_as_refs(album_id)
|
||||
|
||||
def browse_albums(self, artist_id):
|
||||
def browse_albums(self, artist_id=None):
|
||||
return [Ref.directory(name=album.name, uri=album.uri) for album in self.subsonic_api.get_albums_as_refs(artist_id)]
|
||||
|
||||
def browse_artists(self):
|
||||
|
@ -41,15 +41,18 @@ class SubidyLibraryProvider(backend.LibraryProvider):
|
|||
# ("root", <no name>)
|
||||
("rootdirs", "Directories"),
|
||||
("artists", "Artists"),
|
||||
("albums", "Albums"),
|
||||
]
|
||||
vdirs = dict((template[0], dict(id=template[0], name=template[1])) for template in vdir_templates)
|
||||
if browse_uri == uri.ROOT_URI:
|
||||
root_vdirs = sorted((vdirs[vdir_name] for vdir_name in ["rootdirs", "artists"]), key=lambda a: a["name"])
|
||||
root_vdirs = sorted((vdirs[vdir_name] for vdir_name in ["rootdirs", "artists", "albums"]), key=lambda a: a["name"])
|
||||
return [Ref.directory(name=vdir["name"], uri=uri.get_vdir_uri(vdir["id"])) for vdir in root_vdirs]
|
||||
elif browse_uri == uri.get_vdir_uri("rootdirs"):
|
||||
return self.browse_rootdirs()
|
||||
elif browse_uri == uri.get_vdir_uri("artists"):
|
||||
return self.browse_artists()
|
||||
elif browse_uri == uri.get_vdir_uri("albums"):
|
||||
return self.browse_albums()
|
||||
else:
|
||||
uri_type = uri.get_type(browse_uri)
|
||||
if uri_type == uri.DIRECTORY:
|
||||
|
|
|
@ -13,6 +13,7 @@ UNKNOWN_SONG = u'Unknown Song'
|
|||
UNKNOWN_ALBUM = u'Unknown Album'
|
||||
UNKNOWN_ARTIST = u'Unknown Artist'
|
||||
MAX_SEARCH_RESULTS = 100
|
||||
MAX_LIST_RESULTS = 500
|
||||
|
||||
ref_sort_key = lambda ref: ref.name
|
||||
|
||||
|
@ -224,8 +225,23 @@ class SubsonicApi():
|
|||
return songs
|
||||
return []
|
||||
|
||||
def get_albums_as_refs(self, artist_id):
|
||||
return [self.raw_album_to_ref(album) for album in self.get_raw_albums(artist_id)]
|
||||
def get_raw_album_list(self, ltype, size=MAX_LIST_RESULTS):
|
||||
try:
|
||||
response = self.connection.getAlbumList2(ltype=ltype, size=size)
|
||||
except Exception as e:
|
||||
logger.warning('Connecting to subsonic failed when loading album list.')
|
||||
return []
|
||||
if response.get('status') != RESPONSE_OK:
|
||||
logger.warning('Got non-okay status code from subsonic: %s' % response.get('status'))
|
||||
return []
|
||||
albums = response.get('albumList2').get('album')
|
||||
if albums is not None:
|
||||
return albums
|
||||
return []
|
||||
|
||||
def get_albums_as_refs(self, artist_id=None):
|
||||
albums = (self.get_raw_album_list('alphabeticalByName') if artist_id is None else self.get_raw_albums(artist_id))
|
||||
return [self.raw_album_to_ref(album) for album in albums]
|
||||
|
||||
def get_albums_as_albums(self, artist_id):
|
||||
return [self.raw_album_to_album(album) for album in self.get_raw_albums(artist_id)]
|
||||
|
|
Loading…
Add table
Reference in a new issue