nox-forum-watcher/docker/nox-forum-watcher.v1.py

48 lines
1.6 KiB
Python
Raw Normal View History

2024-03-21 20:44:38 +00:00
import os
import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
import time
# Umgebungsvariablen
smtp_server = os.getenv('SMTP_SERVER', 'default-smtp-server')
smtp_port = int(os.getenv('SMTP_PORT', 25))
absender_email = os.getenv('SENDER_EMAIL', 'default-sender@example.com')
empfaenger_email = os.getenv('RECEIVER_EMAIL', 'default-receiver@example.com')
url = os.getenv('FORUM_URL', 'default-forum-url')
topic = os.getenv('FORUM_TOPIC', 'default-forum-topic')
wait_time = int(os.getenv('WAIT_TIME', 60))
# Letzter bekannter Beitrag
letzter_beitrag = ""
while True:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Alle Beiträge gemäß des festgelegten Musters auswählen
beitraege = soup.select('div:nth-child(3) > header:nth-child(1) > ul:nth-child(2) > li:nth-child(1) > a:nth-child(1)')
# Überprüfe, ob neue Beiträge vorhanden sind
if beitraege and beitraege[-1].text != letzter_beitrag:
neuer_beitrag = beitraege[-1].text
letzter_beitrag = neuer_beitrag
# E-Mail-Inhalte
subject = "Neuer Beitrag im Forum"
body = f"Es gibt einen neuen Forenbeitrag im Thema: {topic}\n\nLink zum Beitrag: {url}"
# E-Mail senden
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = absender_email
msg['To'] = empfaenger_email
# Verbindung zum SMTP-Server herstellen
server = smtplib.SMTP(smtp_server, smtp_port)
server.send_message(msg)
server.quit()
# Wartezeit zwischen den Überprüfungen
time.sleep(wait_time)