A python module for HSReplay support.
https://hearthsim.info/hsreplay/
The library is available on PyPI. pip install hsreplay
will install it.
Dependencies:
hearthstone
hslog
lxml
(optional) for faster XML parsing and writing. Will usexml.etree
if not available.aniso8601
ordateutil
for timestamp parsing
The main document class is hsreplay.document.HSReplayDocument
.
That class contains all the necessary functionality to import and export HSReplay 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.
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.
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.