48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
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) |