From 64938a8c7e96b5a5d7650348ec87a9e200e165ea Mon Sep 17 00:00:00 2001 From: hhm Date: Thu, 16 Feb 2017 01:25:03 -0500 Subject: [PATCH] B"H lookup return subdir songs too, artist lookup fn to iter - rebase --- mopidy_subidy/library.py | 4 ++-- mopidy_subidy/subsonic_api.py | 22 ++++++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/mopidy_subidy/library.py b/mopidy_subidy/library.py index fe94d8e..10a3e03 100644 --- a/mopidy_subidy/library.py +++ b/mopidy_subidy/library.py @@ -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'): diff --git a/mopidy_subidy/subsonic_api.py b/mopidy_subidy/subsonic_api.py index 0e804e1..6ff7d42 100644 --- a/mopidy_subidy/subsonic_api.py +++ b/mopidy_subidy/subsonic_api.py @@ -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: