mpd: Add 'seekcur' command
This commit is contained in:
parent
bac240501b
commit
ac537a63c7
@ -8,7 +8,9 @@ This change log is used to track all major changes to Mopidy.
|
||||
v0.11.0 (in development)
|
||||
========================
|
||||
|
||||
- No changes yet.
|
||||
**MPD frontend**
|
||||
|
||||
- Add support for ``seekcur`` command added in MPD 0.17.
|
||||
|
||||
|
||||
v0.10.0 (2012-12-12)
|
||||
|
||||
@ -349,6 +349,26 @@ def seekid(context, tlid, seconds):
|
||||
context.core.playback.seek(int(seconds) * 1000).get()
|
||||
|
||||
|
||||
@handle_request(r'^seekcur "(?P<position>\d+)"$')
|
||||
@handle_request(r'^seekcur "(?P<diff>[-+]\d+)"$')
|
||||
def seekcur(context, position=None, diff=None):
|
||||
"""
|
||||
*musicpd.org, playback section:*
|
||||
|
||||
``seekcur {TIME}``
|
||||
|
||||
Seeks to the position ``TIME`` within the current song. If prefixed by
|
||||
'+' or '-', then the time is relative to the current playing position.
|
||||
"""
|
||||
if position is not None:
|
||||
position = int(position) * 1000
|
||||
context.core.playback.seek(position).get()
|
||||
elif diff is not None:
|
||||
position = context.core.playback.time_position.get()
|
||||
position += int(diff) * 1000
|
||||
context.core.playback.seek(position).get()
|
||||
|
||||
|
||||
@handle_request(r'^setvol (?P<volume>[-+]*\d+)$')
|
||||
@handle_request(r'^setvol "(?P<volume>[-+]*\d+)"$')
|
||||
def setvol(context, volume):
|
||||
|
||||
@ -414,6 +414,37 @@ class PlaybackControlHandlerTest(protocol.BaseTestCase):
|
||||
self.assertEqual(seek_track, self.core.playback.current_track.get())
|
||||
self.assertInResponse('OK')
|
||||
|
||||
def test_seekcur_absolute_value(self):
|
||||
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
|
||||
self.core.playback.play()
|
||||
|
||||
self.sendRequest('seekcur "30"')
|
||||
|
||||
self.assertGreaterEqual(self.core.playback.time_position.get(), 30000)
|
||||
self.assertInResponse('OK')
|
||||
|
||||
def test_seekcur_positive_diff(self):
|
||||
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
|
||||
self.core.playback.play()
|
||||
self.core.playback.seek(10000)
|
||||
self.assertGreaterEqual(self.core.playback.time_position.get(), 10000)
|
||||
|
||||
self.sendRequest('seekcur "+20"')
|
||||
|
||||
self.assertGreaterEqual(self.core.playback.time_position.get(), 30000)
|
||||
self.assertInResponse('OK')
|
||||
|
||||
def test_seekcur_negative_diff(self):
|
||||
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
|
||||
self.core.playback.play()
|
||||
self.core.playback.seek(30000)
|
||||
self.assertGreaterEqual(self.core.playback.time_position.get(), 30000)
|
||||
|
||||
self.sendRequest('seekcur "-20"')
|
||||
|
||||
self.assertLessEqual(self.core.playback.time_position.get(), 15000)
|
||||
self.assertInResponse('OK')
|
||||
|
||||
def test_stop(self):
|
||||
self.sendRequest('stop')
|
||||
self.assertEqual(STOPPED, self.core.playback.state.get())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user