diff --git a/mopidy/m3u/playlists.py b/mopidy/m3u/playlists.py index d9eb341e..d5f2b1e9 100644 --- a/mopidy/m3u/playlists.py +++ b/mopidy/m3u/playlists.py @@ -28,6 +28,12 @@ class M3UPlaylistsProvider(backend.PlaylistsProvider): for pl in self._playlists.values()] return sorted(refs, key=operator.attrgetter('name')) + def get_items(self, uri): + playlist = self._playlists.get(uri) + if playlist is None: + return None + return [Ref.track(uri=t.uri, name=t.name) for t in playlist.tracks] + @property def playlists(self): return sorted( diff --git a/tests/m3u/test_playlists.py b/tests/m3u/test_playlists.py index 83dec321..be94ed2f 100644 --- a/tests/m3u/test_playlists.py +++ b/tests/m3u/test_playlists.py @@ -278,3 +278,20 @@ class M3UPlaylistsProviderTest(unittest.TestCase): self.core.playlists.delete('m3u:c.m3u') check_order(self.core.playlists.as_list(), ['b', 'd']) + + def test_get_items_returns_item_refs(self): + track = Track(uri='dummy:a', name='A', length=60000) + playlist = self.core.playlists.create('test') + playlist = self.core.playlists.save(playlist.copy(tracks=[track])) + + item_refs = self.core.playlists.get_items(playlist.uri) + + self.assertEqual(len(item_refs), 1) + self.assertEqual(item_refs[0].type, 'track') + self.assertEqual(item_refs[0].uri, 'dummy:a') + self.assertEqual(item_refs[0].name, 'A') + + def test_get_items_of_unknown_playlist_returns_none(self): + item_refs = self.core.playlists.get_items('dummy:unknown') + + self.assertIsNone(item_refs)