2022-12-17 00:35:20 +01:00

82 lines
2.4 KiB
Python

import json
import datetime
class ConfigParser(object):
def __init__(self, filename):
with open(filename, "r") as f:
self.jsonContent = json.load(f)
self.events = dict()
self.settings = dict()
self.__parseSettings()
self.__parseEvents()
self.__parseModuleSettings()
def __parseModuleSettings(self):
self.modules = self.jsonContent["modules"]
def __parseSettings(self):
self.settings = self.jsonContent["settings"]
def __parseDateRange(self, val ):
_from = self.__fromisoformat(val["from"])
_to = self.__fromisoformat(val["to"])
val["from"] = _from
val["to"] = _to
def __fromisoformat(self, val):
d = val.split("-")
if len(d) == 3:
return datetime.date(year=int(d[0]), month=int(d[1]), day=int(d[2]))
elif len(d) == 2:
return datetime.date(year=self.settings["year"], month=int(d[0]), day=int(d[1]))
def __parseEvents(self):
self.events = self.jsonContent["events"]
for key, val in self.events.items():
dates = val["dates"]
for ev in dates:
self.__parseDateRange(ev)
def printEvents(self):
for key, val in self.events.items():
dates = val["dates"]
print("%s\n================" % (val["name"]) )
for ev in dates:
print("from: %s until: %s ---> %s" % (ev["from"], ev["to"], ev["name"]) )
def getEvent(self, date, eventName=None):
for key,val in self.events.items():
if eventName:
if key == eventName:
for d in val["dates"]:
_from = d["from"]
_to = d["to"]
if date >= _from and date <= _to:
return (key, d)
else:
for d in val["dates"]:
_from = d["from"]
_to = d["to"]
if date >= _from and date <= _to:
return (key, d)
return None
if __name__ == "__main__":
c = ConfigParser("test.json")
startDate = datetime.date(2020,1,1)
for i in range(0,366):
d = startDate + datetime.timedelta(days=i)
ev = c.getEvent(d)
if ev: print(d, ev[0], ev[1]["name"])