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}}
5 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

I can answer your questions.

There is a separate database called playbackhistory@songbirdnest.com.db

It uses media_item_guid as a reference to the file within the main database. I don’t know how easy it would be to make this data useful but the information is there.

To view last played: Open Nightingale. Hover over the music library column names above your music (Title, Artist, Album, etc). Right click and it should provide you with a popup menu with additional fields you can add. One of those fields is Last Played. Add that, then you can sort your library based on the track you most recently played.

Any time I install Nightingale on a computer, I always customize my columns to suit my preferences as follows: Time, Title, Artist, Album, Year, Rating, Genre, Date Added, Play Count, Last Played. Super useful that way.

By default, I prefer to sort my master playlist either by Date Added, or by Artist. Sometimes sorting by Rating is helpful in conjunction with library searches to prioritize higher rated songs when creating playlists.

For Party Ruffle addon/feature, I list them by #, Time, Title, Artist, Album, Year, Rating, Genre, Play Count

Additionally you can create a smart playlist that maintains a selection of songs most recently played.

I still believe this is the best music player out there which is why I continue to use it.

I run SQLite to view and edit the database, but I prefer not to. Sometimes I just delete an album, do all the tagging revisions I need to do within Tag (made by Stephen F. Booth for OSX). I do this because Nightingale in OSX will not save database changes to FLAC files, so while I can modify the way the track is displayed from Nightingale I prefer to have the data updated within the song file itself.

Let me know if you have any other questions about Nightingale. The only other thing I can add is that you have to use Wayback Machine in order to access addons for the software since the official website no longer has a functioning downloads page for the addons.

1 Like