feat: add staleness detection and notification for monitored content with timestamp tracking
This commit is contained in:
parent
d5239a9d78
commit
60a14e10a5
39
main.py
39
main.py
@ -8,10 +8,12 @@ from bs4 import BeautifulSoup
|
||||
|
||||
|
||||
URL_TO_MONITOR = "https://univesp.br/vestibular"
|
||||
HASH_FILE = os.path.join("/data", "last_hash.txt")
|
||||
NTFY_URL = os.getenv("NTFY_URL")
|
||||
FLARESOLVERR_URL = os.getenv("FLARESOLVERR_URL")
|
||||
MONITOR_SELECTOR = os.getenv("MONITOR_SELECTOR", "div.conteudo")
|
||||
HASH_FILE = os.path.join("/data", "last_hash.txt")
|
||||
LAST_CHANGE_FILE = os.path.join("/data", "last_change_timestamp.txt")
|
||||
LAST_NOTIFY_FILE = os.path.join("/data", "last_staleness_notification.txt")
|
||||
|
||||
|
||||
def send_notification(message):
|
||||
@ -91,6 +93,10 @@ def check_for_updates():
|
||||
|
||||
with open(HASH_FILE, 'w') as f:
|
||||
f.write(current_hash)
|
||||
|
||||
# Update last change timestamp
|
||||
with open(LAST_CHANGE_FILE, 'w') as f:
|
||||
f.write(str(datetime.now().timestamp()))
|
||||
else:
|
||||
print(f"[{datetime.now()}] No changes found.")
|
||||
else:
|
||||
@ -98,8 +104,39 @@ def check_for_updates():
|
||||
with open(HASH_FILE, 'w') as f:
|
||||
f.write(current_hash)
|
||||
|
||||
# Initialize last change timestamp
|
||||
with open(LAST_CHANGE_FILE, 'w') as f:
|
||||
f.write(str(datetime.now().timestamp()))
|
||||
|
||||
return
|
||||
|
||||
# Check for staleness (no changes for > 7 days)
|
||||
if os.path.exists(LAST_CHANGE_FILE):
|
||||
try:
|
||||
with open(LAST_CHANGE_FILE, 'r') as f:
|
||||
last_change_ts = float(f.read().strip())
|
||||
|
||||
time_since_change = datetime.now().timestamp() - last_change_ts
|
||||
if time_since_change > 7 * 24 * 60 * 60: # 7 days in seconds
|
||||
|
||||
# Check if we recently notified about this
|
||||
should_notify = True
|
||||
if os.path.exists(LAST_NOTIFY_FILE):
|
||||
with open(LAST_NOTIFY_FILE, 'r') as f:
|
||||
last_notify_ts = float(f.read().strip())
|
||||
|
||||
if (datetime.now().timestamp() - last_notify_ts) < 7 * 24 * 60 * 60:
|
||||
should_notify = False
|
||||
|
||||
if should_notify:
|
||||
print(f"[{datetime.now()}] ⚠️ Updates are stale (> 7 days). Sends notification.")
|
||||
send_notification("⚠️ No changes detected for over 7 days. Please check manually.")
|
||||
|
||||
with open(LAST_NOTIFY_FILE, 'w') as f:
|
||||
f.write(str(datetime.now().timestamp()))
|
||||
except Exception as e:
|
||||
print(f"[{datetime.now()}] Error checking staleness: {e}")
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user