aboutsummaryrefslogtreecommitdiff
path: root/extract-categories
diff options
context:
space:
mode:
authordiogo464 <[email protected]>2025-07-21 15:02:48 +0100
committerdiogo464 <[email protected]>2025-07-21 15:02:48 +0100
commit8c8dabd0ed20679a2dad43a5c239f9fcfe1c1ad7 (patch)
tree55abbcfbbff19efa3aaf6cf36540ac7651c54973 /extract-categories
init
Diffstat (limited to 'extract-categories')
-rwxr-xr-xextract-categories74
1 files changed, 74 insertions, 0 deletions
diff --git a/extract-categories b/extract-categories
new file mode 100755
index 000000000..1683ecb75
--- /dev/null
+++ b/extract-categories
@@ -0,0 +1,74 @@
1#!/usr/bin/env python3
2import os
3import sys
4import json
5
6CATEGORY_RUN = "run"
7CATEGORY_WALK = "walk"
8CATEGORY_TRAIL = "trail"
9CATEGORY_KIDS = "kids"
10CATEGORY_SAINT_SILVESTER = "saint-silvester"
11CATEGORY_10K = "10k"
12CATEGORY_15K = "15k"
13CATEGORY_HALF_MARATHON = "half-marathon"
14CATEGORY_MARATHON = "marathon"
15
16CLASS_TO_CATEGORIES = {
17 "event_type-corrida": [CATEGORY_RUN],
18 "event_type-caminhada": [CATEGORY_WALK],
19 "event_type-corrida-10km": [CATEGORY_RUN, CATEGORY_10K],
20 "event_type-corrida-10-km": [CATEGORY_RUN, CATEGORY_10K],
21 "event_type-corrida-de-15-km": [CATEGORY_RUN, CATEGORY_15K],
22 "event_type-trail": [CATEGORY_TRAIL],
23 "event_type-kids-trail": [CATEGORY_TRAIL, CATEGORY_KIDS],
24 "event_type-trail-curto": [CATEGORY_TRAIL],
25 "event_type-trail-longo": [CATEGORY_TRAIL],
26 "event_type-trail-endurance": [CATEGORY_TRAIL],
27 "event_type-trail-ultra": [CATEGORY_TRAIL],
28 "event_type-sao-silvestre": [CATEGORY_SAINT_SILVESTER],
29 "event_type-outras": [],
30 "event_type-obstaculos": [CATEGORY_RUN],
31 "event_type-corta-mato": [CATEGORY_RUN],
32 "event_type-backyard-2": [CATEGORY_RUN],
33 "event_type-meiamaratona": [CATEGORY_RUN, CATEGORY_HALF_MARATHON],
34 "event_type-maratona": [CATEGORY_RUN, CATEGORY_MARATHON],
35 "event_type-skyrunning": [CATEGORY_RUN],
36 "event_type-corridas-inferior-10": [CATEGORY_RUN],
37 "event_type-kids": [CATEGORY_KIDS],
38 # ignored
39 "ajde_events": [],
40 "type-ajde_events": [],
41 "status-publish": [],
42 "has-post-thumbnail": [],
43 "hentry": [],
44}
45CLASS_IGNORE_PREFIXES = [
46 "post-",
47 "event_location-",
48 "event_organizer-",
49 "event_type_2-",
50 "event_type_3-",
51 "event_type_4-",
52 "event_type_5-",
53]
54
55for slug in sys.argv[1:]:
56 data_path = os.path.join("events", slug, "data.json")
57 with open(data_path, "r") as f:
58 data = json.load(f)
59 classes = data["class_list"]
60 categories = set()
61 categories_path = os.path.join("events", slug, "categories")
62 for class_ in classes:
63 if any(class_.startswith(p) for p in CLASS_IGNORE_PREFIXES):
64 continue
65 if class_ not in CLASS_TO_CATEGORIES:
66 raise Exception(f"unknown class: {class_}")
67 for category in CLASS_TO_CATEGORIES[class_]:
68 categories.add(category)
69 with open(categories_path, "w") as f:
70 for i, category in enumerate(sorted(categories)):
71 if i > 0:
72 f.write("\n")
73 f.write(category)
74