35 lines
787 B
Python
35 lines
787 B
Python
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):
|
|
return {**parsed, "data": str(string_to_bytes(parsed["data"]))}
|
|
|
|
|
|
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)
|