Skip to content

Commit

Permalink
change interval method
Browse files Browse the repository at this point in the history
  • Loading branch information
dewenni committed Oct 30, 2024
1 parent e53a0a1 commit 2d95023
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 95 deletions.
150 changes: 65 additions & 85 deletions app/lanis.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,92 +25,72 @@ def main():

# Welcome Nachricht
sendPushover("Lanis-App", "Lanis-App ist gestartet und prüft nun regelmäßig Updates im Schulportal")

# authentifizieren
client.authenticate()

#------------------------------------------------------------------------------------------------
# Prüfe auf unerledigte Hausaufgaben und sende Pushover Nachricht
#------------------------------------------------------------------------------------------------

if OPT_TASKS:

current_tasks = client.get_tasks()
last_tasks = load_last_tasks()

# Prüfen, ob es neue Aufgaben gibt
if has_new_tasks(current_tasks, last_tasks):
formattedTasks = formatTasks(current_tasks)
sendPushover("unerledigte Hausaufgaben", formattedTasks)
LANISLOG.info("neue Aufgaben gefunden %s", formattedTasks)
# Aktualisiere die zwischengespeicherten Aufgaben
save_last_tasks(current_tasks)
else:
LANISLOG.info("Keine neuen Aufgaben gefunden.")


#------------------------------------------------------------------------------------------------
# Prüfen, ob neue Nachricht vorliegt und sende Pushover Nachricht
#------------------------------------------------------------------------------------------------

if OPT_CONVERSATION:

# Abruf der aktuellen Konversationen
current_conversations = client.get_conversations(-1)

# Laden der zuletzt gespeicherten Konversationen
last_conversations = load_last_conversations()

# Prüfen, ob es neue Konversationen gibt
if has_new_conversations(current_conversations, last_conversations):
# Falls ja, formatiere und sende eine Nachricht
formatted_conversations = formatConversations(current_conversations)
sendPushover("aktuelle Nachtichten", formatted_conversations)
LANISLOG.info("aktuelle Nachtichten %s", formatted_conversations)
# Aktualisiere die zwischengespeicherten Konversationen
save_last_conversations(current_conversations)
else:
LANISLOG.info("Keine neuen Konversationen gefunden.")

#------------------------------------------------------------------------------------------------

if OPT_CALENDAR:

filtered_events = filter_calendar_entries(client.get_calendar(CALENDAR_START_DATE, CALENDAR_END_DATE, True))
new_events = create_and_compare_events(filtered_events)

# Überprüfe, ob new_events Einträge enthält
if new_events:
sendPushover("Neue Kalendereinträge", new_events)
LANISLOG.info("Neue Kalendereinträge: %s", new_events)

else:
LANISLOG.info("Keine neuen Kalendereinträge gefunden.")



LANISLOG.info("Warte %i Sekunden bis zum nächsten Durchlauf...", INTERVAL)

while True:
retries = 3 # Maximale Anzahl der Versuche
for attempt in range(retries):
try:
# Erstelle einen neuen HTTP-Client für jede Iteration
with httpx.Client() as http_client:

# authentifizieren
client.authenticate()

#------------------------------------------------------------------------------------------------
# Prüfe auf unerledigte Hausaufgaben und sende Pushover Nachricht
#------------------------------------------------------------------------------------------------

if OPT_TASKS:

current_tasks = client.get_tasks()
last_tasks = load_last_tasks()

# Prüfen, ob es neue Aufgaben gibt
if has_new_tasks(current_tasks, last_tasks):
formattedTasks = formatTasks(current_tasks)
sendPushover("unerledigte Hausaufgaben", formattedTasks)
LANISLOG.info("neue Aufgaben gefunden %s", formattedTasks)
# Aktualisiere die zwischengespeicherten Aufgaben
save_last_tasks(current_tasks)
else:
LANISLOG.info("Keine neuen Aufgaben gefunden.")


#------------------------------------------------------------------------------------------------
# Prüfen, ob neue Nachricht vorliegt und sende Pushover Nachricht
#------------------------------------------------------------------------------------------------

if OPT_CONVERSATION:

# Abruf der aktuellen Konversationen
current_conversations = client.get_conversations(-1)

# Laden der zuletzt gespeicherten Konversationen
last_conversations = load_last_conversations()

# Prüfen, ob es neue Konversationen gibt
if has_new_conversations(current_conversations, last_conversations):
# Falls ja, formatiere und sende eine Nachricht
formatted_conversations = formatConversations(current_conversations)
sendPushover("aktuelle Nachtichten", formatted_conversations)
LANISLOG.info("aktuelle Nachtichten %s", formatted_conversations)
# Aktualisiere die zwischengespeicherten Konversationen
save_last_conversations(current_conversations)
else:
LANISLOG.info("Keine neuen Konversationen gefunden.")

#------------------------------------------------------------------------------------------------

if OPT_CALENDAR:

filtered_events = filter_calendar_entries(client.get_calendar(CALENDAR_START_DATE, CALENDAR_END_DATE, True))
new_events = create_and_compare_events(filtered_events)

# Überprüfe, ob new_events Einträge enthält
if new_events:
sendPushover("Neue Kalendereinträge", new_events)
LANISLOG.info("Neue Kalendereinträge: %s", new_events)

else:
LANISLOG.info("Keine neuen Kalendereinträge gefunden.")

# Wenn erfolgreich, dann Schleife beenden
break

except httpx.RequestError as e:
LANISLOG.warning(f"Versuch {attempt + 1} fehlgeschlagen: {e}")
if attempt < retries - 1:
LANISLOG.info("Versuche es in 10 Sekunden erneut...")
time.sleep(10) # Warte 10 Sekunden, bevor du es erneut versuchst
else:
LANISLOG.error("Maximale Anzahl an Versuchen erreicht. Warte auf das nächste Intervall.")

except Exception as e:
LANISLOG.error(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
break # Bei unerwarteten Fehlern Schleife verlassen

LANISLOG.info("Warte %i Sekunden bis zum nächsten Durchlauf...", INTERVAL)
time.sleep(INTERVAL) # Warte das angegebene Intervall


if __name__ == "__main__":
Expand Down
17 changes: 7 additions & 10 deletions supervisord.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,25 @@
nodaemon=true
logfile=/var/log/supervisord.log
childlogdir=/var/log/
logfile_maxbytes=20MB ; Maximale Log-Dateigröße
logfile_backups=10 ; Anzahl der Backups
loglevel=info ; Log-Level (info, debug, etc.)
logfile_maxbytes=20MB
logfile_backups=10
loglevel=info

[program:lanis]
command=python3 /app/lanis.py
command=sh -c "while true; do python3 /app/lanis.py; sleep $INTERVAL; done"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout # Leitet stdout an die Standardausgabe weiter
stderr_logfile=/dev/stderr # Leitet stderr an die Standardfehlerausgabe weiter
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
logfile_maxbytes=0
logfile_backups=0
stderr_logfile_maxbytes=0
stdout_logfile_maxbytes = 0

stdout_logfile_maxbytes=0

[program:webserver]
command=sh -c "python3 -m http.server --directory /app/output $HTTP_PORT"
directory=/app/output

autostart=true
autorestart=true
stderr_logfile=/var/log/webserver.err.log
stdout_logfile=/var/log/webserver.out.log

0 comments on commit 2d95023

Please sign in to comment.