]> kaliko git repositories - mpd-sima.git/commitdiff
Controls MPD protocol version (need 0.21 at least for filters)
authorkaliko <kaliko@azylum.org>
Sun, 13 Dec 2020 14:37:02 +0000 (15:37 +0100)
committerkaliko <kaliko@azylum.org>
Mon, 14 Dec 2020 14:12:04 +0000 (15:12 +0100)
sima/plugins/internal/tags.py
sima/utils/utils.py

index cd1a4fe3bbdf91660c8be23a2c15d5e304bd4b29..005476728735464e9beb3a9dbe145390dadc5c93 100644 (file)
@@ -29,7 +29,7 @@ import random
 # local import
 from ...lib.plugin import Plugin
 from ...lib.track import Track
-from ...utils.utils import PluginConfException
+from ...utils.utils import PluginConfException, PluginException
 
 def forge_filter(cfg):
     tags = set(cfg.keys()) & Tags.supported_tags
@@ -58,7 +58,6 @@ class Tags(Plugin):
         super().__init__(daemon)
         self.daemon = daemon
         self._control_conf()
-        #self._control_server()
         self._setup_tagsneeded()
         self.mpd_filter = forge_filter(self.plugin_conf)
         self.log.debug('mpd filter: %s', self.mpd_filter)
@@ -72,13 +71,9 @@ class Tags(Plugin):
             self.log.info('Supported Tags are : %s', ', '.join(sup_tags))
             raise PluginConfException('plugin misconfiguration')
 
-    def _control_server(self):
-        #TODO:
-        # * control tags used are available
-        # * filters are available mpd version >= 0.21
-        raise NotImplemented
-
     def _setup_tagsneeded(self):
+        self.log.debug('%s plugin needs the followinng metadata: %s',
+                self, set(self.plugin_conf.keys()) & Tags.supported_tags)
         tags = set(self.plugin_conf.keys()) & Tags.supported_tags
         self.player.needed_tags |= tags
 
@@ -90,6 +85,14 @@ class Tags(Plugin):
         hist = [Track(file=tr[3], artist=tr[0]) for tr in tracks_from_db]
         return hist
 
+    def start(self):
+        if (0, 21, 0) > tuple(map(int, self.player.mpd_version.split('.'))):
+            self.log.warning('MPD protocol version: %s < 0.21.0',
+                    self.player.mpd_version)
+            self.log.error('Need at least MPD 0.21 to use Tags plugin (filters required)')
+            self.player.disconnect()
+            raise PluginException('MPD >= 0.21 required')
+
     def callback_need_track(self):
         candidates = []
         target = self.plugin_conf.getint('track_to_add')
index 5c2a312f77bce7a8b1d07c8861eb08335951936a..19603ba0da35caa3dbf1b48552d6899855e00a19 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2010, 2011, 2013, 2014, 2015 kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -182,6 +182,9 @@ class WSHTTPError(WSError):
 class MPDSimaException(Exception):
     pass
 
+class PluginException(MPDSimaException):
+    pass
+
 class PluginConfException(MPDSimaException):
     pass