ppy / osu-api

Public API for accessing osu! related data.
320 stars 16 forks source link

Getting total playcount of a beatmapset that has been recently updated #311

Closed yfxu closed 3 years ago

yfxu commented 3 years ago

Currently, the playcount on any beatmap difficulty is reset to 0 when a newer version of the map is submitted. The website, however, shows a persistent mapset playcount that does not change when the map is updated.

My current method for getting this total mapset playcount is by summing all playcounts that share the same beatmapset_id field. This value is inaccurate for any map that has been updated since its initial submission (assuming there was at least 1 playcount before). Is there a way to get the persistent mapset playcount with api v1?

peppy commented 3 years ago

Sounds like something isn't being reset where it should be. Can you give an example of a beatmap where you're seeing this, including URLs?

yfxu commented 3 years ago

Here's an example with one of my own beatmaps: https://osu.ppy.sh/beatmapsets/1210574#osu/2520179

As of posting this, [Crack] has 28 playcount and [Extra] has 8 playcount. The other difficulties all have 0 playcount. The mapset displays a total of 484 playcount, however. This represents the total number of plays that the map has accumulated over multiple updates of the mapset.

To be honest, I personally would hope that none of these values be reset. This would mostly be in the interest of newer mappers who want a concrete way to see "progress" with their mapping. It would be somewhat discouraging for a developing mapper to see their beatmaps' playcount get reset every time they are updated, especially if their maps have accumulated many plays over time. After all, one of the primary goals of ppy/osu-web#3359 was to incentivize new mappers to continue mapping.

However, I can see how this might be abused if a mapper chooses to update a previously popular beatmap into something completely different that most players would no longer wish to play.

peppy commented 3 years ago

The problem with that is the way in which BSS currently operates: it relies on... unreliable factors when determining which beatmaps can be kept, and which need a wipe. This is partly due to it being very old code, but also due to the fact that some people attempt upload new beatmaps under old IDs, changing the song, map, etc.

I don't foresee this changing before we add a newer version of beatmap submission to lazer.

yfxu commented 3 years ago

I see, that's alright then.

In any case, I've found a workaround for my initial problem. Instead of using api v1, I've just switched over to api v2 as it provides a beatmapset structure that contains the overall mapset playcount.

Closing this issue because I don't foresee any more discussion on this topic.