51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import subprocess
|
|
import os
|
|
import mailbox
|
|
import datetime
|
|
|
|
import pytz
|
|
from dateutil import parser as dateutilparser
|
|
|
|
|
|
def clean_data(config):
|
|
open(config["top_mbox_file"], 'w').close()
|
|
|
|
|
|
for top in config["pre_tops"]:
|
|
if "file" in top and os.path.isfile(top["file"]):
|
|
os.remove(top["file"])
|
|
|
|
for top in config["post_tops"]:
|
|
if "file" in top and os.path.isfile(top["file"]):
|
|
os.remove(top["file"])
|
|
|
|
def read_db(config):
|
|
subprocess.run(["helpers/read_db.sh"], check=True)
|
|
|
|
def read_topmails(config):
|
|
in_mbox = mailbox.Maildir(config["top_inbox_maildir"])
|
|
out_mbox = mailbox.mbox(config["top_mbox_file"])
|
|
|
|
out_mbox.clear()
|
|
|
|
buffer = []
|
|
|
|
timezone = pytz.timezone("Europe/Berlin")
|
|
last_fsr_date = datetime.date.fromisoformat(open(config["last_date_file"]).read().strip())
|
|
last_fsr_datetime = datetime.datetime.combine(last_fsr_date, datetime.time(17, 30), timezone)
|
|
|
|
for message in in_mbox:
|
|
if message["List-Id"]:
|
|
if config["top_list_id"] in generate.decode_header(message["List-Id"]).strip():
|
|
date = dateutilparser.parse(message["Date"])
|
|
if date > last_fsr_datetime:
|
|
buffer.append(message)
|
|
|
|
for message in sorted(buffer, key=lambda x: dateutilparser.parse(x["Date"])):
|
|
out_mbox.add(message)
|
|
|
|
out_mbox.close()
|
|
|
|
def compile_presentation(config):
|
|
subprocess.run(["helpers/compile_presentation.sh"], check=True)
|