Improvements after code review

This commit is contained in:
Stein Magnus Jodal 2012-10-28 20:58:51 +01:00
parent d450e5a238
commit 9a617b1803
4 changed files with 29 additions and 24 deletions

View File

@ -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()

View File

@ -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])

View File

@ -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):

View File

@ -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())