Songbird/Nightingale player

This is a shot in the dark but I will try anyway.

Many years ago I used Songbird/Nightingale as my music player. It was open source and based on the same software as Firefox. Here are links for reference.

The UI itself had no way to view your playback history(that I could see), but it did show a play count for each song in your library. I still have the SQLite databases from my install of it, so I opened them up in an SQLite browser and it did in fact track every play with a timestamp and duration of playback. But the structure of the database is too much for me to wrap my head around. I can do simple databases, but without a diagram explaining the structure I’m lost with stuff like this.

Anyway my question. Does anyone have an experience with this software, and maybe happen to have a script to export the playback history into a format that could be imported into ListenBrainz? I have 6 years and almost 19,000 entries I could import predating my last.fm data I already imported.

1 Like

I’m bored at the moment, so if you upload your database file somewhere, I can take a look. :slight_smile:

2 Likes

Took a bit to figure out where I can upload files free. This is a new database, I hope that is OK. I made some playback history. My old one contains file paths with my name so I was not terribly comfortable posting publicly online. I think the only important files are the main and playbackhistory files, but I could be wrong.

Cool, think I figured it out. And yeah, it seems like main@library.songbirdnest.com.db and playbackhistory@songbirdnest.com.db are the relevant files. Somebody got a bit carried away when they designed the database schema!

If you run https://gist.github.com/derat/7b0bb596625da5a61130f8e8690c1ad2 from the same directory as the Songbird database files (and you have Python 3 installed), it should print JSON objects similar to the listen payloads described at JSON Documentation — ListenBrainz 0.1.0 documentation. I don’t use ListenBrainz, so that’s as far as I took things, but hopefully there are existing scripts or programs that can submit the payloads (possibly with a bit of minor tweaking).

Here’s what it prints when I run it against the files that you uploaded:

{"listened_at": 1674513035, "track_metadata": {"track_name": "Ten Thousand Fists", "release_name": "Ten Thousand Fists", "artist_name": "Disturbed", "duration_ms": 213266, "tracknumber": 1}}
{"listened_at": 1674513250, "track_metadata": {"track_name": "P.O.H.U.I.", "release_name": "NGOC", "artist_name": "Carla's Dreams feat. INNA", "duration_ms": 236653, "tracknumber": 18}}
{"listened_at": 1674513430, "track_metadata": {"track_name": "Ten Thousand Fists", "release_name": "Ten Thousand Fists", "artist_name": "Disturbed", "duration_ms": 213266, "tracknumber": 1}}
{"listened_at": 1674513625, "track_metadata": {"track_name": "Land of Confusion", "release_name": "Ten Thousand Fists", "artist_name": "Disturbed", "duration_ms": 290133, "tracknumber": 11}}
{"listened_at": 1674513889, "track_metadata": {"track_name": "P.O.H.U.I.", "release_name": "NGOC", "artist_name": "Carla's Dreams feat. INNA", "duration_ms": 236653, "tracknumber": 18}}
{"listened_at": 1674514104, "track_metadata": {"track_name": "Ten Thousand Fists", "release_name": "Ten Thousand Fists", "artist_name": "Disturbed", "duration_ms": 213266, "tracknumber": 1}}
4 Likes

Thank you very much! I have some cleaning to do I think as my music back then was very poorly tagged.

I don’t suppose there is a ListenBrainz equivalent of External Resources - MusicBrainz Wiki for things like this in case anyone else ever wants to extract their history as well?

1 Like