Python API and CLI tool to read Parkitect's blueprints metadata.
PyPI - Documentation - Source code - Issue tracker - Changelog
- Python >= 3.10
pip install parkitect-blueprint-reader
After cloning/downloading the repo:
pip install .
The API consists of one load()
method, which reads blueprint metadata from the given binary file-like object and returns
the parsed data as a dictionary.
import parkitect_blueprint_reader
from pprint import pprint
try:
with open('coaster.png', 'rb') as fp: # Note it's opened in binary mode
pprint(
parkitect_blueprint_reader.load(fp)
)
except Exception as e:
print(e)
The CLI reads metadata from the given blueprint filename, then writes the parsed data as a JSON to stdout
.
parkitect-blueprint-reader coaster.png
The --pretty
option may be used to pretty-print the outputted JSON.
Data is stored in blueprints as follows, using the least significant bits steganography technique (described in the reference documents below):
- A three-bytes magic number:
SM\x01
(Parkitect's main developer initials) - Size (little-endian unsigned int), in bytes, of the gzippped content to be read
- A 16-bytes MD5 checksum
- The actual gzippped data, which is
Size
bytes long
- Parkitect devlog - Update 58
- Reddit - How are blueprints stored?
- GitHub - Parkitect Blueprint Investigation
- Clone the repository
- From the root directory, run:
pip install -e ".[dev]"
From the root directory, run python setup.py upload
. This will build the package, create a git tag and publish on PyPI.
__version__
in parkitect_blueprint_reader/__version__.py
must be updated beforehand. It should adhere to Semantic Versioning.
An associated GitHub release must be created following the Keep a Changelog format.