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._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
|
||||
currently active track.
|
||||
|
||||
:param tl_track: track to play
|
||||
: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)
|
||||
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 self.get_state() == PlaybackState.PAUSED:
|
||||
return self.resume()
|
||||
|
||||
@ -30,6 +30,9 @@ _MESSAGES = {
|
||||
'core.playback.set_mute': 'playback.set_mute() is deprecated',
|
||||
'core.playback.get_volume': 'playback.get_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:
|
||||
'core.playlists.filter': 'playlists.filter() is deprecated',
|
||||
|
||||
@ -8,6 +8,7 @@ import pykka
|
||||
|
||||
from mopidy import backend, core
|
||||
from mopidy.models import Track
|
||||
from mopidy.utils import deprecation
|
||||
|
||||
from tests import dummy_audio as audio
|
||||
|
||||
@ -698,3 +699,22 @@ class CorePlaybackWithOldBackendTest(unittest.TestCase):
|
||||
c = core.Core(mixer=None, backends=[b])
|
||||
c.tracklist.add(uris=['dummy1:a'])
|
||||
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