modify datetime

This commit is contained in:
mrsu 2024-02-08 15:32:49 +00:00
parent eb6b8db0ea
commit 1b225d08fd
1 changed files with 10 additions and 9 deletions

View File

@ -3,10 +3,11 @@ import toml, argparse, os, sys, hashlib, json, pytz, glob, os, time
from dateutil.relativedelta import relativedelta
from dateutil.rrule import rrulestr
import datetime as dt
from datetime import time, timedelta, datetime
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import xmpp_alert, email_alert
import email_alert
#import xmpp_alert
# Parse args
parser = argparse.ArgumentParser(description="A simple calendar alerting daemon written in Python")
@ -38,7 +39,7 @@ files = glob.glob(os.path.join(cal_dir, '*.ics'))
class DateTimeEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, (datetime, timedelta)):
if isinstance(o, (dt.datetime, dt.timedelta)):
return str(o) # Convert the datetime or timedelta object to a string
return super().default(o)
@ -46,7 +47,7 @@ class FileChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
print(f"File modified: {event.src_path}")
if not event.is_directory: # If it's a file and not a directory
print(str(datetime.now()), "Sync detected, updating events")
print(str(dt.datetime.now()), "Sync detected, updating events")
with open(event.src_path, 'r') as f:
cal_str = f.read()
@ -132,7 +133,7 @@ def calculate_recur_dates(dtstart, vrecur):
delta = relativedelta(years=interval)
count = 0
current_date = datetime.now().replace(tzinfo=pytz.UTC)
current_date = dt.datetime.now().replace(tzinfo=pytz.UTC)
origin_date = start_date
while origin_date < current_date:
count += interval
@ -154,7 +155,7 @@ def calendar_parser(cal_str):
if component.name == "VEVENT": # If it's a VEVENT, create a new event dictionary
uid = component.get("UID")
dtstart = component.get("DTSTART").dt
dtstart = dtstart if isinstance(dtstart, dt.datetime) else datetime.combine(dtstart, dt.time.min) # Ensure dates are always as datetime
dtstart = dtstart if isinstance(dtstart, dt.datetime) else dt.datetime.combine(dtstart, dt.time.min) # Ensure dates are always as datetime
dtstart = dtstart.replace(tzinfo=pytz.UTC)
summary = component.get("SUMMARY")
vrecur = component.get("RRULE")
@ -192,7 +193,7 @@ def get_next_alert(event, current_time):
next_alert = next_event
else:
next_alert = min(next_alert_list)
return next_alert - timedelta(seconds=5), next_event
return next_alert - dt.timedelta(seconds=5), next_event
# Create initial event_list using calendar_parser
event_list = [] # List to hold dictionaries for each event
@ -221,7 +222,7 @@ try:
# Write the output to the file
f.write(monitor_status)
f.write("\n")
if current_time >= next_alert and next_alert < next_alert + timedelta(seconds=15):
if current_time >= next_alert and next_alert < next_alert + dt.timedelta(seconds=15):
if len(event["alert_history"]) == 0:
print("First alert for '{}' detected".format(event["summary"]))
event["alert_history"] = [{"timestamp_alert_triggered": current_time, "alert_defintition_time": next_alert}]
@ -230,7 +231,7 @@ try:
else:
print("Posting alert for {}!".format(event["summary"]))
event["alert_history"].append({"timestamp_alert_triggered": current_time, "alert_defintition_time": next_alert})
xmpp_alert.send_xmpp(event["summary"], next_alert, next_event, args.config)
#xmpp_alert.send_xmpp(event["summary"], next_alert, next_event, args.config)
email_alert.send_email(event["summary"], next_alert, next_event, args.config)
with open("alert_history", 'a') as f:
f.write(event)