SQLAlchemy is way more powerful. It doesn't take very long to run into the limitations of SQLObject.
I once used a Linux program that analyzes each song in your library to determine the tempo and the tonal character of each song. Given a starting song (or a random starting song) it would try to make a playlist of similar songs. It made some pretty good playlists.
It would be cool if your system supported hourly "news breaks" and commercials, so that it would be just like a regular radio station. Instead of the real news (which is of course obtainable), you could play The Onion Radio News.
DanielHolth 19:58, 30 May 2007 (PDT)
I wrote a some programs that do almost everything you are talking about doing a couple years ago. Maybe oriented a little more towards online radio stations (request processing and "voting" etc) but also covers the features you've mentioned. Unfortunately it uses an entirely different set of tools (perl/mysql/apache). But maybe it would be of some use to you in any case. It is in desperate need of documentation but is quite stable, several sites have been running the code 24/7 for nearly 2 years now. http://tunequeue.sf.net and feel free to contact me if you'd like help with your project, I have probably been through many of the same problems you will encounter. -Lodc
Similar Tools and Suggestions
You may want to explore MPD http://musicpd.org as your back-end source client. Ices is extremely limited with runtime control... play,pause,stop,add/remove song, random on/off are all not possible with Ices at runtime... except maybe add/remove song because you can modify the playlist and send it a SIGHUP
MPD will allow you all of the nice stuff you expect in a music player including crossfade and it streams to icecast as an output.
You may also want to checkout Jinzora http://www.jinzora.org for inspiration. It is more of a streaming server itself but it can also control MPD source clients ... although the integration was cumbersome the last time I looked at it.
Hope this helps... adam