A utilities library for osu!. Provides support for parsing replays from a file or from the api, as well as support for unstable rate, hits, similarity, and frametime calculations.
Circlecore is a utilities library for osu!. Features include:
- Unstable Rate calculation
- Judgments calculation (classifying all hitobjects into misses, hit300s, hit100s, hit50s, or sliderbreaks)
- Similarity calculation between two replays, for replay stealing detection
- Frametime calculation, for timewarp detection
- Jerky, suspicious movement detection (called Snaps)
Circlecore is used by Circleguard, a replay analysis tool.
Circlecore is developed and maintained by:
Circlecore can be installed from pip:
pip install circleguard
This documentation refers to the project as
circlecore to differentiate it from our organization Circleguard and the replay analysis tool Circleguard. However,
circlecore is installed from pypi with the name
circleguard, and is imported as such in code (
We have a full tutorial and documentation at https://circleguard.github.io/circlecore/. If you really want to jump right in, below is a quickstart guide:
from circleguard import * # replace "key" with your api key cg = Circleguard("key") # replay on http://osu.ppy.sh/b/221777 by http://osu.ppy.sh/u/2757689 replay = ReplayMap(221777, 2757689) print(cg.ur(replay)) # unstable rate print(cg.frametime(replay)) # average frametime print(cg.frametimes(replay)) # full frametime list print(cg.hits(replay)) # where the replay hits hitobjects print(cg.snaps(replay)) # any jerky/suspicious movement replay2 = ReplayMap(221777, 4196808) print(cg.similarity(replay, replay2)) # how similar the replays are # ReplayMap isn't the only way to represent replays; we can also # get a beatmap's top 3 plays map_ = cg.Map(221777, span="1-3") # or a User's fifteenth and twentieth best plays user = cg.User(124493, span="15, 20") # or a local replay replay3 = ReplayPath("/path/to/local/osr/replay.osr") # and more. You can find them all at # https://circleguard.github.io/circlecore/appendix.html#circleguard.loadables.Loadable # maps and users can be iterated over for r in map_: print(cg.ur(r))
Join our discord and ask how you can help, or look around for open issues which interest you and tackle those. Pull requests are welcome!
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for circleguard-5.3.0-py3-none-any.whl