]> kaliko git repositories - python-musicpd.git/blobdiff - musicpd.py
Add albumart command
[python-musicpd.git] / musicpd.py
index f72353e762d066d2f263cb95a6b934424c12d8d1..aae85a5f5348e897760cfe4248668a8b58047c68 100644 (file)
@@ -168,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,
@@ -204,19 +204,21 @@ class MPDClient:
             "rm":                 self._fetch_nothing,
             "save":               self._fetch_nothing,
             # Database Commands
+            "albumart":           self._fetch_composite,
             "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_database,
             "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,
@@ -233,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,
@@ -242,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
@@ -495,6 +502,17 @@ class MPDClient:
     def _fetch_neighbors(self):
         return self._fetch_objects(["neighbor"])
 
+    def _fetch_composite(self):
+        obj = {}
+        for key, value in self._read_pairs():
+            key = key.lower()
+            obj[key] = value
+            if key == 'binary':
+                break
+        by = self._read_line()
+        obj['data'] = by.encode(errors='surrogateescape')
+        return obj
+
     @iterator_wrapper
     def _fetch_command_list(self):
         return self._read_command_list()
@@ -587,7 +605,7 @@ class MPDClient:
             self._sock = self._connect_unix(host)
         else:
             self._sock = self._connect_tcp(host, port)
-        self._rfile = self._sock.makefile("r", encoding='utf-8')
+        self._rfile = self._sock.makefile("r", encoding='utf-8', errors='surrogateescape')
         self._wfile = self._sock.makefile("w", encoding='utf-8')
         try:
             self._hello()