From ae13431522c4e11da4a6361c4be2bab590ca7534 Mon Sep 17 00:00:00 2001 From: scriptos Date: Thu, 21 Mar 2024 21:44:38 +0100 Subject: [PATCH] first docker release --- docker/Dockerfile | 14 ++++++++++ docker/docker-compose.yaml | 14 ++++++++++ docker/nox-forum-watcher.v1.py | 48 ++++++++++++++++++++++++++++++++++ docker/requirements.txt | 2 ++ 4 files changed, 78 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yaml create mode 100644 docker/nox-forum-watcher.v1.py create mode 100644 docker/requirements.txt diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..8aa729b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,14 @@ +FROM python:3.8-slim + +# Arbeitsverzeichnis im Container festlegen +WORKDIR /app + +# Abhängigkeiten installieren +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + +# Skript in das Arbeitsverzeichnis kopieren +COPY nox-forum-watcher.v1.py . + +# Script festlegen, der ausgeführt werden soll, wenn der Container startet +CMD [ "python", "./nox-forum-watcher.v1.py" ] \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..39aa4da --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,14 @@ +version: '3.8' + +services: + nox-forum-watcher: + build: . + container_name: nox-forum-watcher + restart: unless-stopped + environment: + SMTP_SERVER: smtp.media-techport.int + SMTP_PORT: 25 + SENDER_EMAIL: noreply@media-techport.de + RECEIVER_EMAIL: + FORUM_URL: https://forum.nox.to/index.php?thread/133929-gutschein-angebote/ + FORUM_TOPIC: Forum NOX.TO | Gutschein Angebote diff --git a/docker/nox-forum-watcher.v1.py b/docker/nox-forum-watcher.v1.py new file mode 100644 index 0000000..59e1d96 --- /dev/null +++ b/docker/nox-forum-watcher.v1.py @@ -0,0 +1,48 @@ +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) \ No newline at end of file diff --git a/docker/requirements.txt b/docker/requirements.txt new file mode 100644 index 0000000..a98ae43 --- /dev/null +++ b/docker/requirements.txt @@ -0,0 +1,2 @@ +requests +beautifulsoup4 \ No newline at end of file