Skip to main content

Parser for osr files and lzma replay streams for osu!

Project description

PyPi version

circleparse, a .osr and lzma parser

This fork is designed specifically for 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:

from circleparse import parse_replay

# returns instance of Replay from an lzma bytestring with only the play_data field nonnull.
parse_replay(lzma_byte_string, pure_lzma=True)

Note 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.

Installation

To install, simply

pip install circleparse

Documentation

To parse a replay from a filepath:

from circleparse import parse_replay_file

#returns instance of Replay
parse_replay_file("path/to/osr.osr")

To parse a replay from a bytestring:

from circleparse import parse_replay

#returns instance of Replay given the replay data encoded as a bytestring
parse_replay(byte_string)

Replay instances provide these fields

self.game_mode #GameMode enum
self.game_version #Integer
self.beatmap_hash #String
self.player_name #String
self.replay_hash #String
self.number_300s #Integer
self.number_100s #Integer
self.number_50s #Integer
self.gekis #Integer
self.katus #Integer
self.misses #Integer
self.score #Integer
self.max_combo #Integer
self.is_perfect_combo #Boolean
self.mod_combination #frozenset of Mods
self.life_bar_graph #String, unparsed as of now
self.timestamp #Python Datetime object
self.play_data #List of ReplayEvent instances

ReplayEvent instances provide these fields

self.time_since_previous_action #Integer representing time in milliseconds
self.x #x axis location
self.y #y axis location
self.keys_pressed #bitwise sum of keys pressed, documented in OSR format page

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

circleparse-6.2.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

circleparse-6.2.0-py3-none-any.whl (28.4 kB view details)

Uploaded Python 3

File details

Details for the file circleparse-6.2.0.tar.gz.

File metadata

  • Download URL: circleparse-6.2.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.2

File hashes

Hashes for circleparse-6.2.0.tar.gz
Algorithm Hash digest
SHA256 50dfa4a93d1c4e09791114f5a77b756573ba6e76ea44125a4721ce0b61c7a7fa
MD5 f9fe286463fdc963dc92182256b241a8
BLAKE2b-256 f4094563fe1549be8d91f839add168c2b79e2dfbbc937337d12cd1cad9e47946

See more details on using hashes here.

File details

Details for the file circleparse-6.2.0-py3-none-any.whl.

File metadata

  • Download URL: circleparse-6.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.2

File hashes

Hashes for circleparse-6.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b5a7108ad3133162e3d4bd99d96d389e40913a105de15122cd074f091f783a4
MD5 fc0afeb5db342f1ca5c06aeccc209c00
BLAKE2b-256 fce5654bebaa3f3309af4a6ce5e36c4cecf79f9435a7ce3776e1adb37de1a409

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page