A proper foobar2000 submission component

That’s easy enough to do. I’ll get it done sometime over the weekend.

1 Like

Done.

https://github.com/marc2k3/foo_listenbrainz2/releases

3 Likes

Thank you! I’ll check it out. Something else I’ve noticed. When I play MP3s, Listenbrainz does not create a link to the recording, as it does for ogg vorbis files. Is the plugin pulling the ID3v2 UFID value for this?

Reference:
https://picard-docs.musicbrainz.org/en/technical/tag_mapping.html#id38

I had an interesting result with the new menu option. After installing then restarting fb2k, I played one track, and it was submitted as expected. Then I stopped, unchecked the menu, and started playing another track. Reloading the ListenBrainz page showed the song as “Playing now”. It was never submitted as a final play, however. Nothing mentioned in the Console.

foobar2000 has never supported reading UFID tags and I make this very clear in the readme to anyone who can be bothered to actually read it.

https://github.com/marc2k3/foo_listenbrainz2/blob/develop/README.md

As for now playing submissions when the preference is disabled, simply not possible. The logic is there for anyone to see in the source code.

My apologies. When I had read that, I didn’t connect it to recording IDs, so it didn’t sink in. I was already considering a Picard script and changes to my own tagging tools to duplicate the value in another tag. I will pursue that more.

I agree, it doesn’t seem possible with the current code. I don’t recall the exact point I stopped playback. It may have moved to the next song first, and then playing now stuck there. I don’t see anything in the API to clear a previous playing_now call, either. I may try to address that.

Thanks.

Great job with the listenbrainz2 component @marc2k3. I only have one complaint, it doesn’t scrobble split artists. As I’m sure you know, with foobar2000, you can split artists, but your component doesn’t seem to recognize the split values tagging.

1 Like

Sending the first value only has always been intentional as per the readme…

If artist/work MBIDs are multi-value, all values are sent. For any other multi-value tags, only the first value is sent.

If you want multiple values to be sent, I guess I could send them comma separated as a single string as this seems to the most common pattern used for spotify.

2 Likes

Yeah exactly, separate them by comma. For example, if I tag a song in foobar2000, like 2Pac;Outlawz - Hit 'Em Up, foobar2000 translates this to 2Pac, Outlawz - Hit 'Em Up, and that’s how foo_scrobble scrobbles it to Last.fm too, as you can see here:

However, scrobbling this same track with foo_listenbrainz2, on ListenBrainz, it just scrobbles it as 2Pac - Hit 'Em Up. This is inconsistent with not only my Last.fm scrooble history (through the Windows version of foobar2000), but also inconsistent with how Simple Last.fm Scrobbler (SLS) on Android reads and scrobbles the same tracks from the Android version of foobar2000. Point is, it would be so much easier to not having to edit all the tracks I’ve scrobbled ti ListenBrainz (not that it’s possible to edit scrobbles on ListenBrainz right now, but at some point I’m going to have to delete my entire scrobble history here, and import it from Last.fm).

Anyway, would be great if you could fix this minor inconsistency. I guess you could make it optional to scrobble multiple/split artists for those who like me, prefer it that way.

@EliasAlucard, since you have a github account you can test the latest build generated here…

https://github.com/marc2k3/foo_listenbrainz2/actions/runs/299548752

It still defaults to sending the first value so you’ll need to look at the Preferences.

People without github accounts can’t download these automatically generated builds - only official releases which I’m not doing yet.

1 Like

Yeah, now it’s working. Had to uncheck that box for scrobbling multiple artists in the settings page, but seems to be working as it’s supposed to now. Really gotta give you a thumbs up for the quick update! Keep up the good job man.

Also, while we’re at it and I now have your attention, have you considered adding Libre.fm and Last.fm support? I do use foo_scrobble and it works flawlessly, but there doesn’t seem to be any Libre.fm scrobblers available for foobar, and personally I would prefer to just have one scrobble component installed anyway. Either way, this update was excellent!

By the way, if foo_listenbrainz2 doesn’t have it already, auto update through foobar2000 by clicking the “Get Updates” button, would be a nice feature for foo_listenbrainz2. Not all fb2k components have this functionality.

Nope, not interested. I have a written a last.fm scrobbler before but the underlying authorisation code/submission method/response handling is so utterly different that it wouldn’t share a single line of common code with ListenBrainz. It would be pointless mangling the functionality from both in to a single component.

1 Like

New version is now available for everyone:

https://github.com/marc2k3/foo_listenbrainz2/releases

3 Likes

What about Simple Last.fm Scrobbler and Pano? Both are open source, available on Github and both scrobble to Last.fm, Libre.fm and ListenBrainz at the same time. Apparently it can be done. But I assume it’s a bit more difficult to do it with foobar components? Both SLS and Pano are Android only apps, but they do work with the Android version of foobar.

Anyway, I found foo_librescrobbler, and it seems to be working fine, and it scrobbles to Libre.fm with multiple artists tagging. Just saying, it’d be easier to have one component for all three scrobble sites :slight_smile:

By the way, how come foo_listenbrainz2 isn’t released under the GPLv2? I mean, what’s the deal with the MIT license?

Also, what’s the roadmap for foo_listenbrainz2, I mean, what other features are you planning on adding?

What part of “Nope, not interested” didn’t you understand?

It’s for sure possible, but it needs to be implemented separately and won’t share too much code. And each submission service has its own quirks and specialities to take care of. Hence I can fully understand marc not being interested in implementing and maintaining it. I wouldn’t be either.

Regarding MIT licensing I think it is a good choice. MIT puts less restrictions on the code, the code could even be used in closed source. From a purely user perspective it makes no real difference.

I’m not even sure using GPL for a foobar component is really license compliant, as foobar itself is closed source. But IANAL, haven’t checked the exact licensing conditions of the foobar SDK and honestly also not really interested in getting into this in depth :slight_smile:

1 Like

Hey man, no need to be rude now, just asking :wink: Appreciate your work in any case.

2 Likes

Closed sourced development is exactly the problem with the MIT license (and similar permissive licenses, like the 3 and 2 clause BSD license, Apache 2.0 license and so on). The “restrictions” with the GPLv2 license, are there to ensure that the source code remains free and open, so they’re not really “restrictions”. That’s why it’s called copyleft. Anyway I was just wondering why he chose the MIT license, it’s good that the component is open source in any case.

Lots of fb2k components are open source and many are GPLv2 licensed too, shouldn’t really be a problem as they’re separate components from foobar2000.

You were much ruder. Never mind all the drivel about looking at other projects/questioning my competence, you were entirely dismissive of that fact I said I wasn’t interested. I couldn’t have made myself any clearer yet you persisted like a spoiled child demanding that I somehow oblige your request regardless of my own feelings/motivations.

1 Like