X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/f35e5800ee5e7219ec5bd2f6c17505ff0cbcbd30..b28bddbb2d2b2f07364153df3b980605d9caa9d9:/python/disorder.py.in diff --git a/python/disorder.py.in b/python/disorder.py.in index 01b92ed..9585438 100644 --- a/python/disorder.py.in +++ b/python/disorder.py.in @@ -231,7 +231,7 @@ def _list2dict(l): while True: k = i.next() v = i.next() - d[k] = v + d[str(k)] = v except StopIteration: pass return d @@ -294,7 +294,8 @@ class client: home = pw.pw_dir privconf = _configfile + "." + pw.pw_name passfile = home + os.sep + ".disorder" + os.sep + "passwd" - self._readfile(_configfile) + if os.path.exists(_configfile): + self._readfile(_configfile) if os.path.exists(privconf): self._readfile(privconf) if os.path.exists(passfile) and _userconf: @@ -585,7 +586,10 @@ class client: The return value is the preference """ ret, details = self._simple("get", track, key) - return details + if ret == 555: + return None + else: + return details def prefs(self, track): """Get all the preferences for a track. @@ -656,6 +660,14 @@ class client: self._simple("search", _quote(words)) return self._body() + def tags(self): + """List all tags + + The return value is a list of all tags which apply to at least one + track.""" + self._simple("tags") + return self._body() + def stats(self): """Get server statistics. @@ -781,7 +793,10 @@ class client: The return value is the preference """ ret, details = self._simple("get-global", key) - return details + if ret == 555: + return None + else: + return details ######################################################################## # I/O infrastructure @@ -837,7 +852,7 @@ class client: # # If an I/O error occurs, disconnect from the server. # - # On success returns response as a (code, details) tuple + # On success or 'normal' errors returns response as a (code, details) tuple # # On error raise operationError if self.state == 'disconnected': @@ -847,7 +862,7 @@ class client: else: cmd = None res, details = self._response() - if res / 100 == 2: + if res / 100 == 2 or res == 555: return res, details raise operationError(res, details, cmd)