Skip to content
Snippets Groups Projects

Add Mailservice

Merged Jan Hartig requested to merge mailservice into main
4 files
+ 87
5
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 59
0
import json
import shutil
import smtplib
import tomllib
from email.message import EmailMessage
from os import scandir
from pathlib import Path
def main():
with open("../config.toml", "rb") as f:
config = tomllib.load(f)
with open("../localisations.toml", "rb") as f:
localisations = tomllib.load(f)
finished_jobs = []
with scandir(config["UPLOAD_FOLDER"]) as uploads:
for entry in uploads:
if entry.is_dir():
with scandir(entry.path) as job:
for file in job:
if file.is_file() and file.name == "done":
finished_jobs.append(entry.path)
break
with smtplib.SMTP(
host=config["MAIL"]["SERVER"],
port=config["MAIL"]["PORT"],
local_hostname=config["MAIL"]["LOCAL_HOSTNAME"] if config["MAIL"]["LOCAL_HOSTNAME"] else None,
) as s:
for job in finished_jobs:
with open(Path(job).joinpath("metadata.json")) as f:
metadata = json.load(f)
language = metadata["language"]
msg = EmailMessage()
msg["Subject"] = localisations["mail"]["subject"][language]
msg["From"] = config["MAIL"]["FROM"]
msg["To"] = metadata["email"]
msg.set_content(localisations["mail"]["content"][language].format(metadata["filename"]))
# filename.language.vtt
filename = (
Path(metadata["filename"]).with_suffix(".{}.vtt".format(metadata["video_language"])).name
)
with open(Path(job).joinpath("subtitles.vtt")) as f:
msg.add_attachment(f.read(), filename=filename)
s.send_message(msg)
shutil.rmtree(job)
if __name__ == "__main__":
main()
Loading