X-Git-Url: https://git.kaliko.me/?p=python-musicpd.git;a=blobdiff_plain;f=musicpd.py;h=4ead39a86ca9de7e7e98dcded1b24c222e6ae093;hp=118309f351402ae6c1ed8d7df56aae97d878842c;hb=86a40a9a5a668399c6ca07022b3c38251686ed1d;hpb=28fdb74239a4cc7afc04d500573cb8088b6a083a diff --git a/musicpd.py b/musicpd.py index 118309f..4ead39a 100644 --- a/musicpd.py +++ b/musicpd.py @@ -1,6 +1,6 @@ # python-musicpd: Python MPD client library # Copyright (C) 2008-2010 J. Alexander Treuman -# Copyright (C) 2012-2013 Kaliko Jack +# Copyright (C) 2012-2014 Kaliko Jack # # python-musicpd is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by @@ -24,7 +24,7 @@ HELLO_PREFIX = "OK MPD " ERROR_PREFIX = "ACK " SUCCESS = "OK" NEXT = "list_OK" -VERSION = '0.4.1' +VERSION = '0.4.2' class MPDError(Exception): @@ -55,6 +55,8 @@ class Range: self._check() def __str__(self): + if len(self.tpl) == 0: + return ':' if len(self.tpl) == 1: return '{0}:'.format(self.tpl[0]) return '{0[0]}:{0[1]}'.format(self.tpl) @@ -65,8 +67,8 @@ class Range: def _check(self): if not isinstance(self.tpl, tuple): raise CommandError('Wrong type, provide a tuple') - if len(self.tpl) not in [1, 2]: - raise CommandError('length not in [1, 2]') + if len(self.tpl) not in [0, 1, 2]: + raise CommandError('length not in [0, 1, 2]') for index in self.tpl: try: index = int(index) @@ -130,9 +132,14 @@ class MPDClient: "playlistsearch": self._fetch_songs, "plchanges": self._fetch_songs, "plchangesposid": self._fetch_changes, + "prio": self._fetch_nothing, + "prioid": self._fetch_nothing, + "rangeid": self._fetch_nothing, "shuffle": self._fetch_nothing, "swap": self._fetch_nothing, "swapid": self._fetch_nothing, + "addtagid": self._fetch_nothing, + "cleartagid": self._fetch_nothing, # Stored Playlist Commands "listplaylist": self._fetch_list, "listplaylistinfo": self._fetch_songs, @@ -159,6 +166,11 @@ class MPDClient: "update": self._fetch_item, "rescan": self._fetch_item, "readcomments": self._fetch_object, + # Mounts and neighbors + "mount": self._fetch_nothing, + "unmount": self._fetch_nothing, + "listmounts": self._fetch_mounts, + "listneighbors": self._fetch_neighbors, # Sticker Commands "sticker get": self._fetch_item, "sticker set": self._fetch_nothing, @@ -190,6 +202,8 @@ class MPDClient: } def __getattr__(self, attr): + if attr == 'send_noidle': # have send_noidle to cancel idle as well as noidle + return self.noidle() if attr.startswith("send_"): command = attr.replace("send_", "", 1) wrapper = self._send @@ -403,6 +417,12 @@ class MPDClient: def _fetch_messages(self): return self._fetch_objects(["channel"]) + def _fetch_mounts(self): + return self._fetch_objects(["mount"]) + + def _fetch_neighbors(self): + return self._fetch_objects(["neighbor"]) + def _fetch_command_list(self): return self._wrap_iterator(self._read_command_list())