+ @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_trigger = self.config.getint('sima', 'queue_length')
+ if self.player.playmode.get('random'):
+ queue = self.player.playlist
+ self.log.debug('Currently %s track(s) in the playlist. (target %s)', len(queue), queue_trigger)
+ else:
+ queue = self.player.queue
+ self.log.debug('Currently %s track(s) ahead. (target %s)', 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.debug('callback_need_track: %s', 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)
+