core: Add play(tlid) support
This commit is contained in:
parent
c996072040
commit
a62293c316
@ -265,18 +265,32 @@ class PlaybackController(object):
|
|||||||
self.set_state(PlaybackState.PAUSED)
|
self.set_state(PlaybackState.PAUSED)
|
||||||
self._trigger_track_playback_paused()
|
self._trigger_track_playback_paused()
|
||||||
|
|
||||||
def play(self, tl_track=None):
|
def play(self, tl_track=None, tlid=None):
|
||||||
"""
|
"""
|
||||||
Play the given track, or if the given track is :class:`None`, play the
|
Play the given track, or if the given track is :class:`None`, play the
|
||||||
currently active track.
|
currently active track.
|
||||||
|
|
||||||
:param tl_track: track to play
|
:param tl_track: track to play
|
||||||
:type tl_track: :class:`mopidy.models.TlTrack` or :class:`None`
|
:type tl_track: :class:`mopidy.models.TlTrack` or :class:`None`
|
||||||
|
:param tlid: TLID of the track to play
|
||||||
|
:type tlid: :class:`int` or :class:`None`
|
||||||
"""
|
"""
|
||||||
tl_track is None or validation.check_instance(tl_track, models.TlTrack)
|
tl_track is None or validation.check_instance(tl_track, models.TlTrack)
|
||||||
self._play(tl_track, on_error_step=1)
|
tlid is None or validation.check_integer(tlid, min=0)
|
||||||
|
# TODO: check one of or none for args
|
||||||
|
if tl_track:
|
||||||
|
deprecation.warn('core.playback.play:tl_track_kwarg', pending=True)
|
||||||
|
|
||||||
|
self._play(tl_track=tl_track, tlid=tlid, on_error_step=1)
|
||||||
|
|
||||||
|
def _play(self, tl_track=None, tlid=None, on_error_step=1):
|
||||||
|
if tl_track is None and tlid is not None:
|
||||||
|
for tl_track in self.core.tracklist.get_tl_tracks():
|
||||||
|
if tl_track.tlid == tlid:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
tl_track = None
|
||||||
|
|
||||||
def _play(self, tl_track=None, on_error_step=1):
|
|
||||||
if tl_track is None:
|
if tl_track is None:
|
||||||
if self.get_state() == PlaybackState.PAUSED:
|
if self.get_state() == PlaybackState.PAUSED:
|
||||||
return self.resume()
|
return self.resume()
|
||||||
|
|||||||
@ -30,6 +30,9 @@ _MESSAGES = {
|
|||||||
'core.playback.set_mute': 'playback.set_mute() is deprecated',
|
'core.playback.set_mute': 'playback.set_mute() is deprecated',
|
||||||
'core.playback.get_volume': 'playback.get_volume() is deprecated',
|
'core.playback.get_volume': 'playback.get_volume() is deprecated',
|
||||||
'core.playback.set_volume': 'playback.set_volume() is deprecated',
|
'core.playback.set_volume': 'playback.set_volume() is deprecated',
|
||||||
|
'core.playback.play:tl_track_kwargs':
|
||||||
|
'playback.play() with "tl_track" argument is pending deprecation use '
|
||||||
|
'"tlid" instead',
|
||||||
|
|
||||||
# Deprecated features in core playlists:
|
# Deprecated features in core playlists:
|
||||||
'core.playlists.filter': 'playlists.filter() is deprecated',
|
'core.playlists.filter': 'playlists.filter() is deprecated',
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import pykka
|
|||||||
|
|
||||||
from mopidy import backend, core
|
from mopidy import backend, core
|
||||||
from mopidy.models import Track
|
from mopidy.models import Track
|
||||||
|
from mopidy.utils import deprecation
|
||||||
|
|
||||||
from tests import dummy_audio as audio
|
from tests import dummy_audio as audio
|
||||||
|
|
||||||
@ -698,3 +699,22 @@ class CorePlaybackWithOldBackendTest(unittest.TestCase):
|
|||||||
c = core.Core(mixer=None, backends=[b])
|
c = core.Core(mixer=None, backends=[b])
|
||||||
c.tracklist.add(uris=['dummy1:a'])
|
c.tracklist.add(uris=['dummy1:a'])
|
||||||
c.playback.play() # No TypeError == test passed.
|
c.playback.play() # No TypeError == test passed.
|
||||||
|
|
||||||
|
|
||||||
|
class TestPlay(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self): # noqa: N802
|
||||||
|
self.backend = mock.Mock()
|
||||||
|
self.backend.uri_schemes.get.return_value = ['dummy']
|
||||||
|
self.core = core.Core(backends=[self.backend])
|
||||||
|
|
||||||
|
self.tracks = [Track(uri='dummy:a', length=1234),
|
||||||
|
Track(uri='dummy:b', length=1234)]
|
||||||
|
|
||||||
|
with deprecation.ignore('core.tracklist.add:tracks_arg'):
|
||||||
|
self.tl_tracks = self.core.tracklist.add(tracks=self.tracks)
|
||||||
|
|
||||||
|
def test_play_tlid(self):
|
||||||
|
self.core.playback.play(tlid=self.tl_tracks[1].tlid)
|
||||||
|
self.backend.playback.change_track.assert_called_once_with(
|
||||||
|
self.tl_tracks[1].track)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user