16 from os.path
import abspath
23 Interprete paths as file:// uri's 26 s: string to be checked 29 if s is uri, s is returned otherwise file:// is prepended 31 if isinstance(s, str):
33 return 'file://' + abspath(s)
36 elif isinstance(s, (tuple, list)):
38 return 'file://' + abspath(s[0]), s[1]
42 raise ValueError(
'Invalid track')
47 AudioService class for interacting with the audio subsystem 50 bus: Mycroft messagebus connection 55 self.bus.on(
'mycroft.audio.service.track_info_reply',
61 Handler for catching returning track info 63 self.
info = message.data
66 """ Queue up a track to playing playlist. 69 tracks: track uri or list of track uri's 72 if isinstance(tracks, str):
74 elif not isinstance(tracks, list):
77 self.bus.emit(
Message(
'mycroft.audio.service.queue',
78 data={
'tracks': tracks}))
80 def play(self, tracks=None, utterance=None, repeat=None):
84 tracks: track uri or list of track uri's 85 Each track can be added as a tuple with (uri, mime) 86 to give a hint of the mime type to the system 87 utterance: forward utterance for further processing by the 89 repeat: if the playback should be looped 91 repeat = repeat
or False 93 utterance = utterance
or '' 94 if isinstance(tracks, (str, tuple)):
96 elif not isinstance(tracks, list):
99 self.bus.emit(
Message(
'mycroft.audio.service.play',
100 data={
'tracks': tracks,
101 'utterance': utterance,
105 """ Stop the track. """ 106 self.bus.emit(
Message(
'mycroft.audio.service.stop'))
109 """ Change to next track. """ 110 self.bus.emit(
Message(
'mycroft.audio.service.next'))
113 """ Change to previous track. """ 114 self.bus.emit(
Message(
'mycroft.audio.service.prev'))
117 """ Pause playback. """ 118 self.bus.emit(
Message(
'mycroft.audio.service.pause'))
121 """ Resume paused playback. """ 122 self.bus.emit(
Message(
'mycroft.audio.service.resume'))
129 seconds (int): number of seconds to seek, if negative rewind 141 seconds (int): number of seconds to skip 143 self.bus.emit(
Message(
'mycroft.audio.service.seek_forward',
144 {
"seconds": seconds}))
151 seconds (int): number of seconds to rewind 153 self.bus.emit(
Message(
'mycroft.audio.service.seek_backward',
154 {
"seconds": seconds}))
157 """ Request information of current playing track. 160 Dict with track info. 163 self.bus.emit(
Message(
'mycroft.audio.service.track_info'))
165 while self.
info is None and wait >= 0:
169 return self.
info or {}
172 """ Return available audio backends. 175 dict with backend names as keys 177 msg =
Message(
'mycroft.audio.service.list_backends')
178 response = self.bus.wait_for_response(msg)
179 return response.data
if response
else {}
def seek_backward(self, seconds=1)
def seek_forward(self, seconds=1)
def seek(self, seconds=1)
def play(self, tracks=None, utterance=None, repeat=None)
def _track_info(self, message=None)
def queue(self, tracks=None)
def available_backends(self)