You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
import threading
|
|
from datetime import datetime
|
|
import json
|
|
import subprocess
|
|
import requests
|
|
|
|
|
|
def send_request(message) -> None:
|
|
url = "http://localhost:8000/"
|
|
data = {"text": message}
|
|
try:
|
|
response = requests.post(url, json=data)
|
|
response.raise_for_status()
|
|
except requests.RequestException as e:
|
|
print(f"Request failed: {e}")
|
|
|
|
def schedule(days=0, hours=0, mins=0, secs=0, target_datetime=None, message="") -> None:
|
|
"""Schedules a reminder after a specified delay or for a specific datetime. The delay is defined by days, hours, minutes, and seconds. If a target_datetime is provided, it schedules the reminder for that datetime instead."""
|
|
|
|
if target_datetime is None:
|
|
# Calculate the delay in seconds if no target_datetime is provided
|
|
delay = days * 86400 + hours * 3600 + mins * 60 + secs
|
|
else:
|
|
# Calculate the delay in seconds from now until the target datetime
|
|
now = datetime.now()
|
|
delay = (target_datetime - now).total_seconds()
|
|
# Ensure delay is non-negative
|
|
delay = max(0, delay)
|
|
|
|
# Create a timer
|
|
timer = threading.Timer(delay, send_request, args=[message])
|
|
|
|
# Start the timer
|
|
timer.start() |