Source code for hangout_api.settings.audio

"""
Hangout API for audio
"""

from hangout_api.settings.utils import BaseSettings
from retrying import retry


[docs]class AudioDevice(object): """ Class that represents audio devise. More like marker than actual class. .. testsetup:: AudioDevice from hangout_api.settings.audio import AudioDevice .. doctest:: AudioDevice >>> device_1 = AudioDevice('audio 1') >>> device_1.name 'audio 1' >>> device_1 <AudioDevice: 'audio 1'> >>> device_1 == AudioDevice('audio 2') False >>> device_1 == AudioDevice('audio 1') True """ # pylint: disable=too-few-public-methods def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name def __repr__(self): return "<AudioDevice: %r>" % self.name
[docs]class AudioSettings(BaseSettings): # pylint: disable=duplicate-code """ Controlling call audio settings. ================================== .. testsetup:: AudioSettings from hangout_api.settings.audio import AudioSettings, AudioDevice from hangout_api.tests.doctests_utils import DummyHangout hangout = DummyHangout( name='audio', klass=AudioSettings, getter=[ AudioDevice('Default'), AudioDevice('Built-in Audio Analog Stereo')], setter=None, current=AudioDevice('Default')) """ device_class = AudioDevice @retry(stop_max_attempt_number=3)
[docs] def get_devices(self, with_nodes=False): """ Returns list of available audio devices: .. doctest:: AudioSettings >>> hangout.audio.get_devices() [<AudioDevice: 'Default'>, ...] """ device_xpath = '//*[contains(@class, "iph_s_ao")]' devices_list_xpath = \ '//div[@class="c-i c-i-Ed Iz"]/div/div[@class="c-k-t"]' return self._devices_getter( device_xpath, devices_list_xpath, with_nodes)
@retry(stop_max_attempt_number=3)
[docs] def set_device(self, device_name): """ Set device by its name: .. doctest:: AudioSettings >>> hangout.audio.get_devices() [<AudioDevice: 'Default'>, ...] >>> hangout.audio.set_device('Default') """ return self._device_setter(device_name)
@property @retry(stop_max_attempt_number=3) def current_device(self): """ Returns current device: .. doctest:: AudioSettings >>> hangout.audio.current_device <AudioDevice: 'Default'> """ return self._current_device_getter('Play test sound')