Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pure-Peace/pp-server

Repository files navigation

A Fast osu! pp calculator web api written in Rust

It is also the PP server of Peace .

Pure-Rust pp calculator based on peace-performance and rosu-pp.

Features

  • Common:
    • request with you like: beatmap md5, beatmap id, beatmapset id + file name
    • beatmap cache
    • preload beatmaps (WARING: May cause insufficient memory, if the number of maps is large enough)
    • calculate beatmap MD5
    • auto request, download beatmap from osu!api
    • raw pp info: aim, spd, acc, str.
    • acc list: 95, 98, 99, 100 (request with &acc_list=1)
    • Oppai? Or a custom algorithm
    • auto-pp-recalculate (peace)
      • If pp calculation fails (such as restarting pp-server), just save task to redis in the format of "calc:{table(mode)}:{score_id}:{player_id}":"md5=xxx&mods=xx&mode=xx&n300=xx". pp-server will auto recalculate these tasks, and notify peace to update the stats of these players. .
    • pp calculate:
      • osu!Standard
      • Catch the beat
      • Taiko
      • Mainia
  • (Default Enabled) feature with_peace:
    • beatmap database (needs setup with Peace)
    • auto pp recalculate
    • How to enable?
      • Cargo.toml features Set default = ["with_peace"]
      • Will run as a pp server of Peace
    • How to disable?
      • Set features default = ["peace-objects/no_database"]
      • Not use peace database, run pp-server independently.

Examples

with md5

Common

/api/calc?md5=ccb1f31b5eeaf26d40f8c905293efc03
{
 "acc_list": null,
 "message": "done",
 "mode": 0,
 "mods": 0,
 "pp": 522.0230712890625,
 "raw": {
 "acc": 128.93072509765625,
 "aim": 255.26805114746094,
 "spd": 127.87066650390625,
 "str": 0,
 "total": 522.0230712890625
 },
 "stars": 7.084656715393066,
 "status": 1
}

Simple

/api/calc?md5=ccb1f31b5eeaf26d40f8c905293efc03&simple=1
{
 "acc_list": null,
 "message": "done",
 "mode": 0,
 "mods": 0,
 "pp": 522.0230712890625,
 "stars": 7.084656715393066,
 "status": 1
}

Acc list

/api/calc?md5=ccb1f31b5eeaf26d40f8c905293efc03&acc_list=1
{
 "acc_list": {
 "95": 311.07989501953125,
 "98": 389.848388671875,
 "99": 452.67974853515625,
 "100": 522.0230712890625
 },
 "message": "done",
 "mode": 0,
 "mods": 0,
 "pp": 522.0230712890625,
 "raw": {
 "acc": 128.93072509765625,
 "aim": 255.26805114746094,
 "spd": 127.87066650390625,
 "str": 0,
 "total": 522.0230712890625
 },
 "stars": 7.084656715393066,
 "status": 1
}

with bid (Can use without add osu!api keys)

/api/calc?bid=2848898
{
 "acc_list": null,
 "message": "done",
 "mode": 0,
 "mods": 0,
 "pp": 366.8739013671875,
 "raw": {
 "acc": 118.15778350830078,
 "aim": 122.00947570800781,
 "spd": 121.79961395263672,
 "str": 0,
 "total": 366.8739013671875
 },
 "stars": 5.856814384460449,
 "status": 1
}

with sid + file name (need osu!api keys)

/api/calc?sid=1378720&file_name=Tanchiky%20-%20Bridge%20(NyarkoO)%20[Extension].osu

This method is currently cannot use cache.

{
 "acc_list": null,
 "message": "done",
 "mode": 0,
 "mods": 0,
 "pp": 366.8739013671875,
 "raw": {
 "acc": 118.15778350830078,
 "aim": 122.00947570800781,
 "spd": 121.79961395263672,
 "str": 0,
 "total": 366.8739013671875
 },
 "stars": 5.856814384460449,
 "status": 1
}

Best performance (Fastest, but lower accuracy)

Set Cargo.toml

peace-performance = { ... }

to

peace-performance = { ..., feature = "no_sliders_no_leniency" }

Note

This pp-server requires all .osu files use file MD5 as the name.

  • Rename .osu files to file md5:

    • If you want pp server auto recalculate all .osu files MD5 name before started, set recalculate_osu_file_md5 = true in config/pp-server/default.toml
    • Or manual run this python script rename_osu_files.py in project (python3.8+).
    • If its Debug compile, python will more faster than Rust.
  • Effect

    • Calculating
    • p
    • After
    • p

Setup

  1. Set your .osu files dir path in config/pp-server/default.toml
  2. Will let the .osu files name be the md5 of the file
  3. Set your osu!api keys in *.toml (if enabled feature peace, set it on your database)

Debug

cargo run

Release

cargo run --release

Cross compile (Win to Linux)

cargo cross_linux_x86

MIT

About

A Fast osu! pp calculator web api written in Rust. It is also the PP server of Peace.

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /