There's this one wish that the entire mania community has had for a long time now: Key specific rankings. The fact that mixing the different key modes makes no sense has been discussed often enough and gladly it has been announced that it's going to be a thing eventually, but we all know that it's going to be at least a year until that happens and I am impatient, so I want to do it myself. The big problem with this is that I need the top100 scores of each user per key mode, while api/get_user_best can only provide me with the top100 across all key modes. I've this ranking for ripple since their api let's me access as many scores as I want by simply adding a page parameter (instead of 1-100 you can get 101-200 and so on), but I'm not really interested in ripple since mania pp over there is chaos. I want key specific rankings for Bancho so I requested either a raise of api/get_user_best's limit or a page page parameter just like the one in the ripple api, but it has been denied. So I sat down and came up with several ideas for getting around this problem:
The rest is quite simple. I can get a list of players directly from the website by simply opening the current rankings and fiddling all the usernames out of the source, and the formula to calculate total PP is public, well documented and easy to apply, so all I need to do is enter the scores into that formula and then re-sort the list of players by the newly calculated value. I even went so far and prepared a tool where I only have to change 1 number to finish the project, in case the devs change their mind and increase the limit of api/get_user_best. alternatively, in case the page parameter becomes a thing I can probably reuse most of the tool i created for the ripple rankings. Right now these tools are just simple console applications, but I plan to make a gui (or maybe even a website) as soon as I find a way to get all the scores I need.
TL;DR: I am 1 step away from fulfilling a big dream of the mania community but I need some help.
Edit: also I am interested: on a scale from 1 - 10, how hyped would you be if key specific rankings would become a thing?
- Get scores by map instead of user
Instead of getting the scores by the user directly, I could collect them by using api/get_scores on all PP maps (luckily this is possible in mania since the maps people have their top scores on are always the same in mania, eg pretty much everyone who can pass it has triumph®ret as his #1 score), but the problem here is that api/get_scores is capped at 100 just like api/get_user_best so it would require the user to have a top100 score on each map, which mostly isn't the case. - Downloading all replays of each user from all ranked maps and recalculate the scores
Now this would in theory work, but it would be a ludicrous amount of traffic and processing power if I wanted to do it large scale. It's also a really messy approach which I personally dislike. - Use friends rankings
This would require me to temporarily add the target player to my friends list so I can get all his scores from the friends rankings(I'd then call the scores map by map once again which is no problem as explained above). The problem with this approach however is that I have no idea how the friends list works, or if I can even access it over the api. I know how to add or remove a player, but not how to access the friends rankings. I'd appreciate if one of the devs could give me some insight on this.
The rest is quite simple. I can get a list of players directly from the website by simply opening the current rankings and fiddling all the usernames out of the source, and the formula to calculate total PP is public, well documented and easy to apply, so all I need to do is enter the scores into that formula and then re-sort the list of players by the newly calculated value. I even went so far and prepared a tool where I only have to change 1 number to finish the project, in case the devs change their mind and increase the limit of api/get_user_best. alternatively, in case the page parameter becomes a thing I can probably reuse most of the tool i created for the ripple rankings. Right now these tools are just simple console applications, but I plan to make a gui (or maybe even a website) as soon as I find a way to get all the scores I need.
TL;DR: I am 1 step away from fulfilling a big dream of the mania community but I need some help.
Edit: also I am interested: on a scale from 1 - 10, how hyped would you be if key specific rankings would become a thing?