Add all local circuit work — year-by-year SVGs and tooling

This commit is contained in:
2026-03-25 22:17:47 +01:00
parent 6ceeba7fb9
commit c94ebcfb22
1149 changed files with 171650 additions and 421 deletions
+97
View File
@@ -0,0 +1,97 @@
import json
from pathlib import Path
from slugify import slugify
def load_json_file(file_path: str):
"""Load and parse a JSON file"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError) as e:
print(f"Error reading {file_path}: {str(e)}")
return {}
def save_json_file(data, file_path: str):
"""Save data to a JSON file"""
try:
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print(f"Successfully saved: {file_path}")
except Exception as e:
print(f"Error saving {file_path}: {str(e)}")
def generate_layout_slug(layout_years: str) -> str:
return layout_years
def add_slugs_to_data(data):
"""Recursively add slugs to the circuit data structure"""
new_data = {}
for country, country_data in data.items():
country_slug = slugify(country)
new_country_data = {
"slug": country_slug,
"cities": {}
}
for city, city_data in country_data.items():
city_slug = slugify(city)
new_city_data = {
"slug": city_slug,
"circuits": {}
}
for circuit_name, circuit_data in city_data.items():
circuit_slug = slugify(circuit_name)
# Copy all existing circuit data
new_circuit_data = circuit_data.copy()
# Add circuit slug
new_circuit_data["slug"] = circuit_slug
# Add slugs to layouts
if "layouts" in new_circuit_data:
new_layouts = {}
for layout_years, layout_data in new_circuit_data["layouts"].items():
# Create new layout data with slug
new_layout_data = layout_data.copy()
new_layout_data["slug"] = generate_layout_slug(layout_years)
new_layout_data["years"] = layout_years # Store original years string
new_layouts[layout_years] = new_layout_data
new_circuit_data["layouts"] = new_layouts
new_city_data["circuits"][circuit_name] = new_circuit_data
new_country_data["cities"][city] = new_city_data
new_data[country] = new_country_data
return new_data
def main():
# Define file paths
input_file = Path("circuits.json")
output_file = Path("circuits-with-slugs.json")
# Load existing data
print(f"Loading data from {input_file}")
data = load_json_file(input_file)
if not data:
print("No data loaded. Exiting.")
return
# Add slugs to the data structure
print("Adding slugs to data structure...")
new_data = add_slugs_to_data(data)
# Save the modified data
print(f"Saving modified data to {output_file}")
save_json_file(new_data, output_file)
print("Done!")
if __name__ == "__main__":
main()