Improvements after code review
This commit is contained in:
parent
d450e5a238
commit
9a617b1803
@ -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()
|
||||
|
||||
@ -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])
|
||||
|
||||
@ -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):
|
||||
|
||||
@ -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())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user