fixed read failures in older chuni versions where sortname doesn't exist. Also noticed some character import errors associated with &

This commit is contained in:
2025-04-05 20:10:07 -04:00
parent 5906bc3486
commit eb601e3293

View File

@ -303,7 +303,7 @@ class ChuniReader(BaseReader):
for name in xml_root.findall("name"): for name in xml_root.findall("name"):
id = name.find("id").text id = name.find("id").text
name = name.find("str").text name = name.find("str").text
sortName = xml_root.find("sortName").text sortName = name if xml_root.find("sortName") is None else xml_root.find("sortName").text
defaultHave = xml_root.find("defaultHave").text == 'true' defaultHave = xml_root.find("defaultHave").text == 'true'
disableFlag = xml_root.find("disableFlag") # may not exist in older data disableFlag = xml_root.find("disableFlag") # may not exist in older data
is_enabled = True if (disableFlag is None or disableFlag.text == "false") else False is_enabled = True if (disableFlag is None or disableFlag.text == "false") else False
@ -352,12 +352,15 @@ class ChuniReader(BaseReader):
if path.exists(f"{root}/{dir}/Chara.xml"): if path.exists(f"{root}/{dir}/Chara.xml"):
with open(f"{root}/{dir}/Chara.xml", "r", encoding='utf-8') as fp: with open(f"{root}/{dir}/Chara.xml", "r", encoding='utf-8') as fp:
strdata = fp.read() strdata = fp.read()
# ET may choke if there is a & symbol (which is present in some character xml)
if "&" in strdata:
strdata = strdata.replace("&", "&")
xml_root = ET.fromstring(strdata) xml_root = ET.fromstring(strdata)
for name in xml_root.findall("name"): for name in xml_root.findall("name"):
id = name.find("id").text id = name.find("id").text
name = name.find("str").text name = name.find("str").text
sortName = xml_root.find("sortName").text sortName = name if xml_root.find("sortName") is None else xml_root.find("sortName").text
for work in xml_root.findall("works"): for work in xml_root.findall("works"):
worksName = work.find("str").text worksName = work.find("str").text
rareType = xml_root.find("rareType").text rareType = xml_root.find("rareType").text
@ -401,7 +404,7 @@ class ChuniReader(BaseReader):
for name in xml_root.findall("name"): for name in xml_root.findall("name"):
id = name.find("id").text id = name.find("id").text
name = name.find("str").text name = name.find("str").text
sortName = xml_root.find("sortName").text sortName = name if xml_root.find("sortName") is None else xml_root.find("sortName").text
for image in xml_root.findall("image"): for image in xml_root.findall("image"):
iconPath = image.find("path").text iconPath = image.find("path").text
self.copy_image(iconPath, f"{root}/{dir}", "titles/chuni/img/mapIcon/") self.copy_image(iconPath, f"{root}/{dir}", "titles/chuni/img/mapIcon/")
@ -429,7 +432,7 @@ class ChuniReader(BaseReader):
for name in xml_root.findall("name"): for name in xml_root.findall("name"):
id = name.find("id").text id = name.find("id").text
name = name.find("str").text name = name.find("str").text
sortName = xml_root.find("sortName").text sortName = name if xml_root.find("sortName") is None else xml_root.find("sortName").text
for image in xml_root.findall("image"): for image in xml_root.findall("image"):
imagePath = image.find("path").text imagePath = image.find("path").text
self.copy_image(imagePath, f"{root}/{dir}", "titles/chuni/img/systemVoice/") self.copy_image(imagePath, f"{root}/{dir}", "titles/chuni/img/systemVoice/")