diff --git a/mopidy_subidy/library.py b/mopidy_subidy/library.py index 859c5a0..6cd58c3 100644 --- a/mopidy_subidy/library.py +++ b/mopidy_subidy/library.py @@ -64,6 +64,9 @@ class SubidyLibraryProvider(backend.LibraryProvider): def lookup_artist(self, artist_id): return self.subsonic_api.get_artist_songs_as_tracks(artist_id) + def lookup_directory(self, directory_id): + return self.subsonic_api.get_diritems_as_tracks(directory_id) + def browse(self, browse_uri): if browse_uri == uri.get_vdir_uri('root'): root_vdir_names = ["rootdirs", "artists", "albums"] @@ -93,6 +96,8 @@ class SubidyLibraryProvider(backend.LibraryProvider): return self.lookup_artist(uri.get_artist_id(lookup_uri)) if type == uri.ALBUM: return self.lookup_album(uri.get_album_id(lookup_uri)) + if type == uri.DIRECTORY: + return self.lookup_directory(uri.get_directory_id(lookup_uri)) if type == uri.SONG: return [self.lookup_song(uri.get_song_id(lookup_uri))] diff --git a/mopidy_subidy/subsonic_api.py b/mopidy_subidy/subsonic_api.py index d37b62f..68a6e12 100644 --- a/mopidy_subidy/subsonic_api.py +++ b/mopidy_subidy/subsonic_api.py @@ -271,6 +271,9 @@ 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()]