circleguard


Namecircleguard JSON
Version 5.4.3 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_time2024-08-13 19:44:55
maintainerNone
docs_urlNone
authorLiam DeVoe
requires_pythonNone
licenseNone
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": 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"
}
        
Elapsed time: 0.28181s