51 lines
1.2 KiB
Python
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')
|