1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# This script will take the ModelRepo.xml file and rename the models based on the trademark
import argparse
import json
import xml.etree.ElementTree as ET
parser = argparse.ArgumentParser(description='Rename the models in an XML file')
parser.add_argument('--original', metavar='xml_file', type=str, help='The XML file to be parsed')
parser.add_argument('--out', metavar='output_file', type=str, default='ModelRepo_generated.xml', help='The output file', const='ModelRepo_generated.xml', nargs='?')
args = parser.parse_args()
tree = ET.parse(args.original)
root = tree.getroot()
def load_override_json(path):
with open(path) as f:
data = json.load(f)
return data
def get_actual_model(model):
name = model.get('name')
trademark = model.get('tm')
model_id = model.get('id')
# Check if the model has a manual override
if model_id in override.keys():
print('Overriding model: ' + name + ' with ' + override[model_id])
return override[model_id]
# Remove "Based on " from the name
new_name = trademark.replace('Based on ', '')
# remove "®" from the name
new_name = new_name.replace('®', '')
# Change out the word "loaded" for "|"
new_name = new_name.replace('loaded with', '|')
# remove the word "with" from "loaded with"
new_name = new_name.replace('with', '|')
# remove the word "tubes" from the name
new_name = new_name.replace('tubes', '')
new_name = new_name.replace('Tubes', '')
# Check if the name contains a Mono or Stereo suffix
if name.endswith('(M)'):
new_name += ' (M)'
elif name.endswith('(S)'):
new_name += ' (S)'
return new_name
print('Renaming models in file: ' + args.original)
override = load_override_json('manual_override.json')["ids"]
print(override)
# Itterate over the categories inside the XML file
for category in root.findall('Category'):
# Itterate over the models inside the category
for model in category.findall('Model'):
# First check if the model has a trademark
trademark = model.get('tm')
if trademark != "" and trademark != None:
new_name = get_actual_model(model)
model.set('name', new_name)
print('Saving file to: ' + args.out)
# Save the XML file
tree.write(args.out, encoding='UTF-8', xml_declaration=True)
|