research/dfbnet/dfbnet_tojson.py
2024-11-30 09:57:00 +01:00

71 lines
2.1 KiB
Python

# %%
from datetime import datetime, time, date
from competitions import get_teams_from_staffel
from schluesselzahlen import get_schluesselzahlen
from rahmentermine import get_rahmentermine
from spielstaetten import get_venues
# staffel = "Brandible Stadtliga B"
# teams = get_teams_from_staffel(staffel)
def datetime_serializer(obj):
if isinstance(obj, datetime) or isinstance(obj, date) or isinstance(obj, time):
return obj.isoformat() # or use obj.strftime("%Y-%m-%d %H:%M:%S")
raise TypeError("Type not serializable")
staffeln_raw, teams = get_teams_from_staffel()
staffeln = []
divisions = []
court_names = []
venues = []
for s in staffeln_raw:
if len(teams[s]) < 4 or len(teams[s]) % 2 == 1:
# if len(teams[s]) > 0:
# print(s, teams[s][0]['MS_ART'], len(teams[s]))
# else:
# print(s, "no teams")
print("Incompatible", s)
continue
nTeams = len(teams[s])
pattern, opponent = get_schluesselzahlen(nTeams)
ms_art = teams[s][0]['MS_ART']
if ms_art in ["A-Junioren","B-Junioren","C-Junioren","D-Junioren","D-Juniorinnen"]:
ms_art = "Junioren A-D"
elif ms_art in ["Herren Ü50"]:
ms_art = "Senioren Ü50"
elif ms_art in ["Herren Ü35"]:
ms_art = "Senioren Ü35"
rahmentermine = get_rahmentermine(ms_art, nTeams)
if not rahmentermine:
print("No rahmentermine for", s, ms_art, nTeams)
continue
divisions.append({
"name": s,
"teams": teams[s],
"nTeams": nTeams,
"ms_art": ms_art,
"pattern": pattern,
"opponent": opponent,
"rahmentermine": rahmentermine
})
# for t in teams[s]:
# if not t['SPIELSTAETTE'] in court_names:
# courts += [{"name":t['SPIELSTAETTE']}]
# court_names += [t['SPIELSTAETTE']]
venues = get_venues()
""" dump json """
import json
with open("data/competitions.json", "w", encoding="utf-8") as f:
json.dump({'divisions':divisions,'venues':venues}, f, default=datetime_serializer, ensure_ascii=False, indent=4)
# %%