From 7d59d03ec060f5f3c5b21421a2f85ee5262d70bb Mon Sep 17 00:00:00 2001 From: Thomas Refis Date: Tue, 9 Apr 2013 11:44:53 +0200 Subject: [PATCH] mpd: minor style commit --- mopidy/frontends/mpd/dispatcher.py | 36 ++++++++++--------- mopidy/frontends/mpd/protocol/music_db.py | 7 ++-- .../mpd/protocol/stored_playlists.py | 9 ++--- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/mopidy/frontends/mpd/dispatcher.py b/mopidy/frontends/mpd/dispatcher.py index f0842fa7..ed2c82a1 100644 --- a/mopidy/frontends/mpd/dispatcher.py +++ b/mopidy/frontends/mpd/dispatcher.py @@ -232,12 +232,9 @@ class MpdContext(object): #: The subsytems that we want to be notified about in idle mode. subscriptions = None - #: a map from playlists printing names to uris (necessary as mpd requires - #: playlists names to be unique) - to_uri = None + playlist_uri_from_name = None - #: the invert map (uri to printing name) - from_uri = None + playlist_name_from_uri = None def __init__(self, dispatcher, session=None, core=None): self.dispatcher = dispatcher @@ -245,21 +242,28 @@ class MpdContext(object): self.core = core self.events = set() self.subscriptions = set() - self.to_uri = {} - self.from_uri = {} + self.playlist_uri_from_name = {} + self.playlist_name_from_uri = {} self.refresh_playlists_mapping() + def create_unique_name(self, name): + i = 1 + while name in self.playlist_uri_from_name: + name = '%s [%d]' % playlist.name % i + i += 1 + return name + def refresh_playlists_mapping(self): + """ + Maintain map between playlists and unique playlist names to be used by + MPD + """ if self.core is not None: - self.to_uri.clear() - self.from_uri.clear() + self.playlist_uri_from_name.clear() + self.playlist_name_from_uri.clear() for playlist in self.core.playlists.playlists.get(): if not playlist.name: continue - name = playlist.name - i = 1 - while name in self.to_uri: - name = '%s [%d]' % playlist.name % i - i += 1 - self.to_uri[name] = playlist.uri - self.from_uri[playlist.uri] = name + name = self.create_unique_name(playlist.name) + self.playlist_uri_from_name[name] = playlist.uri + self.playlist_name_from_uri[playlist.uri] = name diff --git a/mopidy/frontends/mpd/protocol/music_db.py b/mopidy/frontends/mpd/protocol/music_db.py index be641467..11def309 100644 --- a/mopidy/frontends/mpd/protocol/music_db.py +++ b/mopidy/frontends/mpd/protocol/music_db.py @@ -381,11 +381,12 @@ def searchaddpl(context, playlist_name, mpd_query): return results = context.core.library.search(**query).get() - if len(context.to_uri) == 0: + if len(context.playlist_uri_from_name) == 0: context.refresh_playlists_mapping() - if playlist_name in context.to_uri: - playlist = context.core.playlists.lookup(context.to_uri[playlist_name]).get() + if playlist_name in context.playlist_uri_from_name: + uri = context.playlist_uri_from_name[playlist_name] + playlist = context.core.playlists.lookup(uri).get() else: playlist = context.core.playlists.create(playlist_name).get() tracks = list(playlist.tracks) + _get_tracks(results) diff --git a/mopidy/frontends/mpd/protocol/stored_playlists.py b/mopidy/frontends/mpd/protocol/stored_playlists.py index 5d43bc3c..b9fbad06 100644 --- a/mopidy/frontends/mpd/protocol/stored_playlists.py +++ b/mopidy/frontends/mpd/protocol/stored_playlists.py @@ -80,9 +80,11 @@ def listplaylists(context): for playlist in context.core.playlists.playlists.get(): if not playlist.name: continue - if playlist.uri not in context.from_uri: - context.refresh_playlists_mapping() # the maps are not synced, we refresh them - result.append(('playlist', context.from_uri[playlist.uri])) + if playlist.uri not in context.playlist_name_from_uri: + # the maps are not synced, we refresh them + context.refresh_playlists_mapping() + name = context.playlist_name_from_uri[playlist.uri] + result.append(('playlist', name)) last_modified = ( playlist.last_modified or dt.datetime.utcnow()).isoformat() # Remove microseconds @@ -92,7 +94,6 @@ def listplaylists(context): result.append(('Last-Modified', last_modified)) return result - @handle_request(r'^load "(?P[^"]+)"( "(?P\d+):(?P\d+)*")*$') def load(context, name, start=None, end=None): """