PythonDaap is a (under development) DAAP client implemented in Python,
and based on PyTunes[1] by Davyd Madeley[2]. 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[4].

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[5], 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_.
Well, ok, I wrote the setup.py. But anyway. 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[6].
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 RSA Data Security, for the md5 implementation,
the Python developers for the Python wrapper on top of it, David Hammerton
for reverse-engineering the algorithm, and William Herrera for producing
Digest::MD5::M4p, and thus doing all the work for me.



[1]: http://cvs.ucc.asn.au/cgi-bin/viewcvs.cgi/projects/pytunes/
[2]: http://www.davyd.id.au/
[3]: http://search.cpan.org/~rclamp/Net-DAAP-Client-0.42/examples/itshell
[4]: http://jerakeen.org/svn/tomi/Projects/python-daap
[5]: http://crazney.net/programs/itunes/authentication.html
[6]: http://search-dev.develooper.com/src/BILLH/Digest-MD5-M4p-0.01/M4p.xs
