-# Python MPD client library
+# python-mpd: Python MPD client library
# Copyright (C) 2008-2010 J. Alexander Treuman <jat@spatialrift.net>
#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
+# python-mpd is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# python-mpd is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# GNU Lesser General Public License for more details.
#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU Lesser General Public License
+# along with python-mpd. If not, see <http://www.gnu.org/licenses/>.
import socket
"lsinfo": self._fetch_database,
"search": self._fetch_songs,
"update": self._fetch_item,
+ # Sticker Commands
+ "sticker get": self._fetch_item,
+ "sticker set": self._fetch_nothing,
+ "sticker delete": self._fetch_nothing,
+ "sticker list": self._fetch_list,
+ "sticker find": self._fetch_songs,
# Connection Commands
"close": None,
"kill": None,
else:
command = attr
wrapper = self._execute
+ command = command.replace("_", " ")
if command not in self._commands:
raise AttributeError("'%s' object has no attribute '%s'" %
(self.__class__.__name__, attr))
def _send(self, command, args):
if self._command_list is not None:
raise CommandListError("Cannot use send_%s in a command list" %
- command)
+ command.replace(" ", "_"))
self._write_command(command, args)
self._pending.append(command)
def _fetch(self, command, args=None):
if self._command_list is not None:
raise CommandListError("Cannot use fetch_%s in a command list" %
- command)
+ command.replace(" ", "_"))
if self._iterating:
raise IteratingError("Cannot use fetch_%s while iterating" %
- command)
+ command.replace(" ", "_"))
if not self._pending:
raise PendingCommandError("No pending commands to fetch")
if self._pending[0] != command:
- raise PendingCommandError("%s is not the currently "
+ raise PendingCommandError("'%s' is not the currently "
"pending command" % command)
del self._pending[0]
retval = self._commands[command]
def _execute(self, command, args):
if self._iterating:
- raise IteratingError("Cannot execute %s while iterating" % command)
+ raise IteratingError("Cannot execute '%s' while iterating" %
+ command)
if self._pending:
- raise PendingCommandError("Cannot execute %s with "
+ 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" %
+ raise CommandListError("'%s' not allowed in command list" %
command)
self._write_command(command, args)
self._command_list.append(retval)
raise ConnectionError("getaddrinfo returns an empty list")
def connect(self, host, port):
- if self._sock:
+ if self._sock is not None:
raise ConnectionError("Already connected")
if host.startswith("/"):
self._sock = self._connect_unix(host)
self._reset()
def fileno(self):
- if not self._sock:
+ if self._sock is None:
raise ConnectionError("Not connected")
return self._sock.fileno()