Osu! API¶
Peppy, being the hero that he is, exposes a web API for making queries about
osu!. Slider provides a Python interface to this web API through a
Client object. The client knows how to format messages
to send to the osu! API and knows how to parse the results returned. It will
also attempt to do argument validation client side to avoid making a bad web
request.
User Information¶
The Client can fetch user information with the
user() method. This method can look up a user by
either username or user id. It will explicitly tell the osu! server which
identifier you are using to avoid ambiguity. The method also accepts the game
mode to fetch information about.
High Scores¶
If we already have a User object, we can request their
high scores with the high_scores() method. This will
return a list of HighScore objects which has metadata
about the play like which map it was and the hit counts. Right now there is no
way to recover the Replay object from the
HighScore.
If we do not yet have a User object, we can request the
high scores directly with user_best(). This takes
the user identifier and game mode but just directly returns the list of
HighScore objects. This method is more efficient if you
only want to get the high scores for a user.
Beatmaps¶
The osu! API allows us to query for beatmaps themselves. Slider exposes this
through the beatmap() method. This method can either
be used to look up a single beatmap by id or md5 hash, or to fetch maps in bulk
by date ranked.
Note
When fetching maps in bulk, we can only get 500 results at a time.
When we get results from the beatmap() method, they
are returned as BeatmapResult objects instead of the
normal slider.beatmap.Beatmap. The
BeatmapResult object holds the extra information about a
map which is only available through the client, for example: the pass and play
counts.
The Beatmap can be fetched from the
BeatmapResult object with the
beatmap() method. This can be passed
save=True to save the downloaded .osu file into the
Library.