Reload the MPD plugin in case of any errors during the status retrieval

This commit is contained in:
Fabio Manganiello 2018-04-17 16:43:39 +02:00
parent 15a233a927
commit fcdc4d1af8
1 changed files with 12 additions and 8 deletions

View File

@ -30,18 +30,22 @@ class MusicMpdBackend(Backend):
plugin = None
while not self.should_stop():
while not plugin:
plugin = get_plugin('music.mpd')
if not plugin:
success = False
while not success:
try:
plugin = get_plugin('music.mpd')
status = plugin.status().output
track = plugin.currentsong().output
state = status['state'].lower()
playlist = status['playlist']
success = True
except Exception as e:
logging.exception(e)
logging.info('Reloading crashed MPD plugin')
plugin = get_plugin('music.mpd', reload=True)
time.sleep(self.poll_seconds)
status = plugin.status().output
track = plugin.currentsong().output
state = status['state'].lower()
playlist = status['playlist']
if state != last_state:
if state == 'stop':
self.bus.post(MusicStopEvent(status=status, track=track))