Serienhelper, HTML Ausgabe und E-Mails

blog-image

Wie ich bei der ersten Veröffentlichung vom Serienhelper angekündigt habe, ist eines meiner nächsten Ziele eine HTML Ausgabe zu bauen und euch dann zu Zeigen wie ihr euren Linux Server dazu bringt euch regelmäßig E-Mails mit den Ergebnissen schicken zu lassen das will ich euch heute zeigen

Doch zunächst in Serienhelper V1.1 gibt es ein neues Kommando getupdateinfo welches jetzt noch irrelevant ist aber in V1.2 wichtig wird, damit kann ein JSON erzeugt werden, das für alle Serienordner die URLs zum abrufen ermittelt, das ist wichtig um in der nächsten Version die showinfo Dateien zu aktualisieren da sich der Aufbau ändern wird

Und jetzt zum eigentlichen Thema

Neuen Benutzer anlegen und SerienHelper V1.1 herunterladen

Aus Sicherheitsgründen möchte man Dienste nicht als Root laufen lassen, daher legen wir einen neuen Benutzer serienhelper an

sudo useradd -r -s /usr/sbin/nologin -d /home/serienhelper -M serienhelper

Das erzeugt einen neuen Benutzer serienhelper mit einem Homeverzeichnis /home/serienhelper der sich nicht einloggen darf

Nun wechseln wir in den neuen Benutzer durch den Schalter -s /bin/bash wird mit gegeben das die Bash als Shell verwendet werden soll, da der Benutzer keine hat

sudo su - serienhelper -s /bin/bash

Nun laden wir SerienHelper V1.1 herunter, die URL müsst ihr entsprechend für euer System anpassen (Linux64, LinuxArm64, LinuxArm unten findet ihr die Downloads)

wget https://blog.es-development.de/wp-content/uploads/2025/05/ESD.SerienHelper_Linux64_V1.1.zip

Dann entpackt ihr das ZIP mit

unzip ESD.SerienHelper_Linux64_V1.1.zip

Jetzt habt ihr ein Verzeichnis /home/serienhelper/ESD.SerienHelper_Linux64

Jetzt müsst ihr SerienHelper noch ausführbar machen

chmod +x ESD.SerienHelper_Linux64/SerienHelper

Einrichten von msmtp als alternative zu Sendmail mit einem lokalen Mailserver

Mein Server läuft mit Ubuntu 24.04, zu nächst installieren wir also msmtp

sudo apt install msmtp msmtp-mta

Nun legen wir die Datei /etc/msmptrc an

sudo nano /etc/msmtprc

Minimalistisch gehalten könnte diese so aussehen, da wir das zweimal machen zeige ich bei der zweiten eine ausführlichere Kofiguration

defaults
auth           on
tls            on
logfile        /var/log/msmtp.log

account        default
host           smtp.domain.de
port           587
from           server@domain.de
user           server@domain.de
password       DeinMailPasswort

aliases        /etc/aliases

Was man nicht vergessen darf, die /etc/msmtprc muss spezielle rechte haben

sudo chmod 600 /etc/msmptrc

Damit kann dir nun das System bzw. Root E-Mails schicken, testen könnt ihr das so

echo -e "Subject: Testmail\n\nDies ist eine Testmail" | sendmail account@domain.de

SendMail für den Benutzer serienhelper einrichten

Im Homeverzeichnis unseres serienhelper Benutzers legen wir nun die Datei .msmptrc an

nano .msmtprc
# Set default values for all following accounts.
defaults

# Use the mail submission port 587 instead of the SMTP port 25.
port 587

# Always use TLS.
tls on

# Mail account
# TODO: Use your own mail address
account account@domain.de

# Host name of the SMTP server
# TODO: Use the host of your own mail account
host smtp.domain.de

# This is especially important for mail providers like
# Ionos, 1&1, GMX and web.de
set_from_header on

# As an alternative to tls_trust_file/tls_crl_file, you can use tls_fingerprint
# to pin a single certificate. You have to update the fingerprint when the
# server certificate changes, but an attacker cannot trick you into accepting
# a fraudulent certificate. Get the fingerprint with
# $ msmtp --serverinfo --tls --tls-certcheck=off --host=smtp.freemail.example
#tls_fingerprint 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33

# Envelope-from address
# TODO: Use your own mail address
from account@domain.de

# Authentication. The password is given using one of five methods, see below.
auth on

