From 1b3c7fc4e6ddde021fc2dbc8a01a64aa28ed3096 Mon Sep 17 00:00:00 2001 From: Xevion Date: Mon, 9 May 2022 11:20:48 -0500 Subject: [PATCH] Add normalization.meta-update command --- server/normalization/main.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/server/normalization/main.py b/server/normalization/main.py index 734655b..6145abc 100644 --- a/server/normalization/main.py +++ b/server/normalization/main.py @@ -472,5 +472,33 @@ def compile() -> None: logger.info('Completed episode data compiling.') +@cli.command('meta-update') +def meta_update() -> None: + """Update identifiers.xml with type meta data from meta.json""" + + with open(ConstantPaths.META, 'r') as meta_file: + meta_data = json.load(meta_file) + + null_count: int = len(list(filter(lambda v: v is None, meta_data.values()))) + if null_count > 0: + logger.warning(f"{null_count} characters still have null values.") + + with open(ConstantPaths.IDENTIFIERS, 'r') as identifier_file: + identifiers = etree.parse(identifier_file) + + for character in identifiers.xpath('//SpeakerList/Speaker/Character'): + character.attrib["type"] = meta_data.get(character.text) or "null" + + for character in identifiers.xpath('//SpeakerList/Speaker/Characters/Character'): + character.attrib["type"] = meta_data.get(character.text) or "null" + + with open(ConstantPaths.IDENTIFIERS, 'w') as identifier_file: + etree.indent(identifiers, space=" " * 4) + identifier_file.write(etree.tostring(identifiers, encoding=str, pretty_print=True)) + + + + + if __name__ == '__main__': cli()