From 0d401c8757d6138628b45778eba9a928034404ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Forslund?= Date: Fri, 5 Apr 2019 11:47:50 +0200 Subject: [PATCH 1/2] Remove superfluous mycroft.stop handler removal --- mycroft/audio/audioservice.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mycroft/audio/audioservice.py b/mycroft/audio/audioservice.py index e92e042558..4173224bf0 100644 --- a/mycroft/audio/audioservice.py +++ b/mycroft/audio/audioservice.py @@ -496,4 +496,3 @@ class AudioService: self.bus.remove('recognizer_loop:audio_output_end', self._restore_volume) self.bus.remove('recognizer_loop:record_end', self._restore_volume) - self.bus.remove('mycroft.stop', self._stop) From 9248be1691b66bc6f96ee4c3e1d3c9feec4b6ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Forslund?= Date: Fri, 5 Apr 2019 11:48:32 +0200 Subject: [PATCH 2/2] Add list of available backends to audioservice The message returned is a dict of all available audio backends as keys containing 'supported_uris' listing supported uri types (file:// http:// etc.), 'remote' (bool) True if remote), 'default' (bool) true if the default audio backend. --- mycroft/audio/audioservice.py | 13 +++++++++++++ mycroft/skills/audioservice.py | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/mycroft/audio/audioservice.py b/mycroft/audio/audioservice.py index 4173224bf0..bb5cff236b 100644 --- a/mycroft/audio/audioservice.py +++ b/mycroft/audio/audioservice.py @@ -194,6 +194,7 @@ class AudioService: self.bus.on('mycroft.audio.service.next', self._next) self.bus.on('mycroft.audio.service.prev', self._prev) self.bus.on('mycroft.audio.service.track_info', self._track_info) + self.bus.on('mycroft.audio.service.list_backends', self._list_backends) self.bus.on('mycroft.audio.service.seek_forward', self._seek_forward) self.bus.on('mycroft.audio.service.seek_backward', self._seek_backward) self.bus.on('recognizer_loop:audio_output_start', self._lower_volume) @@ -430,6 +431,18 @@ class AudioService: self.bus.emit(Message('mycroft.audio.service.track_info_reply', data=track_info)) + def _list_backends(self, message): + """ Return a dict of available backends. """ + data = {} + for s in self.service: + info = { + 'supported_uris': s.supported_uris(), + 'default': s == self.default, + 'remote': isinstance(s, RemoteAudioBackend) + } + data[s.name] = info + self.bus.emit(message.response(data)) + def _seek_forward(self, message): """ Handle message bus command to skip X seconds diff --git a/mycroft/skills/audioservice.py b/mycroft/skills/audioservice.py index 9a75d0e748..47a2cb9e45 100644 --- a/mycroft/skills/audioservice.py +++ b/mycroft/skills/audioservice.py @@ -168,6 +168,16 @@ class AudioService: return self.info or {} + def available_backends(self): + """ Return available audio backends. + + Returns: + dict with backend names as keys + """ + msg = Message('mycroft.audio.service.list_backends') + response = self.bus.wait_for_response(msg) + return response.data if response else {} + @property def is_playing(self): return self.track_info() != {}