ppy / osu-api

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

Inconsistent times between get_user_recent and get_scores #278

Closed nottalulah closed 5 years ago

nottalulah commented 5 years ago

/get_user_recent and /get_scores will sometimes return differing timestamps for the same score.

image This score is from /get_user_recent, and the date field is 2019-09-19 04:09:05.

image This is the same score but from /get_scores, and the date field is 2019-09-19 04:09:06.

I have noticed this happen a few times, 5-6 total, once off by as much as 3 seconds. I figure they should probably be the same.

omkelderman commented 5 years ago

not an authoritive answer by any means so I could be totally wrong, but ive always understood that the difference between them is that one is before the pp-processing happens, the other is after. And thus the time difference is pp-processing.

I have a project myself where I need to match the score between both of the results, and I match them on equality of all the score-related properties combined (score, maxcombo, all the hitobjects, enabled mods, etc)

If a score_id property would be available on all score-related endpoints (and if they match up between them, but im gonna assume that will be the case), that would be a better solution imo

nottalulah commented 5 years ago

I would have preferred score_id being available as well, but since it wasn't I used date plus user_id to determine whether I had already stored a certain score. I band-aid fixed it by allowing a few seconds discrepancy, but it's a lot slower to query and I have no way of knowing if the time difference is enough to cover all cases.

Having a score_id would solve it for sure, if that's feasible

peppy commented 5 years ago

The issue here is that both of these storages are in different tables, with no linking between. Recent scores are stores as a 24 hour cycling storage and not used for anything except heuristics.

While we could provide score_id for actual high scores, it would be a bit of a pain to clear them out when they are replaced, etc.

A huge rework is going on (as low priority) to change the score submission backend and bring it into a modern age for lazer and the future. I believe this will be fixed at that point and no earlier (because for us it is not a huge priority).

nottalulah commented 5 years ago

shame, but I understand. Thanks for the reply