import argparse import gzip import json from funcy import lmap from pyinfra.server.packing import string_to_bytes def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("compressed_json_path", help="Path to compressed JSON file") return parser.parse_args() def interpret(parsed): try: return {**parsed, "data": str(string_to_bytes(parsed["data"]))} except KeyError: return parsed def main(fp): with open(fp, "rb") as f: compressed_json_path = f.read() json_str = gzip.decompress(compressed_json_path) parsed = json.loads(json_str) parsed = [parsed] if isinstance(parsed, dict) else parsed parsed = lmap(interpret, parsed) print(json.dumps(parsed, indent=2)) if __name__ == "__main__": args = parse_args() main(args.compressed_json_path)