{ "info": { "author": "Liam DeVoe", "author_email": "orionldevoe@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Games/Entertainment", "Topic :: Software Development :: Libraries" ], "description": "\n[![PyPi version](https://badge.fury.io/py/circleparse.svg)](https://pypi.org/project/circleparse/)\n\n# circleparse, a .osr and lzma parser\n\nThis fork is designed specifically for [Circlecore](https://github.com/circleguard/circlecore), and extends the functionality of the upstream repo by allowing parsing of a pure lzma bytestring, instead of the bytestring contents of an entire .osr file. Usage:\n\n```python\nfrom circleparse import parse_replay\n\n# returns instance of Replay from an lzma bytestring with only the play_data field nonnull.\nparse_replay(lzma_byte_string, pure_lzma=True)\n```\n\nNote that only information stored in the lzma bytestring is stored in the Replay instance. When pure_lzma is true, replay_data is the only populated field because lzma only contains cursor positioning and key presses. For more information, see [the wiki](https://osu.ppy.sh/help/wiki/osu%21_File_Formats/Osr_%28file_format%29).\n\n## Installation\n\nTo install, simply\n\n```sh\npip install circleparse\n```\n\n## Documentation\n\nTo parse a replay from a filepath:\n\n```python\nfrom circleparse import parse_replay_file\n\n#returns instance of Replay\nparse_replay_file(\"path/to/osr.osr\")\n```\n\nTo parse a replay from a bytestring:\n\n```python\nfrom circleparse import parse_replay\n\n#returns instance of Replay given the replay data encoded as a bytestring\nparse_replay(byte_string)\n```\n\nReplay instances provide these fields\n\n```python\nself.game_mode #GameMode enum\nself.game_version #Integer\nself.beatmap_hash #String\nself.player_name #String\nself.replay_hash #String\nself.number_300s #Integer\nself.number_100s #Integer\nself.number_50s #Integer\nself.gekis #Integer\nself.katus #Integer\nself.misses #Integer\nself.score #Integer\nself.max_combo #Integer\nself.is_perfect_combo #Boolean\nself.mod_combination #frozenset of Mods\nself.life_bar_graph #String, unparsed as of now\nself.timestamp #Python Datetime object\nself.play_data #List of ReplayEvent instances\n```\n\nReplayEvent instances provide these fields\n\n```python\nself.time_since_previous_action #Integer representing time in milliseconds\nself.x #x axis location\nself.y #y axis location\nself.keys_pressed #bitwise sum of keys pressed, documented in OSR format page\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/circleguard/circleparse/tarball/v6.1.0", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/circleguard/circleparse", "keywords": "osu!, osr, replay, replays, parsing, parser, python", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "circleparse", "package_url": "https://pypi.org/project/circleparse/", "platform": "", "project_url": "https://pypi.org/project/circleparse/", "project_urls": { "Download": "https://github.com/circleguard/circleparse/tarball/v6.1.0", "Homepage": "https://github.com/circleguard/circleparse" }, "release_url": "https://pypi.org/project/circleparse/6.1.0/", "requires_dist": null, "requires_python": "", "summary": "Parser for osr files and lzma replay streams for osu!", "version": "6.1.0" }, "last_serial": 5699393, "releases": { "5.0.0": [ { "comment_text": "", "digests": { "md5": "62de1aaa8ad6d04beb980ae4f9db476c", "sha256": "fe1befa3ec33eb5d8c75a6e0a9f9bb0d20ee701a165fcca58b1b81ac626a5f15" }, "downloads": -1, "filename": "circleparse-5.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "62de1aaa8ad6d04beb980ae4f9db476c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6867, "upload_time": "2019-07-19T22:07:21", "url": "https://files.pythonhosted.org/packages/50/51/754fafcfeb4c6ca295c0293e0994f22e104fe31171119573bf9b0c3fb492/circleparse-5.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d27a23d44872be9daa4181d09d8c4b6a", "sha256": "6f1904ef851f9561473bac7b3490fa3e809b2ab6dad4fcc7ec59c32ab0deb19e" }, "downloads": -1, "filename": "circleparse-5.0.0.tar.gz", "has_sig": false, "md5_digest": "d27a23d44872be9daa4181d09d8c4b6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5034, "upload_time": "2019-07-19T22:07:24", "url": "https://files.pythonhosted.org/packages/fc/f8/522a9b59379c946ec0c40403ee7dacb4d423d7b6eee863ceb03bc1381125/circleparse-5.0.0.tar.gz" } ], "5.0.1": [ { "comment_text": "", "digests": { "md5": "ada51183e0eebe0cef81d491767150c9", "sha256": "fab194c7c48562d8194e781a2458078e5cc2c4ee79795a843390bbf46eb05d5e" }, "downloads": -1, "filename": "circleparse-5.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ada51183e0eebe0cef81d491767150c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9652, "upload_time": "2019-07-24T16:23:28", "url": "https://files.pythonhosted.org/packages/90/3c/8507f0b39f1bd16a1082dc86448b64d825a28ab6789a157f46bf0882d881/circleparse-5.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9ab6283758decf04e48f1f046be8168", "sha256": "5de78bd0ec60e26557942f0447303f6d1254ab0f768e920fa5c07860f86eaac6" }, "downloads": -1, "filename": "circleparse-5.0.1.tar.gz", "has_sig": false, "md5_digest": "d9ab6283758decf04e48f1f046be8168", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4341, "upload_time": "2019-07-24T16:23:30", "url": "https://files.pythonhosted.org/packages/01/be/64d122ee90bff78f244d6abfe21645b0e4ab370c275ec50c8d38ade2b94a/circleparse-5.0.1.tar.gz" } ], "6.0.0": [ { "comment_text": "", "digests": { "md5": "2a15ede86ec95abd5b8f2b01bcf98ff5", "sha256": "53e83cb32a76f49c8b31bc6ca39c57dd1fa46ec6c79837c1cde0b270b0494f21" }, "downloads": -1, "filename": "circleparse-6.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2a15ede86ec95abd5b8f2b01bcf98ff5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9737, "upload_time": "2019-08-10T23:19:32", "url": "https://files.pythonhosted.org/packages/2f/d9/d7592bca96259eadcc83aec3a7d56250ec8e5614bf6165ceef37d613beae/circleparse-6.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ee086f60daeca250d08e78b35967933", "sha256": "a197f23a9524ff1e6f32bc5fef577f4df7588f0e8f5d47287b4ff87b58268b43" }, "downloads": -1, "filename": "circleparse-6.0.0.tar.gz", "has_sig": false, "md5_digest": "0ee086f60daeca250d08e78b35967933", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4439, "upload_time": "2019-08-10T23:19:33", "url": "https://files.pythonhosted.org/packages/cc/82/b5002e75b25726c8788e4b0dba7e49f2efd200dcd20ea0dd28bd29b6e1e1/circleparse-6.0.0.tar.gz" } ], "6.1.0": [ { "comment_text": "", "digests": { "md5": "849cbcff7a253f08e20fca224d0be747", "sha256": "04f2d68b16422b5acdb9e09fbeef81f41a970f25d89c7894c1456d4d659d2aea" }, "downloads": -1, "filename": "circleparse-6.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "849cbcff7a253f08e20fca224d0be747", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28353, "upload_time": "2019-08-19T16:54:57", "url": "https://files.pythonhosted.org/packages/eb/f1/3759da882d0fbc8aba894e9860ba4283bf03d9f6c266ebbbc0cf67e17ea4/circleparse-6.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb745860b62fb1cd7c142cc25a17784e", "sha256": "299fb46f9dc26cefa9f82f3fab1a4686ca6334af3970e6da7f49f44c20e383af" }, "downloads": -1, "filename": "circleparse-6.1.0.tar.gz", "has_sig": false, "md5_digest": "bb745860b62fb1cd7c142cc25a17784e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11303, "upload_time": "2019-08-19T16:54:59", "url": "https://files.pythonhosted.org/packages/18/e6/fbc986a2ae990f6bfbbb5408341a74735cdbb559a11b3bc8689e69bc20cf/circleparse-6.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "849cbcff7a253f08e20fca224d0be747", "sha256": "04f2d68b16422b5acdb9e09fbeef81f41a970f25d89c7894c1456d4d659d2aea" }, "downloads": -1, "filename": "circleparse-6.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "849cbcff7a253f08e20fca224d0be747", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28353, "upload_time": "2019-08-19T16:54:57", "url": "https://files.pythonhosted.org/packages/eb/f1/3759da882d0fbc8aba894e9860ba4283bf03d9f6c266ebbbc0cf67e17ea4/circleparse-6.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb745860b62fb1cd7c142cc25a17784e", "sha256": "299fb46f9dc26cefa9f82f3fab1a4686ca6334af3970e6da7f49f44c20e383af" }, "downloads": -1, "filename": "circleparse-6.1.0.tar.gz", "has_sig": false, "md5_digest": "bb745860b62fb1cd7c142cc25a17784e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11303, "upload_time": "2019-08-19T16:54:59", "url": "https://files.pythonhosted.org/packages/18/e6/fbc986a2ae990f6bfbbb5408341a74735cdbb559a11b3bc8689e69bc20cf/circleparse-6.1.0.tar.gz" } ] }