skip to navigation
skip to content

python-musicpd 0.4.2

An MPD (Music Player Daemon) client library written in pure Python.

Getting python-musicpd

The latest release of python-musicpd can be found at

Getting the latest source code

If you would instead like to use the latest source code, you can grab a copy of the development version from git by running the command:

git clone git://

Installing from source

To install python-musicpd from source, simply run the command:

python3 install

You can use the –help switch to for a complete list of commands and their options. See the Installing Python Modules document for more details.

Using the client library

The client library can be used as follows:

client = musicpd.MPDClient()       # create client object
client.connect('localhost', 6600)  # connect to localhost:6600
print client.mpd_version           # print the mpd version
print client.cmd('one', 2)         # print result of the command "cmd one 2"
client.close()                     # send the close command
client.disconnect()                # disconnect from the server

A list of supported commands, their arguments (as MPD currently understands them), and the functions used to parse their responses can be found in doc/commands.txt. See the MPD protocol documentation for more details.

Command lists are also supported using command_list_ok_begin() and command_list_end()

client.command_list_ok_begin()       # start a command list
client.update()                      # insert the update command into the list
client.status()                      # insert the status command into the list
results = client.command_list_end()  # results will be a list with the results

Provide a 2-tuple as argument for command supporting ranges (cf. MPD protocol documentation for more details). Possible ranges are: “START:END”, “START:” and “:”

# An intelligent clear
# clears played track in the queue, currentsong included
pos = client.currentsong().get('pos', 0)
# the 2-tuple range object accepts str, no need to convert to int
client.delete((0, pos))
# missing end interpreted as highest value possible, pay attention still need a tuple.
client.delete((pos,))  # purge queue from current to the end

A notable case is the rangeid command allowing an empty range specified as a single colon as argument (i.e. sending just “:”):

# sending "rangeid :" to clear the range, play everything
client.rangeid(())  # send an empty tuple

Empty start in range (i.e. “:END”) are not possible and will raise a CommandError.

Commands may also return iterators instead of lists if iterate is set to True:

client.iterate = True
for song in client.playlistinfo():
    print song['file']

Each command have a send_<CMD> and a fetch_<CMD> variant, which allows to send a MPD command and then fetch the result later. This is useful for the idle command:

>>> client.send_idle()
# do something else or use function like select()
# ex. select([client], [], [])
>>> events = client.fetch_idle()

# more complex use for example, with glib/gobject:
>>> def callback(source, condition):
>>>    changes = client.fetch_idle()
>>>    print changes
>>>    return False  # removes the IO watcher

>>> client.send_idle()
>>> gobject.io_add_watch(client, gobject.IO_IN, callback)
>>> gobject.MainLoop().run()

Contacting authors

You can contact the original author by emailing J. Alexander Treuman <jat⊘>. He can also be found idling in #mpd on as jat.

The current maintainer can be found on xmpp chat room <⊘> or you can contact him by email/xmpp <kaliko⊘>.

File Type Py Version Uploaded on Size
python-musicpd-0.4.2.tar.bz2 (md5, pgp) Source 2014-11-23 20KB
python-musicpd-0.4.2.tar.gz (md5, pgp) Source 2014-11-23 22KB (md5, pgp) Source 2014-11-23 26KB