diff --git a/mail_notify.py b/mail_notify.py new file mode 100755 index 0000000..fc3bee6 --- /dev/null +++ b/mail_notify.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +# -*- coding: utf8 -*- + +import MosDb +import MosReport +import datetime +import os.path +import sys +from email.message import EmailMessage +from email.mime.text import MIMEText +from email.headerregistry import Address +from email.utils import formatdate +from subprocess import Popen, PIPE + +# Default: last hour +LAST_NOTIFICATION_SENT = datetime.datetime.now().timestamp() - 7200 +if os.path.isfile(".last_notification"): + with open(".last_notification", "r") as f: + LAST_NOTIFICATION_SENT = f.readline().strip() + f.close() + +db = MosDb.MosDb() + +items = db.get_daily_oa("-1 day", 2) +#items = db.get_daily_oa("-1 day") +db.finish() + +notifications = {} +for i in items: + if i["createdStamp"] < LAST_NOTIFICATION_SENT: + # Old, ignore + continue + if not i["lu"]: + # No LU data, ignore + continue + print("Got: " + i["name"]) + if abs(float(i["ldiff"])) < 2: + print("LU OK. ({} / {})".format(i["lu"], i["ldiff"])) + continue + + print("Differs more than 2!!!! ({} / {})".format(i["lu"], i["ldiff"])) + email = i["createdByEmail"] + emails_list = ["markus.birth@weltn24.de", "sebastian.erb@weltn24.de"] + if email: + emails_list += [email] + + for e in emails_list: + if not e in notifications: + notifications[e] = [] + notifications[e].append(i) + +print(repr(notifications)) + +for e in notifications: + print("### Mail to: " + e) + i = notifications[e] + (output_txt, output_csv) = MosReport.get_report(i) + print(output_txt) + +sys.exit(0) + +msg = EmailMessage() +msg["Date"] = formatdate(localtime=True) +msg["Subject"] = "Lautheitsbericht {:%Y-%m-%d}".format(datetime.datetime.now()) +msg["From"] = Address("Lautheitsüberwachung", "broadcast-support", "weltn24.de") +msg["To"] = ( + Address("serb", "sebastian.erb", "weltn24.de"), + Address("mbirth", "markus.birth", "weltn24.de") +) + +msg.set_content(output_text) +msg.make_mixed() + +att = MIMEText(output_csv, _subtype="csv", _charset="utf-8") +att.add_header("Content-Disposition", "attachment", filename="lautheit.csv") + +msg.attach(att) + +#print(repr(clips)) +print(msg.as_string()) + +p = Popen(["/usr/sbin/sendmail", "-oi", "markus.birth@weltn24.de", "sebastian.erb@weltn24.de"], stdin=PIPE) +p.communicate(msg.as_bytes()) +