mopidy-pummeluff/actions/volume.py

51 lines
1.2 KiB
Python

'''
Python module for Mopidy Pummeluff volume tag.
'''
__all__ = (
'Volume',
)
from logging import getLogger
from .base import Action
LOGGER = getLogger(__name__)
class Volume(Action):
'''
Sets the volume to the percentage value retreived from the tag's parameter.
'''
@classmethod
def execute(cls, core, volume): # pylint: disable=arguments-differ
'''
Set volume of the mixer.
:param mopidy.core.Core core: The mopidy core instance
:param volume: The new (percentage) volume
:type volume: int|str
'''
LOGGER.info('Setting volume to %s', volume)
try:
core.mixer.set_volume(int(volume))
except ValueError as ex:
LOGGER.error(str(ex))
def validate(self):
'''
Validates if the parameter is an integer between 0 and 100.
:param mixed parameter: The parameter
:raises ValueError: When parameter is invalid
'''
super().validate()
try:
number = int(self.parameter)
assert 0 <= number <= 100
except (ValueError, AssertionError):
raise ValueError('Volume parameter has to be a number between 0 and 100')