I wrote a Perl::Tk app called
AlterniRATE to get around their inane playlist algorithm. It doesn't download files-- you need to run the official app every so often for that-- but it plays tracks based on the rating and how long it's been since it was last played.
I wrote it to illustrate a better algo for the developers, and i wasn't much of a java programmer at the time. The head dude was so enamored of his playlist algorithm that not only was i ignored, but i also became sort of a persona non grata on their lists. Whatever.
I haven't run iRATE in ages; their debian package has been broken forever and i got tired of reporting bugs.