]> kaliko git repositories - python-musicpd.git/blobdiff - musicpd.py
Add "listfiles" and "tagtypes" commands
[python-musicpd.git] / musicpd.py
index 6e54b5684433ac5ce42e51deb2365426e4e99276..3aa4cb071ab8c5b21049b6adaa1547492fb5de98 100644 (file)
@@ -39,6 +39,7 @@ def iterator_wrapper(func):
         if not instance.iterate:
             return list(generator)
         instance._iterating = True
+
         def iterator(gen):
             try:
                 for item in gen:
@@ -52,24 +53,31 @@ def iterator_wrapper(func):
 class MPDError(Exception):
     pass
 
+
 class ConnectionError(MPDError):
     pass
 
+
 class ProtocolError(MPDError):
     pass
 
+
 class CommandError(MPDError):
     pass
 
+
 class CommandListError(MPDError):
     pass
 
+
 class PendingCommandError(MPDError):
     pass
 
+
 class IteratingError(MPDError):
     pass
 
+
 class Range:
 
     def __init__(self, tpl):
@@ -97,14 +105,18 @@ class Range:
             except (TypeError, ValueError):
                 raise CommandError('Not a tuple of int')
 
+
 class _NotConnected:
+
     def __getattr__(self, attr):
         return self._dummy
 
     def _dummy(*args):
         raise ConnectionError("Not connected")
 
+
 class MPDClient:
+
     """MPDClient instance will look for ``MPD_HOST``/``MPD_PORT``/``XDG_RUNTIME_DIR`` environment
     variables and set instance attribute ``host``, ``port`` and ``pwd``
     accordingly.
@@ -156,7 +168,7 @@ class MPDClient:
             "seekid":             self._fetch_nothing,
             "seekcur":            self._fetch_nothing,
             "stop":               self._fetch_nothing,
-            # Playlist Commands
+            # Queue Commands
             "add":                self._fetch_nothing,
             "addid":              self._fetch_item,
             "clear":              self._fetch_nothing,
@@ -192,19 +204,21 @@ class MPDClient:
             "rm":                 self._fetch_nothing,
             "save":               self._fetch_nothing,
             # Database Commands
+            #"albumart":           self._fetch_object,
             "count":              self._fetch_object,
             "find":               self._fetch_songs,
             "findadd":            self._fetch_nothing,
             "list":               self._fetch_list,
             "listall":            self._fetch_database,
             "listallinfo":        self._fetch_database,
+            "listfiles":          self._fetch_songs,
             "lsinfo":             self._fetch_database,
+            "readcomments":       self._fetch_object,
             "search":             self._fetch_songs,
             "searchadd":          self._fetch_nothing,
             "searchaddpl":        self._fetch_nothing,
             "update":             self._fetch_item,
             "rescan":             self._fetch_item,
-            "readcomments":       self._fetch_object,
             # Mounts and neighbors
             "mount":              self._fetch_nothing,
             "unmount":            self._fetch_nothing,
@@ -221,6 +235,11 @@ class MPDClient:
             "kill":               None,
             "password":           self._fetch_nothing,
             "ping":               self._fetch_nothing,
+            "tagtypes":           self._fetch_list,
+            "tagtypes disable":   self._fetch_nothing,
+            "tagtypes enable":    self._fetch_nothing,
+            "tagtypes clear":     self._fetch_nothing,
+            "tagtypes all":       self._fetch_nothing,
             # Partition Commands
             "partition":          self._fetch_nothing,
             "listpartitions":     self._fetch_list,
@@ -230,11 +249,11 @@ class MPDClient:
             "enableoutput":       self._fetch_nothing,
             "toggleoutput":       self._fetch_nothing,
             "outputs":            self._fetch_outputs,
+            "outputset":          self._fetch_nothing,
             # Reflection Commands
             "config":             self._fetch_object,
             "commands":           self._fetch_list,
             "notcommands":        self._fetch_list,
-            "tagtypes":           self._fetch_list,
             "urlhandlers":        self._fetch_list,
             "decoders":           self._fetch_plugins,
             # Client to Client
@@ -322,13 +341,13 @@ class MPDClient:
             raise IteratingError("Cannot execute '%s' while iterating" %
                                  command)
         if self._pending:
-            raise PendingCommandError("Cannot execute '%s' with "
-                                      "pending commands" % command)
+            raise PendingCommandError(
+                "Cannot execute '%s' with pending commands" % command)
         retval = self._commands[command]
         if self._command_list is not None:
             if not callable(retval):
-                raise CommandListError("'%s' not allowed in command list" %
-                                        command)
+                raise CommandListError(
+                    "'%s' not allowed in command list" % command)
             self._write_command(command, args)
             self._command_list.append(retval)
         else:
@@ -507,8 +526,8 @@ class MPDClient:
 
     def _connect_unix(self, path):
         if not hasattr(socket, "AF_UNIX"):
-            raise ConnectionError("Unix domain sockets not supported "
-                                  "on this platform")
+            raise ConnectionError(
+                "Unix domain sockets not supported on this platform")
         sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
         sock.connect(path)
         return sock
@@ -540,7 +559,8 @@ class MPDClient:
     def noidle(self):
         # noidle's special case
         if not self._pending or self._pending[0] != 'idle':
-            raise CommandError('cannot send noidle if send_idle was not called')
+            raise CommandError(
+                'cannot send noidle if send_idle was not called')
         del self._pending[0]
         self._write_command("noidle")
         return self._fetch_list()