+ def loop(self):
+ """Dispatching callbacks to plugins
+ """
+ # hanging here untill a monitored event is raised in the player
+ if getattr(self, 'changed', False): # first loop detection
+ self.changed = self.player.monitor()
+ else:
+ self.changed = ['playlist', 'player', 'skipped']
+ self.log.debug('changed: {}'.format(', '.join(self.changed)))
+ if 'playlist' in self.changed:
+ self.foreach_plugin('callback_playlist')
+ if 'player' in self.changed:
+ self.foreach_plugin('callback_player')
+ if 'skipped' in self.changed:
+ if self.player.state == 'play':
+ self.log.info('Playing: {}'.format(self.player.current))
+ self.foreach_plugin('callback_next_song')
+ self.current_track = self.player.current