circleguard


Namecircleguard JSON
Version 5.4.1 PyPI version JSON
download
home_pagehttps://github.com/circleguard/circlecore
SummaryA 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.
upload_time2023-08-13 15:35:45
maintainer
docs_urlNone
authorLiam DeVoe
requires_python
license
keywords osu! python cheat-detection replay-stealing remodding
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <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": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "osu!, python, cheat-detection, replay-stealing, remodding",
    "author": "Liam DeVoe",
    "author_email": "orionldevoe@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/b9/d3/89d93db0534f719e2d36ae518733a5224da1b8204e9b8bbd9a2d222725e7/circleguard-5.4.1.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": "",
    "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.1",
    "project_urls": {
        "Download": "https://github.com/circleguard/circlecore/tarball/v5.4.1",
        "Homepage": "https://github.com/circleguard/circlecore"
    },
    "split_keywords": [
        "osu!",
        " python",
        " cheat-detection",
        " replay-stealing",
        " remodding"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a57975d665b246563e31631f287b2ba3ca3de5adb9181ff481fa8cd18d86f388",
                "md5": "54f5597c7c1d04b25dd2f665cf0fa736",
                "sha256": "ffa95c3a35bebf1f7cc6aa26c8c2b7f269eabbcbee1402bd4067e3419846a291"
            },
            "downloads": -1,
            "filename": "circleguard-5.4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "54f5597c7c1d04b25dd2f665cf0fa736",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 71932,
            "upload_time": "2023-08-13T15:35:43",
            "upload_time_iso_8601": "2023-08-13T15:35:43.384988Z",
            "url": "https://files.pythonhosted.org/packages/a5/79/75d665b246563e31631f287b2ba3ca3de5adb9181ff481fa8cd18d86f388/circleguard-5.4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9d389d93db0534f719e2d36ae518733a5224da1b8204e9b8bbd9a2d222725e7",
                "md5": "6727844b58152d50a0001524834cc295",
                "sha256": "ac29faeec73fa4754c6a6b561d4c3e16a09cb92fb667ce6161ef70ea4c9b5037"
            },
            "downloads": -1,
            "filename": "circleguard-5.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "6727844b58152d50a0001524834cc295",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 64990,
            "upload_time": "2023-08-13T15:35:45",
            "upload_time_iso_8601": "2023-08-13T15:35:45.145947Z",
            "url": "https://files.pythonhosted.org/packages/b9/d3/89d93db0534f719e2d36ae518733a5224da1b8204e9b8bbd9a2d222725e7/circleguard-5.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-13 15:35:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "circleguard",
    "github_project": "circlecore",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "appveyor": true,
    "lcname": "circleguard"
}
        
Elapsed time: 0.10080s