+ @property
+ def core_plugins(self):
+ return [plugin[1] for plugin in
+ sorted(self._core_plugins, key=lambda pl: pl[0], reverse=True)]
+
+ @property
+ def plugins(self):
+ return [plugin[1] for plugin in sorted(self._plugins, key=lambda pl: pl[0], reverse=True)]
+
+ def need_tracks(self):
+ """Is the player in need for tracks"""
+ if not self.enabled:
+ self.log.debug('Queueing disabled!')
+ return False
+ queue = self.player.queue
+ queue_trigger = self.config.getint('sima', 'queue_length')
+ self.log.debug('Currently {0} track(s) ahead. (target {1})'.format(
+ len(queue), queue_trigger))
+ if len(queue) < queue_trigger:
+ return True
+ return False
+
+ def queue(self):
+ to_add = list()
+ for plugin in self.plugins:
+ self.log.info('running {}'.format(plugin))
+ pl_candidates = getattr(plugin, 'callback_need_track')()
+ if pl_candidates:
+ to_add.extend(pl_candidates)
+ if to_add:
+ break
+ for track in to_add:
+ self.player.add(track)
+