pathfinder-2-sqlite-MIRROR/deprecated/deprecated-yaml-scripts/tmp-spells-to-yaml.py

161 lines
5.1 KiB
Python
Raw Permalink Normal View History

import json
import yaml
def main():
with open(
'../third_party_json/spells20191115.json',
encoding='utf-8-sig') as f:
data = json.load(f)
# print(data)
for i in data:
if 'manual' in i:
del i['manual']
i['has_been_manually_proofread'] = False
if 'duration' not in i:
i['duration'] = None
# Fix components
if 'components' not in i:
i['components'] = None
else:
if i['components'] == ['1minute(material', 'somatic', 'verbal)']:
i['components'] = ['material', 'somatic', 'verbal']
if i['components'] == ['10minutes(material', 'somatic', 'verbal)']:
i['components'] = ['material', 'somatic', 'verbal']
if i['components'] == ['1hour(material', 'somatic', 'verbal)']:
i['components'] = ['material', 'somatic', 'verbal']
if i['components'] == ['1minute','material', 'somatic', 'verbal)']:
i['components'] = ['material', 'somatic', 'verbal']
if i['components'] == ['10minutes(somatic', 'verbal)']:
i['components'] = ['somatic', 'verbal']
if i['components'] == ['1minute(somatic', 'verbal)']:
i['components'] = ['somatic', 'verbal']
if i['components'] == ['1hour(somatic', 'verbal)']:
i['components'] = ['somatic', 'verbal']
for j, item in enumerate(i['components']):
if i['components'][j] == "somatic":
i['components'][j] = "Somatic"
if i['components'][j] == "material":
i['components'][j] = "Material"
if i['components'][j] == "verbal":
i['components'][j] = "Verbal"
if i['components'][j] == "focus":
i['components'][j] = "Focus"
if 'cast' not in i:
i['cast'] = None
if 'action' not in i:
i['action'] = None
i['action_abbr'] = i['action']
del i['action']
if i['action_abbr'] == "10 minutes":
i['action_abbr'] = "10m"
if i['action_abbr'] == "1 minute":
i['action_abbr'] = "1m"
if i['action_abbr'] == "1 hour":
i['action_abbr'] = "1h"
if 'traditions' not in i:
i['traditions'] = None
if i['traditions'] != None:
for j, item in enumerate(i['traditions']):
i['traditions'][j] = i['traditions'][j].capitalize()
if 'nethysUrl' in i:
del i['nethysUrl']
# print("spell:{}\n\tcast:{}\n\tcomponents:{}\n\taction:{}".format(i['name'], i['cast'], i['components'],i['action']))
# Fix source data
x = i['source']
if "Core Rulebook" in x:
tmp_abbr = "CRB"
elif "Lost Omens" in x:
tmp_abbr = "LOWG"
else:
raise Exception(
'something went wrong on sources in 3pp json data.')
res = [int(i) for i in x.split() if i.isdigit()]
# print("source line:{}\tres:{}".format(i['source'], res))
tmp_page_start = res[0]
tmp_page_stop = res[0]
i['source'] = [{
'abbr': tmp_abbr,
'page_start': tmp_page_start,
'page_stop': tmp_page_stop
}]
# description to descr
i['descr'] = i['description']
del i['description']
# Fix action cost
# fix requirements
if 'requirements' not in i:
i['req'] = None
else:
i['req'] = i['requirements']
del i['requirements']
if 'trigger' not in i:
i['trigger'] = None
if 'traits' not in i:
i['traits'] = None
else:
for idx, item in enumerate(i['traits']):
i['traits'][idx] = i['traits'][idx].capitalize()
# TODO Decide to keep targets or target
if 'targets' not in i:
i['targets'] = None
# for i in data:
# del i['actions_id']
# page = int(i['sources_pages'])
# del i['sources_pages']
# i['source'] = [{'abbr': 'CRB', 'page_start': page, 'page_stop': page }]
# x = i['actioncategories_id']
# if x == 1:
# i['actioncategory'] = "Basic"
# elif x ==2:
# i['actioncategory'] = "Specialty Basic"
# del i['actioncategories_id']
# y = i['actioncosts_id']
# if y == 0:
# i['actioncost_name'] = "Varies"
# elif y == 1:
# i['actioncost_name'] = "Single Action"
# elif y == 2:
# i['actioncost_name'] = "Two Actions"
# elif y == 3:
# i['actioncost_name'] = "Three Actions"
# elif y == 5:
# i['actioncost_name'] = "Free Action"
# elif y == 5:
# i['actioncost_name'] = "Reaction"
# del i['actioncosts_id']
data = {"spell": data}
final = yaml.safe_dump(data, allow_unicode=True, width=100000)
with open('tmp-spells.yaml', 'w') as f:
f.write(final)
if __name__ == "__main__":
main()