diff --git a/config.py b/config.py index dc67ece..0cf8dc8 100644 --- a/config.py +++ b/config.py @@ -11,3 +11,4 @@ SIGNAL_RECIPIENTS = os.environ.get("SIGNAL_RECIPIENTS", default=SIGNAL_SENDER).s "," ) SIGNAL_API_URL = os.environ.get("SIGNAL_API_URL") +LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO") diff --git a/logging_conf.py b/logging_conf.py new file mode 100644 index 0000000..5572117 --- /dev/null +++ b/logging_conf.py @@ -0,0 +1,18 @@ +import logging + +from config import LOG_LEVEL + + +def get_logger(name: str) -> logging.Logger: + logger = logging.getLogger(name) + + if not logger.handlers: + logger.setLevel(LOG_LEVEL) + formatter = logging.Formatter( + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + ) + console_handler = logging.StreamHandler() + console_handler.setFormatter(formatter) + logger.addHandler(console_handler) + + return logger diff --git a/main.py b/main.py index 5eb0879..84700da 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ from pathlib import Path from dotenv import load_dotenv -from jinja2 import Environment, PackageLoader, select_autoescape, FileSystemLoader +from jinja2 import Environment, select_autoescape, FileSystemLoader from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfparser import PDFParser @@ -12,6 +12,7 @@ from config import ( 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 @@ -19,6 +20,8 @@ from result_file import ResultFile load_dotenv() +logger = get_logger(__name__) + def read_pdf_metadata(pdf_file: Path): fp = open(pdf_file, "rb") @@ -28,26 +31,39 @@ def read_pdf_metadata(pdf_file: Path): 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") menus = Menus(menu_pdf_file) + logger.info("Extraction des métadonnées du PDF") pdf_metadata = read_pdf_metadata(menu_pdf_file) creation_date = pdf_metadata[0]["CreationDate"].decode("utf-8").removeprefix("D:") modification_date = pdf_metadata[0]["ModDate"].decode("utf-8").removeprefix("D:") + logger.debug( + f"Le PDF a été créé le {creation_date} et modifié le {modification_date}" + ) result_file = ResultFile(Path.home() / ".cache" / "menu_creche.txt") templates_path = Path(__file__).parent / "templates" - env = Environment(loader=FileSystemLoader(templates_path), autoescape=select_autoescape()) + env = Environment( + loader=FileSystemLoader(templates_path), autoescape=select_autoescape() + ) message_formatter = MenuMessageFormatter(env) for menu_type in MENU_TYPES: if result_file.was_already_sent(creation_date, modification_date, menu_type): - return + logger.info(f"Le menu {menu_type} du PDF a déjà été envoyé par le passé.") + continue + logger.debug(f"Création du message à envoyer pour le menu {menu_type}") message = message_formatter.create_message(menus, menu_type) + logger.info( + f"Envoi du message aux numéros {SIGNAL_RECIPIENTS} de la part de {SIGNAL_SENDER}" + ) + logger.debug(f"Le message envoyé a pour contenu :\n\n{message}") signal_messager = SignalMessager(SIGNAL_API_URL, SIGNAL_SENDER) signal_messager.send_message(message, menu_pdf_file, SIGNAL_RECIPIENTS) diff --git a/message_sender.py b/message_sender.py index a828954..ffd2380 100644 --- a/message_sender.py +++ b/message_sender.py @@ -4,7 +4,6 @@ from pathlib import Path import requests - class SignalMessager: def __init__(self, api_url: str, user_number: str): self.api_url = api_url