DAAP client library implemented in Python
Python C
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


PythonDaap is a (under development) DAAP client implemented in Python, and based on PyTunes by Davyd Madeley. I've so far added the authentication stuff needed by recent copies of iTunes and a primitive object model that can download individual tracks, and has playlist support. I have a command-line shell similar to itshell (I also called mine itshell, just to be confusing), and it's all quite usable.

Development copies of the code can be found in my subversion repository, or the project page for PythonDaap.

This distribution also includes an implementation of Apple's custom MD5 hasher as a python module. This hasher is used in the DAAP authentication protocol, documented by David Hammerton.

To build the module:

python setup.py build

And to install (probably as root):

python setup.py install

The client library was based heavily on work by David Madeley, and also on the work done by Richard Clamp in writing the perl versions of the client, which were a great help when things didn't work, and which were also annoyingly faster than my library until I put some effort into optimizing. Thanks for the push. However, the majority of the code in daap.py is now my own.

The MD5 hasher contains no code written by me at all, and therefore represents one of my most efficient output/lines of code ratios ever. md5c.c, md5.h and md5module.c were taken from the Python source code, specifically Python-2.3.5.tar.bz2. I have made a very small modification to md5c.c, but that modification was taken in it's entirety from Digest::MD5::M4p. Other than writing a setup.py and changing 'md5' to 'md5daap' in a few places (docs, mostly), that's it.

Thus I owe a debt to all the people who actually did write the code I'm using, specifically Colin Plumb, who wrote the public domain MD5 implementation I'm now using, the Python developers for the Python wrapper on top of it, David Hammerton for reverse-engineering the modifications needed for iTunes, and William Herrera for producing Digest::MD5::M4p, and thus doing all the conversion work for me.