mpd: Add volume command
This commit is contained in:
parent
f15b4e7327
commit
14444fe24f
@ -39,6 +39,9 @@ Bug fix release.
|
|||||||
- MPD: Don't return tracks with empty URIs. (Partly fixes: :issue:`1340`, PR:
|
- MPD: Don't return tracks with empty URIs. (Partly fixes: :issue:`1340`, PR:
|
||||||
:issue:`1343`)
|
:issue:`1343`)
|
||||||
|
|
||||||
|
- MPD: Add ``volume`` command that was reintroduced, though still as a
|
||||||
|
deprecated command, in MPD 0.18 and is in use by some clients like mpc.
|
||||||
|
|
||||||
- Proxy: Handle case where :confval:`proxy/port` is either missing from config
|
- Proxy: Handle case where :confval:`proxy/port` is either missing from config
|
||||||
or set to an empty string. (PR: :issue:`1371`)
|
or set to an empty string. (PR: :issue:`1371`)
|
||||||
|
|
||||||
|
|||||||
@ -426,3 +426,27 @@ def stop(context):
|
|||||||
Stops playing.
|
Stops playing.
|
||||||
"""
|
"""
|
||||||
context.core.playback.stop()
|
context.core.playback.stop()
|
||||||
|
|
||||||
|
|
||||||
|
@protocol.commands.add('volume', change=protocol.INT)
|
||||||
|
def volume(context, change):
|
||||||
|
"""
|
||||||
|
*musicpd.org, playback section:*
|
||||||
|
|
||||||
|
``volume {CHANGE}``
|
||||||
|
|
||||||
|
Changes volume by amount ``CHANGE``.
|
||||||
|
|
||||||
|
Note: ``volume`` is deprecated, use ``setvol`` instead.
|
||||||
|
"""
|
||||||
|
if change < -100 or change > 100:
|
||||||
|
raise exceptions.MpdArgError('Invalid volume value', command='volume')
|
||||||
|
|
||||||
|
old_volume = context.core.mixer.get_volume().get()
|
||||||
|
if old_volume is None:
|
||||||
|
raise exceptions.MpdSystemError('problems setting volume')
|
||||||
|
|
||||||
|
new_volume = min(max(0, old_volume + change), 100)
|
||||||
|
success = context.core.mixer.set_volume(new_volume).get()
|
||||||
|
if not success:
|
||||||
|
raise exceptions.MpdSystemError('problems setting volume')
|
||||||
|
|||||||
@ -453,6 +453,38 @@ class VolumeTest(protocol.BaseTestCase):
|
|||||||
self.assertEqual(50, self.core.mixer.get_volume().get())
|
self.assertEqual(50, self.core.mixer.get_volume().get())
|
||||||
self.assertInResponse('OK')
|
self.assertInResponse('OK')
|
||||||
|
|
||||||
|
def test_volume_plus(self):
|
||||||
|
self.core.mixer.set_volume(50)
|
||||||
|
|
||||||
|
self.send_request('volume +20')
|
||||||
|
|
||||||
|
self.assertEqual(70, self.core.mixer.get_volume().get())
|
||||||
|
self.assertInResponse('OK')
|
||||||
|
|
||||||
|
def test_volume_minus(self):
|
||||||
|
self.core.mixer.set_volume(50)
|
||||||
|
|
||||||
|
self.send_request('volume -20')
|
||||||
|
|
||||||
|
self.assertEqual(30, self.core.mixer.get_volume().get())
|
||||||
|
self.assertInResponse('OK')
|
||||||
|
|
||||||
|
def test_volume_less_than_minus_100(self):
|
||||||
|
self.core.mixer.set_volume(50)
|
||||||
|
|
||||||
|
self.send_request('volume -110')
|
||||||
|
|
||||||
|
self.assertEqual(50, self.core.mixer.get_volume().get())
|
||||||
|
self.assertInResponse('ACK [2@0] {volume} Invalid volume value')
|
||||||
|
|
||||||
|
def test_volume_more_than_plus_100(self):
|
||||||
|
self.core.mixer.set_volume(50)
|
||||||
|
|
||||||
|
self.send_request('volume +110')
|
||||||
|
|
||||||
|
self.assertEqual(50, self.core.mixer.get_volume().get())
|
||||||
|
self.assertInResponse('ACK [2@0] {volume} Invalid volume value')
|
||||||
|
|
||||||
|
|
||||||
class VolumeWithNoMixerTest(protocol.BaseTestCase):
|
class VolumeWithNoMixerTest(protocol.BaseTestCase):
|
||||||
enable_mixer = False
|
enable_mixer = False
|
||||||
@ -460,3 +492,7 @@ class VolumeWithNoMixerTest(protocol.BaseTestCase):
|
|||||||
def test_setvol_without_mixer_fails(self):
|
def test_setvol_without_mixer_fails(self):
|
||||||
self.send_request('setvol "100"')
|
self.send_request('setvol "100"')
|
||||||
self.assertInResponse('ACK [52@0] {setvol} problems setting volume')
|
self.assertInResponse('ACK [52@0] {setvol} problems setting volume')
|
||||||
|
|
||||||
|
def test_volume_without_mixer_failes(self):
|
||||||
|
self.send_request('volume +100')
|
||||||
|
self.assertInResponse('ACK [52@0] {volume} problems setting volume')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user