Files
AIO_3D_Print_Web_Platform/scripts/fix_ini_files.py

55 lines
1.7 KiB
Python

import os
import glob
import difflib
# Read valid keys
valid_keys = set()
with open('valid_keys.txt', 'r') as f:
for line in f:
valid_keys.add(line.strip())
def process_file(filepath):
with open(filepath, 'r') as f:
lines = f.readlines()
new_lines = []
changed = False
for line in lines:
stripped = line.strip()
# Skip empty lines, metadata sections, or already commented lines with ;
if not stripped or stripped.startswith('[') or stripped.startswith(';'):
new_lines.append(line)
continue
if '=' in line:
parts = line.split('=', 1)
key = parts[0].strip()
val = parts[1]
if key in valid_keys:
new_lines.append(line)
else:
matches = difflib.get_close_matches(key, valid_keys, n=1, cutoff=0.8)
if matches:
new_key = matches[0]
new_lines.append(line.replace(key + ' ', new_key + ' ', 1) if key + ' ' in line else line.replace(key + '=', new_key + '=', 1))
print(f"{filepath}: Reacted {key} to {new_key}")
changed = True
else:
new_lines.append(';;;' + line)
print(f"{filepath}: Commented {key}")
changed = True
else:
new_lines.append(line)
if changed:
with open(filepath, 'w') as f:
f.writelines(new_lines)
for root, dirs, files in os.walk('print_config/prusa_slicer'):
for file in files:
if file.endswith('.ini'):
process_file(os.path.join(root, file))