Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hearthsim/python-hsreplay
Python library for creating and parsing HSReplay XML files
https://github.com/hearthsim/python-hsreplay
hearthstone hsreplay python replays xml
Last synced: 3 days ago
JSON representation
Python library for creating and parsing HSReplay XML files
- Host: GitHub
- URL: https://github.com/hearthsim/python-hsreplay
- Owner: HearthSim
- License: mit
- Created: 2015-08-21T03:27:23.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2024-04-24T23:01:59.000Z (8 months ago)
- Last Synced: 2024-12-11T12:25:56.664Z (11 days ago)
- Topics: hearthstone, hsreplay, python, replays, xml
- Language: Python
- Homepage: https://hearthsim.info/hsreplay/
- Size: 793 KB
- Stars: 51
- Watchers: 17
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# python-hsreplay
[![Build Status](https://travis-ci.com/HearthSim/python-hsreplay.svg?branch=master)](https://travis-ci.com/HearthSim/python-hsreplay)
[![PyPI](https://img.shields.io/pypi/v/hsreplay.svg)](https://pypi.org/project/hsreplay/)A python module for HSReplay support.
## Installation
The library is available on PyPI. `pip install hsreplay` will install it.
Dependencies:
* [`hearthstone`](https://github.com/HearthSim/python-hearthstone)
* [`hslog`](https://github.com/HearthSim/python-hslog)
* `lxml` (optional) for faster XML parsing and writing. Will use `xml.etree` if not available.
* `aniso8601` or `dateutil` for timestamp parsing## Usage
The main document class is `hsreplay.document.HSReplayDocument`.
That class contains all the necessary functionality to import and export HSReplay files.### Reading/Writing HSReplay XML files
The classmethod `from_xml_file(fp)` takes a file-like object and will return a document.
If you already have an `ElementTree` object, you can call the `from_xml(xml)` classmethod instead.To export to an HSReplay XML document, the `HSReplayDocument.toxml(pretty=False)` method can be
used to obtain a UTF8-encoded string containing the document.### Reading directly from a log file
The library integrates directly with the `python-hearthstone` library to produce `HSReplayDocument`
objects directly from a log file or a parser instance.Use the helper classmethods `from_log_file(fp, processor="GameState", date=None, build=None)` and
`from_parser(parser, build=None)`, respectively.### Exporting back to a PacketTree
It is possible to export HSReplayDocument objects back into a PacketTree with the `to_packet_tree()`
method. This therefore allows lossless conversion from a PacketTree, into HSReplayDocument, then
back into a PacketTree.This is especially interesting because of the native functionality in `python-hearthstone` which is
able to export to a Game tree and allows exploring the game state. By converting HSReplayDocument
objects to a PacketTree, it's very easy to follow the replay at a gameplay level, explore the state
of the various entities and even hook into the exporter in order to programmatically analyze it.