From 9a617b180372972add84f6dc41e2c10bb93c86e5 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 28 Oct 2012 20:58:51 +0100 Subject: [PATCH] Improvements after code review --- mopidy/core/actor.py | 6 ++-- mopidy/core/library.py | 28 +++++++++---------- mopidy/core/playback.py | 11 +++++--- tests/frontends/mpd/protocol/playback_test.py | 8 +++--- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index f5de038d..05c085fd 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -1,3 +1,5 @@ +import itertools + import pykka from mopidy.audio import AudioListener @@ -45,8 +47,8 @@ class Core(pykka.ThreadingActor, AudioListener): """List of URI schemes we can handle""" futures = [backend.uri_schemes for backend in self._backends] results = pykka.get_all(futures) - schemes = [uri_scheme for result in results for uri_scheme in result] - return sorted(schemes) + uri_schemes = itertools.chain(*results) + return sorted(uri_schemes) def reached_end_of_stream(self): self.playback.on_end_of_track() diff --git a/mopidy/core/library.py b/mopidy/core/library.py index 80d9cbe5..37c8c522 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -1,3 +1,5 @@ +import urlparse + import pykka from mopidy.models import Playlist @@ -8,16 +10,18 @@ class LibraryController(object): def __init__(self, backends, core): self.backends = backends - uri_schemes_by_backend = {backend: backend.uri_schemes.get() + uri_schemes_by_backend = { + backend: backend.uri_schemes.get() for backend in backends} - self.backends_by_uri_scheme = {uri_scheme: backend + self.backends_by_uri_scheme = { + uri_scheme: backend for backend, uri_schemes in uri_schemes_by_backend.items() for uri_scheme in uri_schemes} self.core = core def _get_backend(self, uri): - uri_scheme = uri.split(':', 1)[0] + uri_scheme = urlparse.urlparse(uri).scheme return self.backends_by_uri_scheme.get(uri_scheme) def find_exact(self, **query): @@ -37,9 +41,7 @@ class LibraryController(object): :type query: dict :rtype: :class:`mopidy.models.Playlist` """ - futures = [] - for backend in self.backends: - futures.append(backend.library.find_exact(**query)) + futures = [b.library.find_exact(**query) for b in self.backends] results = pykka.get_all(futures) return Playlist(tracks=[ track for playlist in results for track in playlist.tracks]) @@ -55,6 +57,8 @@ class LibraryController(object): backend = self._get_backend(uri) if backend: return backend.library.lookup(uri).get() + else: + return None def refresh(self, uri=None): """ @@ -66,12 +70,10 @@ class LibraryController(object): if uri is not None: backend = self._get_backend(uri) if backend: - return backend.library.refresh(uri).get() + backend.library.refresh(uri).get() else: - futures = [] - for backend in self.backends: - futures.append(backend.library.refresh(uri)) - return pykka.get_all(futures) + futures = [b.library.refresh(uri) for b in self.backends] + pykka.get_all(futures) def search(self, **query): """ @@ -90,9 +92,7 @@ class LibraryController(object): :type query: dict :rtype: :class:`mopidy.models.Playlist` """ - futures = [] - for backend in self.backends: - futures.append(backend.library.search(**query)) + futures = [b.library.search(**query) for b in self.backends] results = pykka.get_all(futures) return Playlist(tracks=[ track for playlist in results for track in playlist.tracks]) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 4cef8db6..721bc2a8 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -1,5 +1,6 @@ import logging import random +import urlparse from . import listener @@ -78,9 +79,11 @@ class PlaybackController(object): self.audio = audio self.backends = backends - uri_schemes_by_backend = {backend: backend.uri_schemes.get() + uri_schemes_by_backend = { + backend: backend.uri_schemes.get() for backend in backends} - self.backends_by_uri_scheme = {uri_scheme: backend + self.backends_by_uri_scheme = { + uri_scheme: backend for backend, uri_schemes in uri_schemes_by_backend.items() for uri_scheme in uri_schemes} @@ -94,8 +97,8 @@ class PlaybackController(object): def _get_backend(self): if self.current_cp_track is None: return None - track = self.current_cp_track.track - uri_scheme = track.uri.split(':', 1)[0] + uri = self.current_cp_track.track.uri + uri_scheme = urlparse.urlparse(uri).scheme return self.backends_by_uri_scheme[uri_scheme] def _get_cpid(self, cp_track): diff --git a/tests/frontends/mpd/protocol/playback_test.py b/tests/frontends/mpd/protocol/playback_test.py index ab254bdf..202ac649 100644 --- a/tests/frontends/mpd/protocol/playback_test.py +++ b/tests/frontends/mpd/protocol/playback_test.py @@ -392,9 +392,9 @@ class PlaybackControlHandlerTest(protocol.BaseTestCase): self.assertInResponse(u'OK') def test_seek_with_songpos(self): - seek_track = Track(uri='dummy:2', length=40000) + seek_track = Track(uri='dummy:b', length=40000) self.core.current_playlist.append( - [Track(uri='dummy:1', length=40000), seek_track]) + [Track(uri='dummy:a', length=40000), seek_track]) self.sendRequest(u'seek "1" "30"') self.assertEqual(self.core.playback.current_track.get(), seek_track) @@ -417,9 +417,9 @@ class PlaybackControlHandlerTest(protocol.BaseTestCase): self.assertInResponse(u'OK') def test_seekid_with_cpid(self): - seek_track = Track(uri='dummy:2', length=40000) + seek_track = Track(uri='dummy:b', length=40000) self.core.current_playlist.append( - [Track(uri='dummy:1', length=40000), seek_track]) + [Track(uri='dummy:a', length=40000), seek_track]) self.sendRequest(u'seekid "1" "30"') self.assertEqual(1, self.core.playback.current_cpid.get())