F1 circuit layouts with year-by-year SVGs — manually traced track variations
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

72 рядки
2.4KB

  1. import json
  2. from pathlib import Path
  3. from typing import Dict, List
  4. def load_json_file(file_path: str) -> dict:
  5. """Load and parse a JSON file"""
  6. with open(file_path, 'r', encoding='utf-8') as f:
  7. return json.load(f)
  8. def verify_files(data: dict) -> Dict[str, List[str]]:
  9. """Verify if all required files exist for each layout"""
  10. missing_files = {}
  11. for country, country_data in data.items():
  12. country_slug = country_data['slug']
  13. for city, city_data in country_data['cities'].items():
  14. city_slug = city_data['slug']
  15. for circuit_name, circuit_data in city_data['circuits'].items():
  16. circuit_slug = circuit_data['slug']
  17. if 'layouts' in circuit_data:
  18. for layout_years, layout_data in circuit_data['layouts'].items():
  19. layout_slug = layout_data['slug']
  20. # Construct expected path
  21. base_path = Path(f"{country_slug}/{city_slug}/{circuit_slug}")
  22. expected_files = [
  23. base_path / f"{layout_slug}.svg",
  24. base_path / f"{layout_slug}.png",
  25. base_path / f"{layout_slug}.geo.json"
  26. ]
  27. # Check each expected file
  28. missing = []
  29. for file_path in expected_files:
  30. if not file_path.exists():
  31. missing.append(str(file_path))
  32. if missing:
  33. key = f"{country}/{city}/{circuit_name}/{layout_years}"
  34. missing_files[key] = missing
  35. return missing_files
  36. def main():
  37. # Load the data
  38. print("Loading circuits.json...")
  39. data = load_json_file("circuits.json")
  40. # Verify files
  41. print("Verifying files...")
  42. missing_files = verify_files(data)
  43. # Report results
  44. if missing_files:
  45. print("\nMissing files found:")
  46. total_missing = sum(len(files) for files in missing_files.values())
  47. for layout, files in missing_files.items():
  48. print(f"\n{layout}:")
  49. for file in files:
  50. print(f" - {file}")
  51. print(f"\nTotal missing files: {total_missing}")
  52. print(f"Affected layouts: {len(missing_files)}")
  53. else:
  54. print("\nAll files are present!")
  55. if __name__ == "__main__":
  56. main()