ACE3/tools/stringtableduplicates.py
2015-04-07 21:38:27 +02:00

57 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import sys
from xml.dom import minidom
# STRINGTABLE DUPLICATE FINDER
# Author: KoffeinFlummi
# ----------------------------
# Counts duplicate stringtable entries
def main():
scriptpath = os.path.realpath(__file__)
projectpath = os.path.dirname(os.path.dirname(scriptpath))
projectpath = os.path.join(projectpath, "addons")
entries = {}
for module in os.listdir(projectpath):
if module[0] == ".":
continue
stringtablepath = os.path.join(projectpath, module, "stringtable.xml")
try:
xmldoc = minidom.parse(stringtablepath)
except:
continue
keys = xmldoc.getElementsByTagName("English")
for key in keys:
text = key.firstChild.wholeText
parentid = key.parentNode.getAttribute("ID")
if text in entries:
entries[text].append(parentid)
else:
entries[text] = [parentid]
entries = {k: v for k, v in entries.items() if len(v) > 1}
output = list([[k, v] for k, v in entries.items()])
output = sorted(output, key=lambda x: len(x[1])*-1)
print("Potential duplicate stringtable entries:\n")
for l in output:
k, v = l
print(k.ljust(50), end=" ")
print("Listed %i times in: %s" % (len(v), ", ".join(v)))
print("\n# MARKDOWN\n")
print("| Text | # Occurences | Containing Entries |")
print("|------|-------------:|--------------------|")
for l in output:
print("| %s | %i | %s |" % (l[0], len(l[1]), ", ".join(l[1])))
if __name__ == "__main__":
main()