<img src="readme_resources/logo.png" alt="logo" width="200" height="200"/>
[![PyPi version](https://badge.fury.io/py/circleguard.svg)](https://pypi.org/project/circleguard/)
# Circlecore ([documentation](https://circleguard.github.io/circlecore/))
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](https://github.com/circleguard/circleguard), a replay analysis tool.
Circlecore is developed and maintained by:
* [tybug](https://github.com/tybug)
* [samuelhklumpers](https://github.com/samuelhklumpers)
## Installation
Circlecore can be installed from pip:
```bash
pip install circleguard
```
This documentation refers to the project as `circlecore` to differentiate it from our organization [Circleguard](https://github.com/circleguard) and the replay analysis tool [Circleguard](https://github.com/circleguard/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> <br/>
Documentation: <https://circleguard.github.io/circlecore/> <br/>
Discord: <https://discord.gg/VNnkTjm> <br/>
## 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:
```python
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))
```
## Contributing
Join [our discord](https://discord.gg/VNnkTjm) and ask how you can help, or look around for open issues which interest you and tackle those. Pull requests are welcome!
Raw data
{
"_id": null,
"home_page": "https://github.com/circleguard/circlecore",
"name": "circleguard",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "osu!, python, cheat-detection, replay-stealing, remodding",
"author": "Liam DeVoe",
"author_email": "orionldevoe@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/8b/82/4b3690975ac7ec39268b8dfb3565e9538885621622926eaac68b52fd0333/circleguard-5.4.3.tar.gz",
"platform": null,
"description": "<img src=\"readme_resources/logo.png\" alt=\"logo\" width=\"200\" height=\"200\"/>\n\n[![PyPi version](https://badge.fury.io/py/circleguard.svg)](https://pypi.org/project/circleguard/)\n\n# Circlecore ([documentation](https://circleguard.github.io/circlecore/))\n\nCirclecore is a utilities library for osu!. Features include:\n\n* Unstable Rate calculation\n* Judgments calculation (classifying all hitobjects into misses, hit300s, hit100s, hit50s, or sliderbreaks)\n* Similarity calculation between two replays, for replay stealing detection\n* Frametime calculation, for timewarp detection\n* Jerky, suspicious movement detection (called Snaps)\n\nCirclecore is used by [Circleguard](https://github.com/circleguard/circleguard), a replay analysis tool.\n\nCirclecore is developed and maintained by:\n\n* [tybug](https://github.com/tybug)\n* [samuelhklumpers](https://github.com/samuelhklumpers)\n\n## Installation\n\nCirclecore can be installed from pip:\n\n```bash\npip install circleguard\n```\n\nThis documentation refers to the project as `circlecore` to differentiate it from our organization [Circleguard](https://github.com/circleguard) and the replay analysis tool [Circleguard](https://github.com/circleguard/circleguard). However, `circlecore` is installed from pypi with the name `circleguard`, and is imported as such in code (`import circleguard`).\n\n## Links\n\nGithub: <https://github.com/circleguard/circlecore> <br/>\nDocumentation: <https://circleguard.github.io/circlecore/> <br/>\nDiscord: <https://discord.gg/VNnkTjm> <br/>\n\n## Usage\n\nWe 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:\n\n```python\nfrom circleguard import *\n\n# replace \"key\" with your api key\ncg = Circleguard(\"key\")\n# replay on http://osu.ppy.sh/b/221777 by http://osu.ppy.sh/u/2757689\nreplay = ReplayMap(221777, 2757689)\n\nprint(cg.ur(replay)) # unstable rate\nprint(cg.frametime(replay)) # average frametime\nprint(cg.frametimes(replay)) # full frametime list\nprint(cg.hits(replay)) # where the replay hits hitobjects\nprint(cg.snaps(replay)) # any jerky/suspicious movement\n\nreplay2 = ReplayMap(221777, 4196808)\nprint(cg.similarity(replay, replay2)) # how similar the replays are\n\n# ReplayMap isn't the only way to represent replays; we can also\n# get a beatmap's top 3 plays\nmap_ = cg.Map(221777, span=\"1-3\")\n# or a User's fifteenth and twentieth best plays\nuser = cg.User(124493, span=\"15, 20\")\n# or a local replay\nreplay3 = ReplayPath(\"/path/to/local/osr/replay.osr\")\n# and more. You can find them all at\n# https://circleguard.github.io/circlecore/appendix.html#circleguard.loadables.Loadable\n\n# maps and users can be iterated over\nfor r in map_:\n print(cg.ur(r))\n```\n\n## Contributing\n\nJoin [our discord](https://discord.gg/VNnkTjm) and ask how you can help, or look around for open issues which interest you and tackle those. Pull requests are welcome!\n",
"bugtrack_url": null,
"license": null,
"summary": "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.",
"version": "5.4.3",
"project_urls": {
"Download": "https://github.com/circleguard/circlecore/tarball/v5.4.3",
"Homepage": "https://github.com/circleguard/circlecore"
},
"split_keywords": [
"osu!",
" python",
" cheat-detection",
" replay-stealing",
" remodding"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c4396a362c577ebb38db7b7c1a6f8de9b700104ee42d6f7f2618b3ab21815789",
"md5": "b736e8c1b75379780761c312c4009c10",
"sha256": "514a831e3fb962abe9fc3f58f8073446ec0b555f7ba2587e73e86c17e5c08eb7"
},
"downloads": -1,
"filename": "circleguard-5.4.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b736e8c1b75379780761c312c4009c10",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 73028,
"upload_time": "2024-08-13T19:44:53",
"upload_time_iso_8601": "2024-08-13T19:44:53.234202Z",
"url": "https://files.pythonhosted.org/packages/c4/39/6a362c577ebb38db7b7c1a6f8de9b700104ee42d6f7f2618b3ab21815789/circleguard-5.4.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8b824b3690975ac7ec39268b8dfb3565e9538885621622926eaac68b52fd0333",
"md5": "00d8dd34705abca8ec975b15bc25c13f",
"sha256": "500707164727b29991f6ac024f80439a004503416d5bcade8c17ec3178ccdc75"
},
"downloads": -1,
"filename": "circleguard-5.4.3.tar.gz",
"has_sig": false,
"md5_digest": "00d8dd34705abca8ec975b15bc25c13f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 65996,
"upload_time": "2024-08-13T19:44:55",
"upload_time_iso_8601": "2024-08-13T19:44:55.263767Z",
"url": "https://files.pythonhosted.org/packages/8b/82/4b3690975ac7ec39268b8dfb3565e9538885621622926eaac68b52fd0333/circleguard-5.4.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-13 19:44:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "circleguard",
"github_project": "circlecore",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "circleguard"
}