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:
Installation
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 (import circleguard
).
Links
Github: https://github.com/circleguard/circlecore
Documentation: https://circleguard.github.io/circlecore/
Discord: https://discord.gg/VNnkTjm
Usage
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 *
cg = Circleguard("key")
replay = ReplayMap(221777, 2757689)
print(cg.ur(replay))
print(cg.frametime(replay))
print(cg.frametimes(replay))
print(cg.hits(replay))
print(cg.snaps(replay))
replay2 = ReplayMap(221777, 4196808)
print(cg.similarity(replay, replay2))
map_ = cg.Map(221777, span="1-3")
user = cg.User(124493, span="15, 20")
replay3 = ReplayPath("/path/to/local/osr/replay.osr")
for r in map_:
print(cg.ur(r))
Contributing
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!