# TODO: Use your own user name fpr the mail account
user account@domain.de

# Password method 1: Add the password to the system keyring, and let msmtp get
# it automatically. To set the keyring password using Gnome's libsecret:
# $ secret-tool store --label=msmtp \
#   host smtp.freemail.example \
#   service smtp \
#   user joe.smith

# Password method 2: Store the password in an encrypted file, and tell msmtp
# which command to use to decrypt it. This is usually used with GnuPG, as in
# this example. Usually gpg-agent will ask once for the decryption password.
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gpg

# Password method 3: Store the password directly in this file. Usually it is not
# a good idea to store passwords in plain text files. If you do it anyway, at
# least make sure that this file can only be read by yourself.
# TODO: Use the password of your own mail account
password DeinPasswort

# Password method 4: Store the password in ~/.netrc. This method is probably not
# relevant anymore.

# Password method 5: Do not specify a password. Msmtp will then prompt you for
# it. This means you need to be able to type into a terminal when msmtp runs.

# Set a default account
# TODO: Use your own mail address
account default: account@domain.de

Wie man sieht ist die wesentlich ausführlicher und ich finde sie erklärt die Einstellungen ganz gut, hab ich hier geklaut

Auch hier wieder Berechtigungen setzen

chmod 600 .msmptrc

Das kann man dann wieder testen

echo -e "Subject: Testmail\n\nDies ist eine Testmail" | sendmail account@domain.de

Script Anlegen

Ok nachdem wir nun unseren Benutzer haben und dieser Mails verschicken kann benötigen wir noch ein kleines Script das uns die Mail zusammen baut und sendet bei mir heißt es send_SerienHelper.sh

#!/bin/bash
Content=$(ESD.SerienHelper_Linux64/SerienHelper compare all folder /mnt/shares/Serien/ ignore ignore.json lang Deutsch out html replacepath "/mnt/share/Serien/" "V:\\Serien" "\\")
(
  echo "To: acount@domain.de"
  echo "Subject: SerienHelper auto mail"
  echo "Content-Type: text/html; charset=UTF-8"
  echo ""
  echo "$Content"
) | sendmail -t

wie man sieht kommen hier neue Optionen zum Einsatz

  • out
    Mit out kann nun die Ausgabe angepasst werden möglich Werte sind html, json oder text, wir nutzen hier html
  • replacepath
    Da wir die Mail von einem Linux erzeugen und diese unter Windows nutzen wollen, kann hiermit der Path angepasst werden, der erste Wert ist der zu ersetzende Teil, dann durch was dieser Ersetzt werden soll und als drittes kann optional angegeben werden welches Pfadtrennzeichen verwendet werden soll

Nachdem ihr das Script für euch angepasst habt muss es noch ausführbar gemacht werden

chmod +x send_SerienHelper.sh

Wenn wir das nun ausführen ./send_SerienHelper.sh sollten wir nach abschluss ein Ergebnis per Mail erhalten das in etwa so aussieht

Cronjob einrichten

Wir öffnen den crontab editor

crontab -e

Ich wähle nano als Editor aus und trage mein Script in der letzten Zeile ein


# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 3 * * 1 bash send_SerienHelper.sh

Jeden Montag um 3:30 Uhr wird nun unser Script ausgeführt, zur Erklärung hier nochmal der Syntax

Bitte beachtet, das ihr nicht zu oft nach neuen Folgen suchen solltet, das Programm ist bewusst nicht Asynchron am abrufen der Seiten um die Belastung niedrig zu halten, ich denke einmal die Woche ist ein vernünftiges maß

Was kommt als nächstes

Was SerienHelper noch nicht kann, ist die ignore,json von Windows übernehmen um das zu ermöglichen ist ein größerer Umbau nötig
Aber da es sich um JSON handelt kannst du die Datei selbst anpassen, einfach die Datei öffnen kurz durch einen beliebigen JS Beautifier jagen und dann die Pfade anpassen

Oder du wartest noch ein bisschen in der nächsten Version möchte ich relative Pfade unterstützen

Darüber hinaus wird die nächste Version schluss mit den gersub Ordnern machen, stattdessen werden die Ordner nun ein Kürzel haben das etwa so aussieht en-de oder jp-de
Dabei handelt es sich um ISO-639-1-Codes für Länder der erste gibt die Audiosprache und der zweite die Untertitelsprache an

Download