class Mp3Player(): def __init__(self): Player.exec_path = '/usr/bin/mplayer' Player.introspect() self.p = Player() def playAlbum(self, filename): self.p.loadlist(filename) def pause(self): self.p.pause() def previous(self): #TODO on press allway the previous track is playerd. normaly the first press goes back #to the start of the current track # -- to archive this we should first read the current positon .. is it is > XX sec we seek to 0 if below we go to previous track self.p.pt_step(-1) def next(self): self.p.pt_step(1)
class MediaPlayer: def __init__(self): self.settings = Settings.Settings() self.player = False self.effect = False def playerActive(self): return self.player!=False def soundAlarm(self, alarmThread): log.info("Playing alarm") self.playStation() log.debug("Alarm process opened") # Wait a few seconds and see if the mplayer instance is still running time.sleep(self.settings.getInt('radio_delay')) if alarmThread.isSnoozing() or alarmThread.getNextAlarm() is None: # We've snoozed or cancelled the alarm, so no need to check for player log.debug("Media player senses alarm already cancelled/snoozed, so not checking for mplayer instance") return # Fetch the number of mplayer processes running processes = subprocess.Popen('ps aux | grep mplayer | egrep -v "grep" | wc -l', stdout=subprocess.PIPE, shell=True ) num = int(processes.stdout.read()) if num < 2 and self.player is not False: log.error("Could not find mplayer instance, playing panic alarm") self.stopPlayer() time.sleep(2) self.playMedia(PANIC_ALARM,0) def playStation(self,station=-1): if station==-1: station = self.settings.getInt('station') station = Settings.STATIONS[station] log.info("Playing station %s", station['name']) self.player = Player() self.player.loadlist(station['url']) self.player.loop = 0 def playMedia(self,file,loop=-1): log.info("Playing file %s", file) self.player = Player() self.player.loadfile(file) self.player.loop = loop # Play some speech. None-blocking equivalent of playSpeech, which also pays attention to sfx_enabled setting def playVoice(self,text): if self.settings.get('sfx_enabled')==0: # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return log.info("Playing voice: '%s'" % (text)) play = subprocess.Popen('/usr/bin/espeak "%s" >& /dev/null' % (text), shell=True) # Play some speech. Warning: Blocks until we're done speaking def playSpeech(self,text): log.info("Playing speech: '%s'" % (text)) play = subprocess.Popen('/usr/bin/espeak "%s" >& /dev/null' % (text), shell=True) play.wait() def stopPlayer(self): if self.player: self.player.quit() self.player = False log.info("Player process terminated")
if player.speed == 1: player.pt_step(1) else: player.speed = 1 def Recua(): if player.time_pos > 2: player.time_pos = 0 else: player.pt_step(-1) # criação de componentes player = Player() player.loadlist("playlist.txt") b1 = Button(11) b1.when_pressed = Recua b2 = Button(12) b2.when_pressed = Play b3 = Button(13) b3.when_held = Avança b3.when_released = Passa led1 = LED(21) led3 = LED(23) led3.off() led1.on() lcd = Adafruit_CharLCD(2, 3, 4, 5, 6, 7, 16, 2) pos = player.time_pos n = 0
class MediaPlayer: def __init__(self): self.settings = Settings.Settings() self.player = False self.effect = False def playerActive(self): return self.player != False def soundAlarm(self, alarmThread): log.info("Playing alarm") self.playStation() log.debug("Alarm process opened") # Wait a few seconds and see if the mplayer instance is still running time.sleep(self.settings.getInt('radio_delay')) if alarmThread.isSnoozing() or alarmThread.getNextAlarm() is None: # We've snoozed or cancelled the alarm, so no need to check for player log.debug( "Media player senses alarm already cancelled/snoozed, so not checking for mplayer instance" ) return # Fetch the number of mplayer processes running processes = subprocess.Popen( 'ps aux | grep mplayer | egrep -v "grep" | wc -l', stdout=subprocess.PIPE, shell=True) num = int(processes.stdout.read()) if num < 2 and self.player is not False: log.error("Could not find mplayer instance, playing panic alarm") self.stopPlayer() time.sleep(2) self.playMedia(PANIC_ALARM, 0) def playStation(self, station=-1): if station == -1: station = self.settings.getInt('station') station = Settings.STATIONS[station] log.info("Playing station %s", station['name']) self.player = Player() self.player.loadlist(station['url']) self.player.loop = 0 def playMedia(self, file, loop=-1): log.info("Playing file %s", file) self.player = Player() self.player.loadfile(file) self.player.loop = loop # Play some speech. None-blocking equivalent of playSpeech, which also pays attention to sfx_enabled setting def playVoice(self, text): if self.settings.get('sfx_enabled') == 0: # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return path = self.settings.get("tts_path") log.info("Playing voice: '%s' through `%s`" % (text, path)) play = subprocess.Popen('echo "%s" | %s' % (text, path), shell=True) # Play some speech. Warning: Blocks until we're done speaking def playSpeech(self, text): path = self.settings.get("tts_path") log.info("Playing speech: '%s' through `%s`" % (text, path)) play = subprocess.Popen('echo "%s" | %s' % (text, path), shell=True) play.wait() def stopPlayer(self): if self.player: self.player.quit() self.player = False log.info("Player process terminated")
file = open("playlist.txt", "r") newPlaylist = file.read().split("\n") random.shuffle(newPlaylist) newFile = open("novaPlaylist.txt", "w") for musica in newPlaylist: if(len(musica) > 0): newFile.write(musica + "\n") file.close(); newFile.close(); # criação de componentes player = Player(); player.volume = 30; gerarPlaylist(); player.loadlist("novaPlaylist.txt"); player.volume = 30; botao1 = Button(11); botao2 = Button(12); botao3 = Button(13); led1 = LED(21); led3 = LED(23); lcd = Adafruit_CharLCD(2, 3, 4, 5, 6, 7, 16, 2); player.pause() led1.blink() botao2.when_pressed = tocarPausarMusica; botao3.when_held = acelerarMusica; botao3.when_released = avancarMusica; botao1.when_pressed = voltarFaixa;
def programa(): # importação de bibliotecas import random import numpy as np from time import sleep from mplayer import Player from gpiozero import LED from gpiozero import Button from Adafruit_CharLCD import Adafruit_CharLCD # definição de funções #player.loadfile("musica.mp3") #player.loadlist("lista.txt") def TocarEPausar(): player.pause() if (player.paused): led.blink() else: led.on() def ProximaFaixa(): player.pt_step(1) #player.speed = 2 return def FaixaAnterior(): if (player.time_pos > 2.00): player.time_pos = 0.00 return player.pt_step(-1) return def Acelera(): player.speed = player.speed * 2 def VoltaAoNormal(): velocidade = player.speed if velocidade != None and velocidade > 1: player.speed = 1 return ProximaFaixa() def embaralhaLista(): f = open("playlist.txt", "r") lista = f.readlines() random.shuffle(lista) f.close() f = open("playlist_nova.txt", "w") f.writelines(lista) f.close() player.loadlist("playlist_nova.txt") #lista = random.shuffle("playlist.txt") #player.loadlist(lista) ### #arr = np.array(lista) #test =np.loadtxt(lista) #test =np.loadtxt("playlist.txt") #test= np.random.shuffle(test) #np.savetxt("listanova.txt",test) #print(test) # criação de componentes player = Player() player.loadlist("playlist.txt") led = LED(21) lcd = Adafruit_CharLCD(2, 3, 4, 5, 6, 7, 16, 2) button1 = Button(11) button2 = Button(12) button3 = Button(13) button4 = Button(14) button1.when_pressed = FaixaAnterior button2.when_pressed = TocarEPausar button3.when_held = Acelera button3.when_released = VoltaAoNormal button4.when_pressed = embaralhaLista led.on() # loop infinito while True: metadados = player.metadata posicao = player.time_pos duracao = player.length if (metadados != None and posicao != None and duracao != None): nome = metadados["Title"] #if string.count(nome)>16: tempo_atual = int(posicao) tamanho = int(duracao) minuto_atual = str(tempo_atual // 60) segundos_atual = str(int(tempo_atual % 60)) tamanho_minutos = str(tamanho // 60) tamanho_segundos = str(int(tamanho % 60)) texto = "%s:%s de %s:%s" % ( minuto_atual.zfill(2), segundos_atual.zfill(2), tamanho_minutos.zfill(2), tamanho_segundos.zfill(2)) lcd.clear() lcd.message(nome) lcd.message('\n') lcd.message(texto) sleep(0.2)
class MediaPlayer(threading.Thread): def __init__(self, mqttbroker, settings): threading.Thread.__init__(self) self.settings = settings self.player = False self.effect = False self.CurrentStation = "" self.CurrentStationNo = -1 self.CurrentURL = "" self.stopping = False self.message = "" self.mqttbroker = mqttbroker self.increasingvolume = -1 self.alarmThread = None self.playerrestarting = False def playerActive(self): # True if playing or mid restart return self.player!=False or self.playerrestarting def playerPaused(self): if self.player: return self.player.paused else: return True # not running actually! def playerActiveStation(self): if self.player: return self.CurrentStation else: return "None" def playerActiveStationNo(self): if self.player: return self.CurrentStationNo else: return -1 def soundAlarm(self, alarmThread, Station = -1, StartVolume = -1): # STation = Station Number # StartVolume = Increasing volume from this level log.info("Playing alarm") self.alarmThread = alarmThread self.increasingvolume = StartVolume if (StartVolume != -1): self.settings.setVolume(StartVolume) self.playStation(Station) log.debug("Alarm process opened") # Wait a few seconds and see if the mplayer instance is still running time.sleep(self.settings.getInt('radio_delay')) if alarmThread.isSnoozing() or alarmThread.getNextAlarm() is None: # We've snoozed or cancelled the alarm, so no need to check for player log.debug("Media player senses alarm already cancelled/snoozed, so not checking for mplayer instance") return # Fetch the number of mplayer processes running processes = subprocess.Popen('ps aux | grep mplayer | egrep -v "grep" | wc -l', stdout=subprocess.PIPE, shell=True ) num = int(processes.stdout.read()) if num < 2 and self.player is not False: log.error("Could not find mplayer instance, playing panic alarm") self.stopPlayer() time.sleep(2) self.playMedia(PANIC_ALARM,0) def playStation(self,station=-1): if station==-1: station = self.settings.getInt('station') try: stationinfo = self.settings.getStationInfo(station) except: log.debug("invalid station no '%s'", str(station)) stationinfo = None if (stationinfo != None): # Only change if its differant URL if (self.CurrentURL != stationinfo['url']): log.info("Playing station %s", stationinfo['name']) log.debug("Playing URL %s", stationinfo['url']) self.player = Player() # did have "-cache 2048" self.player.loadlist(stationinfo['url']) self.player.loop = 0 self.CurrentStation = stationinfo['name'] self.CurrentStationNo = station self.CurrentURL = stationinfo['url'] else: log.info("Already Playing %s", stationinfo['name']) if (self.mqttbroker != None): self.mqttbroker.publish("radio/station",self.CurrentStation) self.mqttbroker.publish("radio/stationno",str(self.CurrentStationNo)) self.mqttbroker.publish("radio/state","ON") self.mqttbroker.publish("radio/mute","OFF") def playStationURL(self,stationName, StationURL, StationNo = -1): log.info("Playing station %s", stationName) log.debug("Playing URL %s", StationURL) self.player = Player("-cache 320") # did have "-cache 2048" self.player.loadlist(StationURL) self.player.loop = 0 self.CurrentStation = stationName self.CurrentStationNo = StationNo self.CurrentURL = StationURL if (self.mqttbroker != None): self.mqttbroker.publish("radio/station",self.CurrentStation) self.mqttbroker.publish("radio/stationno",str(StationNo)) self.mqttbroker.publish("radio/state","ON") self.mqttbroker.publish("radio/mute","OFF") def playMedia(self,file,loop=-1): log.info("Playing file %s", file) self.player = Player() self.player.loadfile(file) self.player.loop = loop self.CurrentStation = file self.CurrentStationNo = -1 self.CurrentURL = file if (self.mqttbroker != None): self.mqttbroker.publish("radio/station",self.CurrentStation) self.mqttbroker.publish("radio/stationno",str(self.CurrentStationNo)) self.mqttbroker.publish("radio/state","ON") self.mqttbroker.publish("radio/mute","OFF") # Play some speech. None-blocking equivalent of playSpeech, which also pays attention to sfx_enabled setting def playVoice(self,text): if (self.settings.get('sfx_enabled')==0) or (self.settings.getIntOrSet('quiet_reboot') == 1): # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return path = self.settings.get("tts_path"); log.info("Playing voice: '%s' through `%s`" % (text,path)) if path == "pico2wave": play = subprocess.Popen('pico2wave -l en-GB -w /tmp/texttosay.wav "%s" && aplay -q /tmp/texttosay.wav' % (text), shell=True) else: play = subprocess.Popen('echo "%s" | %s 2>/dev/null' % (text,path), shell=True) # Play some speech. Warning: Blocks until we're done speaking def playSpeech(self,text): if (self.settings.get('sfx_enabled')==0) or (self.settings.getIntOrSet('quiet_reboot') == 1): # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return path = self.settings.get("tts_path"); log.info("Playing speech: '%s' through `%s`" % (text,path)) if path == "pico2wave": play = subprocess.Popen('pico2wave -l en-GB -w /tmp/texttosay.wav "%s" && aplay -q /tmp/texttosay.wav' % (text), shell=True) else: play = subprocess.Popen('echo "%s" | %s 2>/dev/null' % (text,path), shell=True) play.wait() def stopPlayer(self): if self.player: self.player.quit() self.player = False self.CurrentURL = "" self.CurrentStationNo = -1 self.CurrentStation = "N/A" log.info("Player process terminated") if (self.mqttbroker != None): self.mqttbroker.publish("radio/station",self.CurrentStation) self.mqttbroker.publish("radio/stationno",str(self.CurrentStationNo)) self.mqttbroker.publish("radio/state","OFF") self.mqttbroker.publish("radio/mute","OFF") def pausePlayer(self): if self.player: self.player.pause() log.info("Player process paused/unpaused") if (self.mqttbroker != None): self.mqttbroker.publish("radio/state","ON") self.mqttbroker.publish("radio/mute","ON") return self.player.paused else: return True # not running actually! def restartPlayer(self): self.playerrestarting = True CurrentURL = self.CurrentURL CurrentStation = self.CurrentStation CurrentStationNo = self.CurrentStationNo log.info("Player Restarting") self.stopPlayer() time.sleep(2) self.playerrestarting = False self.playStationURL(CurrentStation, CurrentURL, CurrentStationNo) def publish(self): self.mqttbroker.publish("radio/volumepercent", self.settings.getInt("volumepercent")) self.mqttbroker.publish("radio/station",self.CurrentStation) self.mqttbroker.publish("radio/stationno",str(self.CurrentStationNo)) if self.player: self.mqttbroker.publish("radio/state","ON") else: self.mqttbroker.publish("radio/state","OFF") def on_message(self, topic ,payload): method = topic[0:topic.find("/")] # before first "/" item = topic[topic.rfind("/")+1:] # after last "/" log.debug("radio method='%s', item='%s'", method, item) done = False try: if (method == "radio"): if item == "state": if (payload.upper() == "ON"): self.playStation(-1) elif (payload.upper() == "OFF"): self.stopPlayer() else: log.info("Invalid payload state '%s' [ON/OFF]", payload) done = True elif item == "stationno": try: stationno = int(payload) self.playStation(stationno) except ValueError: log.warn("Could not decode %s as station no", payload) done = True elif (item == "volumepercent"): try: self.settings.setVolume(int(payload)) except ValueError: log.warn("Could not decode %s as volume percent", payload) done = True except Exception as e: log.debug("on_message Error: %s" , e) return done def run(self): self.SleepTime = float(0.1) lastplayerpos = 1 # media player position NoneCount = 0 checkmessage = 50 lastmediatitle = "" if (self.mqttbroker != None): self.mqttbroker.set_radio(self) self.publish() log.info("Player thread started") while(not self.stopping): time.sleep(self.SleepTime) try: checkmessage -= 1 if (checkmessage <= 0): checkmessage = 25 if self.playerActive(): # self.menu.backgroundRadioActive(): checkmessage = 10 try: currentplayerpos = self.player.stream_pos if (currentplayerpos > lastplayerpos) and (currentplayerpos != None): self.message = ", Radio Playing" NoneCount = 0 elif (currentplayerpos == None) or (lastplayerpos == -1): log.info("last %s, current pos %s",lastplayerpos, currentplayerpos) #, self.media.player.stream_length) self.message = ", Radio Buffering" if (lastplayerpos == 0) and (currentplayerpos == None): NoneCount += 1 else: self.message = ", Radio Paused" log.info("last %s, current pos %s ",lastplayerpos, currentplayerpos) #, self.media.player.stream_length) if self.playerPaused() == False: NoneCount += 1 lastplayerpos = currentplayerpos try: if lastmediatitle != (self.player.media_title): log.info('media_title "%s" was "%s"', self.player.media_title, lastmediatitle) lastmediatitle = str(self.player.media_title) except: #log.info("no media title") lastmediatitle = "" try: metadata = self.player.metadata for item in metadata: log.info("metadata %s", item) except: #log.debug("no metadata, %s", metadata) metadata = "" try: log.info("metadata %s", self.player.metadata[0]) except: metadata = "" except Exception as e: # stream not valid I guess log.error("Error: %s" , e) self.message = ", Radio Erroring" NoneCount += 1 #~ lastplayerpos = currentplayerpos if (NoneCount > 20): # or (currentplayerpos == None): log.info("Player may be stuck, restarting") NoneCount = 0 self.restartPlayer() # DO we need to increase the volume? if (self.increasingvolume != -1): # if we have something to play increase volume if currentplayerpos != None: self.increasingvolume += 2 if self.increasingvolume >= self.alarmThread.alarmVolume: #settings.getInt('volume'): #self.settings.setVolume(self.settings.getInt('volume')) self.settings.setVolume(self.alarmThread.alarmVolume) self.increasingvolume = -1 # At required volume log.info("Reached alarm volume level") else: self.settings.setVolume(self.increasingvolume) #try: # metadata = self.player.metadata or {} # log.info("Track %s", metadata.get('track', '')) # log.info("Comment %s", metadata.get('comment', '')) # log.info("artist %s", metadata.get('artist', '')) # log.info("album %s", metadata.get('album', '')) #except Exception as e: # stream not valid I guess # log.error("metadata error: %s" , e) else: self.message = "" except: log.exception("Error in Media loop") self.stopping = True self.message = ", Errored"
player.pt_step(-1) def shuffle2(): with open("playlist.txt", mode="r", encoding="utf-8") as myFile: lines = myFile.readlines() shuffle(lines) print(lines) with open("newplaylist.txt", mode="w", encoding="utf-8") as newFile: for item in lines: newFile.write("%s\n" %item) # criação de componentes shuffle2() player = Player() player.loadlist("newplaylist.txt") b1 = Button(11) b1.when_pressed = Recua b2 = Button(12) b2.when_pressed = Play b3 = Button(13) b3.when_held = Avança b3.when_released = Passa led1 = LED(21) led3 = LED(23) led3.off() led1.on() lcd = Adafruit_CharLCD(2, 3, 4, 5, 6, 7, 16, 2) pos = player.time_pos n=0
class MediaPlayer: def __init__(self, settings): self.settings = settings self.player = False self.effect = False self.spotify = None self.alarm_media = settings.get("alarm_media") if self.alarm_media == "Spotify": log.debug("Loading Spotify") self.spotify = SpotifyThread.SpotifyThread(settings) self.spotify.setDaemon(True) self.spotify.start() # #self.spotify.setDaemon(True) # # log.debug("Spotify event loop") # # self.spotify.event_loop = self.spotify.EventLoop(self.session) # # self.spotify.event_loop.start() # #self.spotify.login(settings.get("spotify_user"), settings.get("spotify_pass")) def playerActive(self): # log.debug("playerActive: {0}".format(self.player != False)) if self.alarm_media == "Spotify": if self.spotify.spotify.session.player.state == "playing": return True else: return False else: if self.player != False: return True else: return False # return self.player != False def soundAlarm(self, snoozing=False): log.info("soundAlarm: Playing alarm") if self.alarm_media == "Spotify": self.playSpotify(snoozing) else: self.playStation() log.debug("Verifying Radio is playing") # Wait a few seconds and see if the mplayer instance is still running time.sleep(self.settings.getInt("radio_delay")) # Fetch the number of mplayer processes running processes = subprocess.Popen( 'ps aux | grep mplayer | egrep -v "grep" | wc -l', stdout=subprocess.PIPE, shell=True ) num = int(processes.stdout.read()) if num < 2 and self.player is not False: log.error("Radio fail: Could not find mplayer instance, playing panic alarm") self.stopPlayer() time.sleep(2) self.playMedia(PANIC_ALARM, 0) else: log.debug("Radio success") def playSpotify(self, snoozing=False): log.debug("playSpotify: ") # self.spotify = SpotifyThread() if snoozing: log.debug("resuming") self.spotify.resume() else: log.debug("play") # play_thread = self.spotify.play() # play_thread.join() self.spotify.play() log.debug("leaving playSpotify: ") def playStation(self): log.debug("playStation: ") station = self.settings.get("station") log.info("Playing station %s", station) self.player = Player() self.player.loadlist(station) self.player.loop = 0 def playMedia(self, file, loop=-1): log.info("playMedia: Playing file %s", file) self.player = Player() self.player.loadfile(file) self.player.loop = loop # Play some speech. None-blocking equivalent of playSpeech, which also pays attention to sfx_enabled setting def playVoice(self, text): log.debug("playVoice (non-blocking): {0}".format(text)) if self.settings.get("sfx_enabled") == 0: # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return log.info("Playing voice: '%s'" % (text)) play = subprocess.Popen('../speech/googletts "%s"' % (text), shell=True) # Play some speech. Warning: Blocks until we're done speaking def playSpeech(self, text): log.debug("playSpeech (blocking): {0}".format(text)) if self.settings.get("sfx_enabled") == 0: log.info("Playing speech: '%s'" % (text)) play = subprocess.Popen('../speech/googletts "%s"' % (text), shell=True) play.wait() def stopPlayer(self): log.debug("stopPlayer: ") if self.player: self.player.quit() self.player = False log.info("Player process terminated")
class MediaPlayer: def __init__(self, settings): self.settings = settings self.player = False self.effect = False self.spotify = None self.alarm_media = settings.get("alarm_media") if self.alarm_media == 'Spotify': log.debug("Loading Spotify") self.spotify = SpotifyThread.SpotifyThread(settings) self.spotify.setDaemon(True) self.spotify.start() # #self.spotify.setDaemon(True) # # log.debug("Spotify event loop") # # self.spotify.event_loop = self.spotify.EventLoop(self.session) # # self.spotify.event_loop.start() # #self.spotify.login(settings.get("spotify_user"), settings.get("spotify_pass")) def playerActive(self): # log.debug("playerActive: {0}".format(self.player != False)) if self.alarm_media == 'Spotify': if self.spotify.spotify.session.player.state == "playing": return True else: return False else: if self.player != False: return True else: return False # return self.player != False def soundAlarm(self, snoozing=False): log.info("soundAlarm: Playing alarm") if self.alarm_media == 'Spotify': self.playSpotify(snoozing) else: self.playStation() log.debug("Verifying Radio is playing") # Wait a few seconds and see if the mplayer instance is still running time.sleep(self.settings.getInt('radio_delay')) # Fetch the number of mplayer processes running processes = subprocess.Popen( 'ps aux | grep mplayer | egrep -v "grep" | wc -l', stdout=subprocess.PIPE, shell=True) num = int(processes.stdout.read()) if num < 2 and self.player is not False: log.error( "Radio fail: Could not find mplayer instance, playing panic alarm" ) self.stopPlayer() time.sleep(2) self.playMedia(PANIC_ALARM, 0) else: log.debug("Radio success") def playSpotify(self, snoozing=False): log.debug("playSpotify: ") #self.spotify = SpotifyThread() if snoozing: log.debug("resuming") self.spotify.resume() else: log.debug("play") #play_thread = self.spotify.play() #play_thread.join() self.spotify.play() log.debug("leaving playSpotify: ") def playStation(self): log.debug("playStation: ") station = self.settings.get('station') log.info("Playing station %s", station) self.player = Player() self.player.loadlist(station) self.player.loop = 0 def playMedia(self, file, loop=-1): log.info("playMedia: Playing file %s", file) self.player = Player() self.player.loadfile(file) self.player.loop = loop # Play some speech. None-blocking equivalent of playSpeech, which also pays attention to sfx_enabled setting def playVoice(self, text): log.debug("playVoice (non-blocking): {0}".format(text)) if self.settings.get('sfx_enabled') == 0: # We've got sound effects disabled, so skip log.info("Sound effects disabled, not playing voice") return log.info("Playing voice: '%s'" % (text)) play = subprocess.Popen('../speech/googletts "%s"' % (text), shell=True) # Play some speech. Warning: Blocks until we're done speaking def playSpeech(self, text): log.debug("playSpeech (blocking): {0}".format(text)) if self.settings.get('sfx_enabled') == 0: log.info("Playing speech: '%s'" % (text)) play = subprocess.Popen('../speech/googletts "%s"' % (text), shell=True) play.wait() def stopPlayer(self): log.debug("stopPlayer: ") if self.player: self.player.quit() self.player = False log.info("Player process terminated")
def programa(): # importação de bibliotecas from time import sleep from mplayer import Player from gpiozero import LED from gpiozero import Button from Adafruit_CharLCD import Adafruit_CharLCD # definição de funções #player.loadfile("musica.mp3") #player.loadlist("lista.txt") def TocarEPausar(): player.pause() if (player.paused): led.blink() else: led.on() def ProximaFaixa(): player.pt_step(1) return def FaixaAnterior(): if (player.time_pos > 2.00): player.time_pos = 0.00 return player.pt_step(-1) return # criação de componentes player = Player() player.loadlist("playlist.txt") led = LED(21) lcd = Adafruit_CharLCD(2,3,4,5,6,7,16,2) button1 = Button(11) button2 = Button(12) button3 = Button(13) button1.when_pressed = FaixaAnterior button2.when_pressed = TocarEPausar button3.when_pressed = ProximaFaixa led.on() # loop infinito while True: metadados = player.metadata if metadados != None: nome = player.metadata["Title"] lcd.clear() lcd.message(nome) sleep(0.2)