Skip to main content

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

Project description

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⊘>.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
python-musicpd-0.4.2.tar.bz2 (20.9 kB) Copy SHA256 hash SHA256 Source None Nov 23, 2014
python-musicpd-0.4.2.tar.gz (23.0 kB) Copy SHA256 hash SHA256 Source None Nov 23, 2014 (27.2 kB) Copy SHA256 hash SHA256 Source None Nov 23, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page