mpd: playlist addition / creation

- Rename _playlist_create to _create_playlist
- Change short variables to abbreviations
- Use double quoting when a string contains a single quote
- Use playlist_deleted event
This commit is contained in:
Jelle van der Waa 2015-10-03 21:22:38 +02:00 committed by Stein Magnus Jodal
parent cb20958e48
commit d6afcf0abf
2 changed files with 20 additions and 20 deletions

View File

@ -154,13 +154,13 @@ def playlistadd(context, name, track_uri):
if not playlist: if not playlist:
# Create new playlist with this single track # Create new playlist with this single track
lookup_res = context.core.library.lookup(uris=[track_uri]).get() lookup_res = context.core.library.lookup(uris=[track_uri]).get()
tracks = [a for sl in lookup_res.values() for a in sl] tracks = [track for selections in lookup_res.values() for track in selections]
_playlistcreate(context, name, tracks) _create_playlist(context, name, tracks)
else: else:
# Add track to existing playlist # Add track to existing playlist
uri_scheme = urlparse.urlparse(track_uri).scheme uri_scheme = urlparse.urlparse(track_uri).scheme
lookup_res = context.core.library.lookup(uris=[track_uri]).get() lookup_res = context.core.library.lookup(uris=[track_uri]).get()
to_add = [a for sl in lookup_res.values() for a in sl] to_add = [track for selections in lookup_res.values() for track in selections]
playlist = playlist.replace(tracks=list(playlist.tracks) + to_add) playlist = playlist.replace(tracks=list(playlist.tracks) + to_add)
if context.core.playlists.save(playlist).get() is None: if context.core.playlists.save(playlist).get() is None:
playlist_scheme = urlparse.urlparse(playlist.uri).scheme playlist_scheme = urlparse.urlparse(playlist.uri).scheme
@ -168,29 +168,29 @@ def playlistadd(context, name, track_uri):
playlist_scheme, uri_scheme) playlist_scheme, uri_scheme)
def _playlistcreate(context, name, tracks): def _create_playlist(context, name, tracks):
""" """
Creates new playlist using backend aprropriate for passed list of tracks Creates new playlist using backend appropriate for the given tracks
""" """
uri_schemes = set([urlparse.urlparse(t.uri).scheme for t in tracks]) uri_schemes = set([urlparse.urlparse(t.uri).scheme for t in tracks])
for scheme in uri_schemes: for scheme in uri_schemes:
playlist = context.core.playlists.create(name, scheme).get() playlist = context.core.playlists.create(name, scheme).get()
if not playlist: if not playlist:
# Backend can't create playlists at all # Backend can't create playlists at all
logger.warning('%s backend can\'t create playlists', scheme) logger.warning("%s backend can't create playlists", scheme)
continue continue
playlist = playlist.replace(tracks=tracks) playlist = playlist.replace(tracks=tracks)
if context.core.playlists.save(playlist).get() is None: if context.core.playlists.save(playlist).get() is None:
# Falied to save using this backend # Failed to save using this backend
continue continue
# Created and saved # Created and saved
return return
# Can't use backend aprropriate to passed uri schemes, use default one # Can't use backend appropriate for passed uri schemes, use default one
scheme = context.dispatcher.config['mpd']['default_playlist_scheme'] default_scheme = context.dispatcher.config['mpd']['default_playlist_scheme']
playlist = context.core.playlists.create(name, scheme).get() playlist = context.core.playlists.create(name, default_scheme).get()
if not playlist: if not playlist:
# If even default backend can't save playlist, everything is lost # If even MPD's default backend can't save playlist, everything is lost
logger.warning('Default backend can\'t create playlists') logger.warning("Default backend can't create playlists")
raise exceptions.MpdFailedToSavePlaylist(None) raise exceptions.MpdFailedToSavePlaylist(None)
playlist = playlist.replace(tracks=tracks) playlist = playlist.replace(tracks=tracks)
if context.core.playlists.save(playlist).get() is None: if context.core.playlists.save(playlist).get() is None:
@ -324,13 +324,12 @@ def save(context, name):
Saves the current playlist to ``NAME.m3u`` in the playlist Saves the current playlist to ``NAME.m3u`` in the playlist
directory. directory.
""" """
tl_tracks = context.core.tracklist.get_tl_tracks().get() tracks = context.core.tracklist.get_tracks().get()
tracks = [t.track for t in tl_tracks]
uri = context.lookup_playlist_uri_from_name(name) uri = context.lookup_playlist_uri_from_name(name)
playlist = uri is not None and context.core.playlists.lookup(uri).get() playlist = uri is not None and context.core.playlists.lookup(uri).get()
if not playlist: if not playlist:
# Create new playlist # Create new playlist
_playlistcreate(context, name, tracks) _create_playlist(context, name, tracks)
else: else:
# Overwrite existing playlist # Overwrite existing playlist
playlist = playlist.replace(tracks=tracks) playlist = playlist.replace(tracks=tracks)

View File

@ -223,10 +223,12 @@ class PlaylistsHandlerTest(protocol.BaseTestCase):
self.backend.playlists.set_dummy_playlists([ self.backend.playlists.set_dummy_playlists([
Playlist( Playlist(
name='name', uri='dummy:a1', tracks=[tracks[0]])]) name='name', uri='dummy:a1', tracks=[tracks[0]])])
self.send_request('playlistadd "name" "dummy:b"') self.send_request('playlistadd "name" "dummy:b"')
self.assertInResponse('OK') self.assertInResponse('OK')
self.assertEqual( self.assertEqual(
2, len(self.backend.playlists.get_items("dummy:a1").get())) 2, len(self.backend.playlists.get_items('dummy:a1').get()))
def test_playlistadd_creates_playlist(self): def test_playlistadd_creates_playlist(self):
tracks = [ tracks = [
@ -236,7 +238,7 @@ class PlaylistsHandlerTest(protocol.BaseTestCase):
self.send_request('playlistadd "name" "dummy:a"') self.send_request('playlistadd "name" "dummy:a"')
self.assertInResponse('OK') self.assertInResponse('OK')
self.assertNotEqual( self.assertNotEqual(
None, self.backend.playlists.lookup("dummy:name").get()) None, self.backend.playlists.lookup('dummy:name').get())
def test_playlistclear(self): def test_playlistclear(self):
self.backend.playlists.set_dummy_playlists([ self.backend.playlists.set_dummy_playlists([
@ -290,8 +292,7 @@ class PlaylistsHandlerTest(protocol.BaseTestCase):
name='old_name', uri='dummy:a1', tracks=[Track(uri='b')])]) name='old_name', uri='dummy:a1', tracks=[Track(uri='b')])])
self.send_request('rename "old_name" "new_name"') self.send_request('rename "old_name" "new_name"')
self.assertInResponse('OK') self.assertInResponse('OK')
self.assertNotEqual( self.assertIsNotNone(self.backend.playlists.lookup("dummy:new_name").get())
None, self.backend.playlists.lookup("dummy:new_name").get())
def test_rm(self): def test_rm(self):
self.backend.playlists.set_dummy_playlists([ self.backend.playlists.set_dummy_playlists([