]> kaliko git repositories - mpd-sima.git/blobdiff - sima/core.py
Fixed bug in MPD client reconnection
[mpd-sima.git] / sima / core.py
index 2ffb04c6e44c20ae7aedc564b212838b34a8361a..ead1ba8e9563d1e2ad61465854b508e192c596e3 100644 (file)
@@ -31,6 +31,7 @@ from .lib.simadb import SimaDB
 from .lib.daemon import Daemon
 from .utils.utils import SigHup
 
+
 class Sima(Daemon):
     """Main class, plugin and player management
     """
@@ -73,7 +74,7 @@ class Sima(Daemon):
 
     def foreach_plugin(self, method, *args, **kwds):
         """Plugin's callbacks dispatcher"""
-        self.log.trace('dispatching %s to plugins', method)
+        self.log.trace('dispatching %s to plugins', method)  # pylint: disable=no-member
         for plugin in self.core_plugins:
             getattr(plugin, method)(*args, **kwds)
         for plugin in self.plugins:
@@ -93,9 +94,13 @@ class Sima(Daemon):
         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 %s track(s) ahead. (target %s)', len(queue), queue_trigger)
+        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
@@ -103,7 +108,7 @@ class Sima(Daemon):
     def queue(self):
         to_add = list()
         for plugin in self.plugins:
-            self.log.info('running %s', plugin)
+            self.log.info('callback_need_track: %s', plugin)
             pl_candidates = getattr(plugin, 'callback_need_track')()
             if pl_candidates:
                 to_add.extend(pl_candidates)
@@ -172,8 +177,8 @@ class Sima(Daemon):
                 #TODO: unhandled Player exceptions
                 self.log.warning('Unhandled player exception: %s', err)
                 del self.player
-                self.player = PlayerClient()
-                time.sleep(10)
+                self.player = self.__get_player()
+                time.sleep(5)
             except PlayerError as err:
                 self.log.warning('Player error: %s', err)
                 self.reconnect_player()