mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-21 21:35:38 +00:00
Add script for converting compatibility XML to CSV
This commit is contained in:
parent
f901b23aad
commit
f49c2dedf6
56
scripts/compatibility_xml_to_csv.py
Normal file
56
scripts/compatibility_xml_to_csv.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
import sys
|
||||
import argparse
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
|
||||
def convert_list(filename, separator=','):
|
||||
fields = ["Game Code", "Game Title", "Region", "Compatibility", "Upscaling Issues", "Version tested", "Comments"]
|
||||
output = separator.join(fields) + "\n"
|
||||
|
||||
tree = ET.parse(filename)
|
||||
for child in tree.getroot():
|
||||
if (child.tag != "entry"):
|
||||
print("!!! Skipping invalid tag '%s'" % child.tag)
|
||||
continue
|
||||
|
||||
game_code = child.get("code") or ""
|
||||
game_title = child.get("title") or ""
|
||||
region = child.get("region") or ""
|
||||
|
||||
node = child.find("compatibility")
|
||||
compatibility = node.text if node is not None else ""
|
||||
node = child.find("upscaling-issues")
|
||||
upscaling_issues = node.text if node is not None else ""
|
||||
node = child.find("version-tested")
|
||||
version_tested = node.text if node is not None else ""
|
||||
node = child.find("comments")
|
||||
comments = node.text if node is not None else ""
|
||||
|
||||
fix = None
|
||||
if separator == '\t':
|
||||
fix = lambda x: x.replace('\t', ' ')
|
||||
elif separator == ',':
|
||||
fix = lambda x: x if x.find(',') < 0 else ("\"%s\"" % x)
|
||||
else:
|
||||
fix = lambda x: x
|
||||
|
||||
entry_fields = [fix(game_code), fix(game_title), fix(region), fix(compatibility), fix(upscaling_issues), fix(version_tested), fix(comments)]
|
||||
output += separator.join(entry_fields) + "\n"
|
||||
|
||||
return output
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--tabs", action="store_true")
|
||||
parser.add_argument("list_file", action="store")
|
||||
parser.add_argument("output_file", action="store")
|
||||
args = parser.parse_args()
|
||||
|
||||
output = convert_list(args.list_file, '\t' if args.tabs else ',')
|
||||
output_file = open(args.output_file, "w")
|
||||
output_file.write(output)
|
||||
output_file.close()
|
||||
|
||||
|
Loading…
Reference in a new issue