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):
|
def browse_songs(self, album_id):
|
||||||
return self.subsonic_api.get_songs_as_refs(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)]
|
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):
|
def browse_artists(self):
|
||||||
|
@ -41,15 +41,18 @@ class SubidyLibraryProvider(backend.LibraryProvider):
|
||||||
# ("root", <no name>)
|
# ("root", <no name>)
|
||||||
("rootdirs", "Directories"),
|
("rootdirs", "Directories"),
|
||||||
("artists", "Artists"),
|
("artists", "Artists"),
|
||||||
|
("albums", "Albums"),
|
||||||
]
|
]
|
||||||
vdirs = dict((template[0], dict(id=template[0], name=template[1])) for template in vdir_templates)
|
vdirs = dict((template[0], dict(id=template[0], name=template[1])) for template in vdir_templates)
|
||||||
if browse_uri == uri.ROOT_URI:
|
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]
|
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"):
|
elif browse_uri == uri.get_vdir_uri("rootdirs"):
|
||||||
return self.browse_rootdirs()
|
return self.browse_rootdirs()
|
||||||
elif browse_uri == uri.get_vdir_uri("artists"):
|
elif browse_uri == uri.get_vdir_uri("artists"):
|
||||||
return self.browse_artists()
|
return self.browse_artists()
|
||||||
|
elif browse_uri == uri.get_vdir_uri("albums"):
|
||||||
|
return self.browse_albums()
|
||||||
else:
|
else:
|
||||||
uri_type = uri.get_type(browse_uri)
|
uri_type = uri.get_type(browse_uri)
|
||||||
if uri_type == uri.DIRECTORY:
|
if uri_type == uri.DIRECTORY:
|
||||||
|
|
|
@ -13,6 +13,7 @@ UNKNOWN_SONG = u'Unknown Song'
|
||||||
UNKNOWN_ALBUM = u'Unknown Album'
|
UNKNOWN_ALBUM = u'Unknown Album'
|
||||||
UNKNOWN_ARTIST = u'Unknown Artist'
|
UNKNOWN_ARTIST = u'Unknown Artist'
|
||||||
MAX_SEARCH_RESULTS = 100
|
MAX_SEARCH_RESULTS = 100
|
||||||
|
MAX_LIST_RESULTS = 500
|
||||||
|
|
||||||
ref_sort_key = lambda ref: ref.name
|
ref_sort_key = lambda ref: ref.name
|
||||||
|
|
||||||
|
@ -224,8 +225,23 @@ class SubsonicApi():
|
||||||
return songs
|
return songs
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_albums_as_refs(self, artist_id):
|
def get_raw_album_list(self, ltype, size=MAX_LIST_RESULTS):
|
||||||
return [self.raw_album_to_ref(album) for album in self.get_raw_albums(artist_id)]
|
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):
|
def get_albums_as_albums(self, artist_id):
|
||||||
return [self.raw_album_to_album(album) for album in self.get_raw_albums(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