60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
import hashlib
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
|
|
|
from config import (
|
|
MENU_CRECHE_PDF_URL,
|
|
SIGNAL_SENDER,
|
|
SIGNAL_RECIPIENTS,
|
|
SIGNAL_API_URL,
|
|
)
|
|
from logging_conf import get_logger
|
|
from menus import Menus, MenuMessageFormatter
|
|
from message_sender import SignalMessager
|
|
from pdf_downloader import download
|
|
from result_file import ResultFile
|
|
|
|
load_dotenv()
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
templates_path = Path(__file__).parent
|
|
env = Environment(
|
|
loader=FileSystemLoader(templates_path), autoescape=select_autoescape()
|
|
)
|
|
message_formatter = MenuMessageFormatter(env)
|
|
|
|
signal_messager = SignalMessager(SIGNAL_API_URL, SIGNAL_SENDER)
|
|
|
|
|
|
def main():
|
|
logger.info(f"Téléchargement du menu à l'adresse {MENU_CRECHE_PDF_URL}...")
|
|
menu_pdf_file = download(MENU_CRECHE_PDF_URL, file_name="menu.pdf")
|
|
with open(menu_pdf_file, "rb") as pdf_file:
|
|
sha256 = hashlib.file_digest(pdf_file, "sha256").hexdigest()
|
|
|
|
try:
|
|
menus = Menus(menu_pdf_file)
|
|
except IndexError as err:
|
|
logger.error(err)
|
|
return
|
|
|
|
result_file = ResultFile(Path.home() / ".cache" / "menu_creche.txt")
|
|
if result_file.was_already_sent(sha256, menus):
|
|
return
|
|
is_update = result_file.is_update(sha256, menus)
|
|
result_file.write(sha256, menus)
|
|
message = message_formatter.create_message(menus, is_update)
|
|
|
|
logger.info(
|
|
f"Envoi du message aux numéros {SIGNAL_RECIPIENTS} de la part de "
|
|
f"{SIGNAL_SENDER} avec pour contenu:\n\n{message}"
|
|
)
|
|
signal_messager.send_message(message, menu_pdf_file, SIGNAL_RECIPIENTS)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|