Friday, February 26, 2010

RCOS Presentation

Our first RCOS presentation is available on our google code page. I've also uploaded it in PDF format.

Saturday, February 20, 2010

Mutagen has a well thought out API

So I was working on how uctui was going to be able to read all the different kinds of metadata that a standard music library contained. As far as metadata reading in python, I knew about Mutagen, notably as it's used by Picard to do it's tagging. So I started learning about Mutagen and found that it was quite capable for doing each of the individual file formats metadata quite nicely. So my next problem was getting a function together that would be able to determine which file format was currently being used and then call the proper function on the file to retrieve the metadata. As it turns out, Mutagen itself has an API for this, and already does this. Lastly, I thought I was going to have to get a mapping for each individual metadata format and then unify it into a common format that I could then edit easily. Mutagen has, in the previous file determining function, provided an option that causes the dictionary it returns to be interchangeable no matter what the file, makes it trivial to write a wrapper for use in uctui. Long story short, Mutagen makes it very easy to retrieve and edit metadata on music formats.

Inception

Introducing uctui. Uctui is a collection tool user interface. Uctui will serve to fill a niche in music collection management. If you've ever used Picard (and if you haven't, I really recommend you do), you'll understand the value in tools to help manage music libraries. Picard helps to automate the process of tagging and organizing digital music albums by matching your albums with releases on a central database (MusicBrainz). It also embeds a tag in all the music files that corresponds to the MusicBrainz release it's a part of.

Uctui will allow users to manage a music collection that has been tagged with these MusicBrainz release numbers. It will also the user to submit their collection to MusicBrainz where they can get updates when artists they own make new releases or network with others of similar music tastes. Think last.fm (or libre.fm ;) ), but with a one-to-one correspondence with the music you have, and in the vain of keep your collection organized and up to date. Uctui will also contain tools to inform you if you are missing tracks from any releases you have, and other information to keep your collection maintained. It will also be able to run as a daemon from the command line (think nightly cron-jobs).

After agreeing on a structure for how the program would work, today it was time to get our hands dirty with some code. This is my first major venture with Python, and it was scary how fast you can throw together a command line argument parser using optParse. I also put some work into interfacing with our settings file. Finally, I've got a skeleton GUI with pyGTK that will hopefully inspire more design work on the GUI front.

Corey has been working on a library to sit on top of mutagen for us to interface with arbitrary music files (flac, mp3, ogg...) in a consistent manner and access the MusicBrainz information from them.

Tuesday, February 16, 2010

It begins!

A big thanks to Mr. Sean O' Sullivan for making this all possible.