Source code for libsoundtouch

"""libsoundtouch."""

import logging

try:
    from queue import Queue, Empty
except ImportError:
    from Queue import Queue, Empty  # type: ignore
from zeroconf import Zeroconf, ServiceBrowser
from libsoundtouch.device import SoundTouchDevice
from libsoundtouch.utils import SoundtouchDeviceListener

_LOGGER = logging.getLogger(__name__)


[docs]def soundtouch_device(host, port=8090): """Create a new Soundtouch device. :param host: Host of the device :param port: Port of the device. Default 8090 """ s_device = SoundTouchDevice(host, port) return s_device
[docs]def discover_devices(timeout=5): """Discover devices on the local network. :param timeout: Max time to wait in seconds. Default 5 """ devices = [] # Using Queue as a timeout timer add_devices_queue = Queue() def add_device_function(name, host, port): """Add device callback.""" _LOGGER.info("%s discovered (host: %s, port: %i)", name, host, port) devices.append(soundtouch_device(host, port)) zeroconf = Zeroconf() listener = SoundtouchDeviceListener(add_device_function) _LOGGER.debug("Starting discovery...") ServiceBrowser(zeroconf, "_soundtouch._tcp.local.", listener) try: add_devices_queue.get(timeout=timeout) except Empty: _LOGGER.debug("End of discovery...") return devices