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-readerAfter 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.pngThe --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
Sizebytes 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.