bingshui.org

the Life of Zim

11th February
2011
written by dzimney

So recently I’ve switched from using Songbird to Rhythmbox for my music player. Not sure if the switch is permanent to Rhythmbox, but with Songbird development being dropped for Linux I sure won’t be using Songbird any more. Maybe Nightingale when that has a stable release.

Anyway, with my switch to Rhythmbox, I lost all of my music ratings. Having spent a reasonable amount time getting those in, I didn’t want to give them up and start from scratch. So. I built this little Flash App to merge an xml file exported by the Rating File Plugin for Songbird with the rhythmdb.xml file for Rhythmbox (found at ~/.local/share/rhythmbox/rhythmdb.xml on Ubuntu 10.10). The Songbird plugin will export as a .srf file or something like that, but it’s actually just an xml file, so just change the extension or save it as an xml file when prompted by the plugin.

Be sure to back up your rhythmdb.xml before you go messin’ with it. Not sure what happens if you remove it all together.

If you’re wondering what exactly the app does, it goes through your exported Songbird rating xml supplied by the plugin and grabs each song with a rating, matches it by song title, artist and album to your rhythmdb.xml and adds in the rating. When it does this, if there is already a rating in your rhythmdb.xml for the song, it will be overwritten. Note that if an album has two songs with the same name and artist (which happens more often than you’d think), I’ve simply omitted them from the rating transfer. So neither song receives the rating. Once the files have been parsed, the app prompts you to download the update rhythmdb.xml file.

I know that this isn’t the most robust way for this to work. I mad it like this for simplicity. Not looking to make anything amazing, just wanted to get what I needed done and thought I’d share.

So here it is. Just click on the labels or textfields to select your files and click the Run Script button and let it run. Easy money. Oh, and sorry for the crudeness of the App. Just wanted something that got the job done.

Please comment if you have any trouble.

[EDIT]

…hmm. I just testing the app and wasn’t prompted to save the file when it finished. Might need to look into that. If you can figure out how to download the swf, it should run locally. Here’s the swf file in case you’re not savy enough to pull it from the HTML.