B"H lookup return subdir songs too, artist lookup fn to iter - rebase

This commit is contained in:
hhm 2017-02-16 01:25:03 -05:00
parent 634efc4de4
commit 64938a8c7e
2 changed files with 18 additions and 8 deletions

View file

@ -62,10 +62,10 @@ class SubidyLibraryProvider(backend.LibraryProvider):
return self.subsonic_api.get_songs_as_tracks(album_id)
def lookup_artist(self, artist_id):
return self.subsonic_api.get_artist_as_songs_as_tracks(artist_id)
return list(self.subsonic_api.get_artist_as_songs_as_tracks_iter(artist_id))
def lookup_directory(self, directory_id):
return self.subsonic_api.get_diritems_as_tracks(directory_id)
return list(self.subsonic_api.get_recursive_dir_as_songs_as_tracks_iter(directory_id))
def browse(self, browse_uri):
if browse_uri == uri.get_vdir_uri('root'):

View file

@ -271,9 +271,6 @@ class SubsonicApi():
def get_diritems_as_refs(self, directory_id):
return [(self.raw_directory_to_ref(diritem) if diritem.get('isDir') else self.raw_song_to_ref(diritem)) for diritem in self.get_raw_dir(directory_id)]
def get_diritems_as_tracks(self, directory_id):
return [self.raw_song_to_track(diritem) for diritem in self.get_raw_dir(directory_id) if not diritem.get('isDir')]
def get_artists_as_artists(self):
return [self.raw_artist_to_artist(artist) for artist in self.get_raw_artists()]
@ -292,11 +289,24 @@ class SubsonicApi():
return None
return [self.raw_song_to_ref(song) for song in playlist.get('entry')]
def get_artist_as_songs_as_tracks(self, artist_id):
def get_artist_as_songs_as_tracks_iter(self, artist_id):
albums = self.get_raw_albums(artist_id)
if albums is None:
return None
return [self.raw_song_to_track(song) for album in albums for song in self.get_raw_songs(album.get('id'))]
return
for album in albums:
for song in self.get_raw_songs(album.get('id')):
yield self.raw_song_to_track(song)
def get_recursive_dir_as_songs_as_tracks_iter(self, directory_id):
diritems = self.get_raw_dir(directory_id)
if diritems is None:
return
for item in diritems:
if item.get('isDir'):
for song in self.get_recursive_dir_as_songs_as_tracks_iter(item.get('id')):
yield song
else:
yield self.raw_song_to_track(item)
def raw_song_to_ref(self, song):
if song is None: