Once upon a time a company created Songbird. A music player designed to supplant all other music players and have Linux compatibility with iPod support. So we set Jess up with it and she started using it to organize and play her music. And it was good.
Turned out that the iPod support was flaky at best, but they were supposedly working on it. Then Songbird announced that they were dropping iPod support. A few months went by and then Songbird announced they were dropping Linux support. So now they’re just another music player in a sea of existing and mature players with nothing much to distinguish them from the rest.
So lacking iPod support and getting no further updates for the Linux version we needed a new solution for Jess’ music needs. However, she’d already gone through all the hassle of getting her music library setup just right in Songbird with all her ratings and playcounts and playlists. Since she has several thousand songs she didn’t want to try to redo all that by hand.
Being the master of computer science that I am I decided to take it upon myself to figure out how to automagically migrate her music out of Songbird and in to Rhythmbox. (When combined with Gtkpod these 2 make an acceptable and working solution for music management and iPod syncing.)
Unfortunately, for unknown reasons neither system used any kind of normal standard for storing their data. Well, that’s not entirely true. Most of the data is just fine. But file location data was a mess. Songbird stored it in some weird convoluted ascii encoding of unicode. Rhythmbox stores it in some randomly/partially url-encoded form of unicode. But lacking any clear documentation on the matter I had to reverse-engineer both formats. It was a pain.
But I did it! And now for your benefit I present my automagic music migrator to get you successfully and as painlessly as possible from Songbird to Rhythmbox.
I’m hosting this project on Github: http://github.com/kdickerson/Export-from-Songbird
Download the file songbird_to_rhythmbox.py file and then run it:
or make it executable and run it:
#chmod +x songbird_to_rhythmbox.py #./songbird_to_rhythmbox.py
It will ask you 2 questions. 1. What user you’d like to migrate (the default is the current user, so most people will just hit enter). and 2. If you would like the script to overwrite your existing rhythmbox library or just output the migration to a new file for you.
I wrote and used the script with Python 2.6.5
What this script WON’T do:
It won’t migrate playlists. Jess already had an export function for playlists in Songbird and exporting the playlists as M3Us and then importing to the migrated Rhythmbox worked with only a very small percentage of errors for files with special characters.
I thought about spending the time to automate migrating playlists, but I don’t feel like it. Rhythmbox stores playlists in another xml file and Songbird stores them in the same database as the other data, so you can use my script as a guide to write your own playlist migrator if you’d like.