mirror of
https://github.com/WebBreacher/WhatsMyName.git
synced 2025-06-18 14:25:31 -04:00
72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
import json
|
|
|
|
data_path = 'wmn-data.json'
|
|
schema_path = 'wmn-data-schema.json'
|
|
|
|
def sort_array_alphabetically(arr):
|
|
return sorted(arr, key=str.lower)
|
|
|
|
def reorder_object_keys(obj, key_order):
|
|
reordered = {k: obj[k] for k in key_order if k in obj}
|
|
for k in obj:
|
|
if k not in key_order:
|
|
reordered[k] = obj[k]
|
|
return reordered
|
|
|
|
def sort_headers(site):
|
|
headers = site.get("headers")
|
|
if isinstance(headers, dict):
|
|
site["headers"] = dict(sorted(headers.items(), key=lambda item: item[0].lower()))
|
|
|
|
def load_and_format_json(path):
|
|
with open(path, 'r', encoding='utf-8') as f:
|
|
raw_content = f.read()
|
|
data = json.loads(raw_content)
|
|
formatted = json.dumps(data, indent=2, ensure_ascii=False)
|
|
return data, raw_content, formatted
|
|
|
|
data, data_raw, data_formatted = load_and_format_json(data_path)
|
|
schema, schema_raw, schema_formatted = load_and_format_json(schema_path)
|
|
|
|
changed = False
|
|
|
|
# Sort authors and categories
|
|
if isinstance(data.get('authors'), list):
|
|
data['authors'] = sort_array_alphabetically(data['authors'])
|
|
|
|
if isinstance(data.get('categories'), list):
|
|
data['categories'] = sort_array_alphabetically(data['categories'])
|
|
|
|
# Sort and reorder sites
|
|
site_schema = schema.get('properties', {}).get('sites', {}).get('items', {})
|
|
key_order = list(site_schema.get('properties', {}).keys())
|
|
|
|
if isinstance(data.get('sites'), list):
|
|
data['sites'].sort(key=lambda site: site.get('name', '').lower())
|
|
for site in data['sites']:
|
|
sort_headers(site)
|
|
data['sites'] = [reorder_object_keys(site, key_order) for site in data['sites']]
|
|
|
|
updated_data_formatted = json.dumps(data, indent=2, ensure_ascii=False)
|
|
|
|
# Write wmn-data.json if changed
|
|
if data_raw.strip() != updated_data_formatted.strip():
|
|
with open(data_path, 'w', encoding='utf-8') as f:
|
|
f.write(updated_data_formatted)
|
|
print("Updated and sorted wmn-data.json.")
|
|
changed = True
|
|
else:
|
|
print("wmn-data.json already formatted.")
|
|
|
|
# Write formatted wmn-data-schema.json if changed
|
|
if schema_raw.strip() != schema_formatted.strip():
|
|
with open(schema_path, 'w', encoding='utf-8') as f:
|
|
f.write(schema_formatted)
|
|
print("Formatted wmn-data-schema.json.")
|
|
changed = True
|
|
else:
|
|
print("wmn-data-schema.json already formatted.")
|
|
|
|
if not changed:
|
|
print("No changes made.")
|