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) 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()