I’ve been looking for a new personal project to work on for a while and I’ve been having trouble finding something. I wanted something that I’d use myself, otherwise my interest would quickly drop. Something that ideally I would use every day. I also wanted to write something that other people would find a use for as well. And it had to be written in Python and be something completely different to anything I’ve played with before. So I’ve decided to write a desktop client for Subsonic.

This project is dead.

Well, it didn’t make it much further than what is mentioned in this post.
Take a look at this for a similar project whose aims are similar to what I was talking about in this post.

A few weeks ago I had a play around with Spotify. It’s a really good service, but a little too pricey and while the desktop application is quite good I found the Android application to be a bit laggy. They have a wide variety of music but with some notable omissions (no Pink Floyd or AC/DC). I cancelled my subscription before my first month had ended.

Last.fm is an old favourite of mine for streaming music. They have just removed the feature I used the most though: the streaming of Loved Tracks. While Last.fm is still good for streaming random music that is a mix of stuff that I like and stuff that I’ve not heard before but would probably like, I miss having control of my playlist.

I tried Grroveshark – much, much better price wise than Spotify and with an Android application that seems to work a lot better. They provide a desktop application written in Adobe Air which is fine but I found that a lot of the music was not labelled correctly. It’s annoying to build a playlist and then have a totally different song to what you expected play. I still use Grooveshark through their website occasionally and may even re-new my VIP membership in the future with the price being so low.

Subsonic works differently than all of these. The music is streamed from your own server. This gets around the lack of Pink Floyd quite nicely and for a one time donation that is comparable to a single month’s subscription to Spotify you can keep all features active after your 30 day trial. Music can be streamed either through a web browser, an Adobe Air client or a very well made Android client. So far this has worked out the best for me.

Subsonic is also open source and has an open API. While the Adobe Air client is functional it doesn’t really do much more than play music. Seeing how I’ve not used Python/QT to do anything with audio files yet or talk to web services / parse XML files I thought it would be a fun project to work on a desktop client.

Writing it in PyQt means that it should run on Windows as well as Linux and OS X. My plan is to integrate my client with Last.fm as well to provide dynamic playlist support (add one track and have the player automatically add similar tracks while playing), artist information and the old Loved Tracks feature that Last.fm used to provide.

It’s going to take a while and will be something I just work on in my free time. So far I’m able to pull a list of artists along with album and track information complete with cover art. Here’s a screenshot of how things are looking right now:

PySubsonic Screenshot

Of course, the look is going to change quite a bit and I’m sure I’ll be thinking of new things to add as I’m working on it. There are quite a few features that could be added – local music support rather than just being limited to Subsonic, Last.fm streaming rather than just pulling track details and cross referencing them with the Subsonic library and many other things. It’s good to have finally found something I’ll enjoy building and will use myself quite often.

Also, I need a name for it. I can’t think of anything right now. Suggestions?


comments powered by Disqus