Scrobbling

Continuing the discussion from Discoverability on the Fediverse and Thought Dump:

Continuing this as a new topic so we can geek out in detail on the plumbing, without flooding the discoverability topic.

Can you expand on this @jbwharris? Is the problem specific to getting the necessary data out of BC and other corporate platforms? Would it be easier to achieve for artists who had the same songs hosted on a service running ActivityPub software like Funkwhale or @bandwagon?

Also on the topic of scrobbling, here’s a bot account on Mastodon that posts about what song the operator is listening to. Based on signals it receives from their home assistant software.

@strypey I’d say the core problem from where I sit is just additional overhead. There are services like song.link and SongWhip that amalgamate streaming links together, but none that I’ve found that really works in the way I need. Most need a streaming link to provide a link, which seems to create more query steps, ie querying Spotify to get a link to pass to song.link. Most of the heavy lifting is querying the metadata, then passing it to lastfm or MusicBrainz to see if it can find a match. And sometimes it doesn’t. The easiest way to reconcile it might be just building a search URL for each service and just searching, but that certainly leaves margin for error.

I honestly don’t know anything about Fedi integrations to be able to answer that.

1 Like

Everything you’ve describing sounds like the typical headaches that come with the lack of a standardised approach to exporting and importing data. The developers of FunkWhale, @bandwagon and @mirlo may be able to comment on whether putting songs in the fediverse makes it easier to do scrobbling in a standardised way.

Howdy :slight_smile:

This might be a situation where everyone knows their own piece, but few people know the whole of the issue. I’m not really familiar with scrobbling, but I’m willing to do some homework.

It looks like this means recording and potentially broadcasting your personal listening habits to a group of people or followers, and it could serve for some kind of discovery/recommendation/streaming service. Am I close, so far?

From my end, the ActivityPub connections in Bandwagon aren’t going to help much. They just make the song easily shareable on the Fediverse, but do not track specific plays of that song.

To get a bit more specific, I think this would require: 1) scrobbling support from the music player you’re using, regardless of the sources of that music, and 2) the player to have you signed in, or otherwise have permissions to post information on your behalf (ActivityPub or otherwise).

I did look into Web Scrobbler at one point. It looks like it has a JS API, so we could possibly make an adapter to forward information through it. It seems like a better approach: hooking into an already-existing service instead of trying to build another competing standard.

1 Like

Scobbling at it’s core is really just passing along 3 pieces of information, song, artist and album. And you can get away with just song and artist, though it’s not preferred. Most of what Web Scrobbler does is carve out the data from a particular website that aligns with those pieces of data, then submitting it to lastfm.

Thank you. This helps :slight_smile:

I think there’s some other implied information, like the time (that can be inferred from the system clock) and the user doing the scribbling — which might be the hard part for me to produce.

But, if I could get this last bit of data, where would one pass this scrobbling information?

Is there a “scrobbling central” website somewhere that I could post it to?

I think that’s what last.fm is meant to be for? But I suspect it’s a bit of a DataFarm, since GNU FM was originally created replace it (thus the name of the flagship service, libre.fm). I’m trying to think through how this would look with libre.fm replaced by a federated music network. Including services running BandWagon or FunkWhale, and platforms like ccMixter, Jamendo, Mirlo, etc.

I’m envisioning a system where native media players, and web services with an internal media player, can publish scrobbling data as a standardised “LibreScrobble” feed (I just made up LibreScrobble, which is terrible name, but hopefully gets the idea across). Taking BandWagon as an example, just as you have an AP feed for each account on your service, you could publish a LibreScrobble feed for each account (after they opt-in, of course). You might even be able to use the Listen Activity in ActivityStreams 2.0 to publish this over AP federation.

Some examples of what this scrobbling feed could be used for, off the top of my head;

  • a native app that collects the operator’s listening activist across a range of services and platforms, and aggregates it for their reference
  • an app for artists that allows them to aggregate LibreScrobble data about their music from a range of native apps, services and platforms, for example to see which songs are getting the most listens, which albums are getting played in full, where people are finding their music, etc
  • a Flattr-style music micro-patronage services, which collects listening data about their subscribers from a range of services, and apportion funds accordingly (ie replacing some aspects of Spitify)
  • a bot that follows an account’s LibreScrobble feed, and posts on the account operator’s main fediverse account “Alice is listening to Song A, by Artist B, from Album C”.

Possible issues, over-polling of LibreScrobble feeds? But if it the protocol uses push rather than pull, eg if it’s a Listen activity sent over AP, that would mitigate this. Maybe I’m overthinking it.

CC @jbwharris

Lastfm is essentially a data aggregator owned by Paramount (originally CBS). I wrote on Reddit about this a few years ago.

I will admit to being out of my depth when it comes to the plumbing of the Fediverse, but I’m inclined to think this would be just adding another standard to a space that already has a bunch. There are 2 AT Proto projects RockSky and Teal.fm, ListenBrainz, Maloja and aformentioned and seemingly being sunsetted, Libre.fm.

Lastfm is probably 100 fold bigger than ListenBrainz, and all the others are microprojects in comparison. The scope of the project you’re outlining is probably roughly the mission statement for any of the services you mentioned. I’ve found that at its core the Achillie’s Heel of all of these is adding scrobbling support to 3rd party clients. It’s hard enough to get someone to add Lastfm support, let alone get smaller services on board.

Having built a scrobbling tool myself, I do understand it’s more nuanced than just submitting the song, artist and album data. Does the song have crummy structure, like “Song Name (feat. Artist 2)”, “Song Name (featuring Artist 2)” or “Song Name” & “Artist 1 and Artist 2”. All those cloud the data. All 3 would exist on Lastfm, but only one of those format would be the “right” one and it’s a needle in the haystack proposition. Lastfm’s API is old and doesn’t really help you when it comes to attributing the play to the right track. And by right, does that mean the record labels format they put on Spotify? The user’s idiosyncratic preference ie. they prefer the play to be tied to the original album and not the Deluxe Remastered version? Every source may have different interpretation of the same data.

I’m not looking to discourage the idea, but I do understand the bigger picture of it all. I know the Fediverse wants to have interoperable technologies that all play nicely together, and having a scrobbler would appeal to people for sure.

There are people using scrobbling → Fedi post bots, I’ve seen a few in the wild!

1 Like

As I understand it, these projects are all platforms. What I’m proposing is a protocol. You’re talking about the scrobbling equivalent of Revolt.chat as a competitor to Discord. I’m talking about the Matrix 2.0 protocol as a competitor to Discord.

So I suspect what I’m proposing bears no resemblance to the approach of any of the projects you list. Although I would approach all of them to contribute to the standardization of the protocol, or at least to support it. Along with the software projects and platforms I listed.

By your powers combined … :wink: