Just came across this one..
http://www.luminal.org/wiki/index.php/IMMS/IMMSWhat?
IMMS is an adptive playlist framework that tracks your listening patterns and dynamically adapts to your taste.
Currently plug-in for XMMS and Beep Media Player are available.
It's major features include:
* IMMS is easy to install. It is purely a plugin - no XMMS patch required.
A very lightweight embedded SQL database is used, so there's no need to setup a RDBMS.
* IMMS is easy to use. Song rating is done completely transparently to the user. It does not get in your way.
* IMMS does a much better job of shuffling than most players. It keeps track of when a song was last played, and makes sure same songs are not repeated too often. It is even able to recognise different versions of the same song (eg. remixes) and treat them as one song!
* IMMS uses a variety of techniques to figure out which songs should be played together, and which should not. It studies your listening habits, as well as using acoustic properties of the songs themselves, such as BPM and frequency spectrum.
* IMMS is fair. Even unfavoured songs have a (small) chance of being played.
It should a relatively easy to write IMMS plugins for new players, provided they have a sufficiently robust plugins interface. You will need things like get_current_song, get_playlist_length, get_playlist_entry, and ideally (but not necessarily) some mechanism for specifying the next song. XMMS/BMP plugins should give you a good idea of what needs to be done.