pathfinder-2-sqlite-MIRROR/bin/combine-to-flat-yaml-and-js...

64 lines
1.8 KiB
Python

import yaml
import glob
import os
import json
# TODO eventually write in some command flags to only output one of the three formats
def main():
# change directory to the data directory
os.chdir('../data/')
# gets all files with a yaml extension in the directory
yfiles = []
for file in glob.glob("*.yaml"):
yfiles.append(file)
yfiles.sort()
print("Going to combine the following files: {}".format(yfiles))
master_data = {}
# we want all our various item categories nested under an `item:`
master_data['item'] = {}
for x in yfiles:
print("Doing:\t{}".format(x))
with open(x, 'r') as r:
data = yaml.full_load(r)
for key in data.keys():
# print(key)
if key == 'staves':
tmp = data[key]
# print(tmp)
master_data['item'][key] = data[key]
master_data[key] = data[key]
# print(master_data)
# change dir to repository root
os.chdir('..')
# WRITE TO A YAML FILE
print("Writing tmp-combined.yaml")
final = yaml.safe_dump(master_data, allow_unicode=True)
with open('tmp-combined.yaml', 'w') as f:
f.write(final)
print("\tDone.")
# WRITE TO A JSON FILE
print("Writing tmp-combined.json")
# have to have default=str as the dates aren't json serializable, this will just output them as a str
final = json.dumps(master_data, sort_keys=True, indent=1, default=str)
finalflat = json.dumps(master_data, sort_keys=True, default=str)
with open('tmp-combined.json', 'w') as f:
f.write(final)
print("\tDone.")
print("Writing tmp-combined-flat.json")
with open('tmp-combined-flat.json', 'w') as f:
f.write(finalflat)
print("\tDone.")
if __name__ == "__main__":
main()