Files
f1-circuits/circuits/circuits-checker.py
T

72 lines
2.4 KiB
Python

import json
from pathlib import Path
from typing import Dict, List
def load_json_file(file_path: str) -> dict:
"""Load and parse a JSON file"""
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
def verify_files(data: dict) -> Dict[str, List[str]]:
"""Verify if all required files exist for each layout"""
missing_files = {}
for country, country_data in data.items():
country_slug = country_data['slug']
for city, city_data in country_data['cities'].items():
city_slug = city_data['slug']
for circuit_name, circuit_data in city_data['circuits'].items():
circuit_slug = circuit_data['slug']
if 'layouts' in circuit_data:
for layout_years, layout_data in circuit_data['layouts'].items():
layout_slug = layout_data['slug']
# Construct expected path
base_path = Path(f"{country_slug}/{city_slug}/{circuit_slug}")
expected_files = [
base_path / f"{layout_slug}.svg",
base_path / f"{layout_slug}.png",
base_path / f"{layout_slug}.geo.json"
]
# Check each expected file
missing = []
for file_path in expected_files:
if not file_path.exists():
missing.append(str(file_path))
if missing:
key = f"{country}/{city}/{circuit_name}/{layout_years}"
missing_files[key] = missing
return missing_files
def main():
# Load the data
print("Loading circuits.json...")
data = load_json_file("circuits.json")
# Verify files
print("Verifying files...")
missing_files = verify_files(data)
# Report results
if missing_files:
print("\nMissing files found:")
total_missing = sum(len(files) for files in missing_files.values())
for layout, files in missing_files.items():
print(f"\n{layout}:")
for file in files:
print(f" - {file}")
print(f"\nTotal missing files: {total_missing}")
print(f"Affected layouts: {len(missing_files)}")
else:
print("\nAll files are present!")
if __name__ == "__main__":
main()