From 4009e6c8a72ca3b8e7e140421294393ba534c08a Mon Sep 17 00:00:00 2001 From: Xevion Date: Sat, 7 May 2022 23:57:18 -0500 Subject: [PATCH] Add meta.json persistence support --- server/normalization/main.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/server/normalization/main.py b/server/normalization/main.py index 19e3b53..e56e16c 100644 --- a/server/normalization/main.py +++ b/server/normalization/main.py @@ -268,25 +268,32 @@ def meta() -> None: logger.debug('Creating meta.json') IDENTIFIERS_FILE = os.path.join(CHARACTERS_DIR, 'identifiers.xml') + META_FILE = os.path.join(TRUTH_DIR, 'meta.json') + with open(IDENTIFIERS_FILE, 'r') as identifiers_file: speakers: List[str] = etree.parse(identifiers_file).xpath('//SpeakerList/Speaker') logger.debug(f'{len(speakers)} speakers parsed.') - meta_data = OrderedDict() + meta_data: OrderedDict[str, Optional[str]] + if os.path.exists(META_FILE): + with open(META_FILE, 'r') as meta_file: + meta_data = OrderedDict(json.load(meta_file)) + else: + meta_data = OrderedDict() for speaker in speakers: characters = speaker.xpath('./Characters/Character') or speaker.xpath('./Character') for character in characters: name = character.text - type = character.attrib['type'] - if type == 'null': - type = None + meta_type = character.attrib['type'] + if meta_type == 'null': + meta_type = None - if type is not None or name not in meta_data.keys(): - meta_data[name] = type + if meta_type is not None or name not in meta_data.keys(): + meta_data[name] = meta_type logger.debug(f'Writing {len(meta_data.keys())} meta values to disk.') - with open(os.path.join(TRUTH_DIR, 'meta.json'), 'w') as meta_file: + with open(META_FILE, 'w') as meta_file: json.dump(meta_data, meta_file, indent=4) logger.debug('Meta file written.')