tell if it is an update
This commit is contained in:
parent
e34906ea14
commit
749865813f
7 changed files with 53 additions and 146 deletions
59
main.py
59
main.py
|
@ -1,13 +1,11 @@
|
|||
import hashlib
|
||||
from pathlib import Path
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from jinja2 import Environment, select_autoescape, FileSystemLoader
|
||||
from pdfminer.pdfdocument import PDFDocument
|
||||
from pdfminer.pdfparser import PDFParser
|
||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
|
||||
from config import (
|
||||
MENU_CRECHE_PDF_URL,
|
||||
MENU_TYPES,
|
||||
SIGNAL_SENDER,
|
||||
SIGNAL_RECIPIENTS,
|
||||
SIGNAL_API_URL,
|
||||
|
@ -23,55 +21,38 @@ load_dotenv()
|
|||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
def read_pdf_metadata(pdf_file: Path):
|
||||
fp = open(pdf_file, "rb")
|
||||
parser = PDFParser(fp)
|
||||
doc = PDFDocument(parser)
|
||||
return doc.info
|
||||
templates_path = Path(__file__).parent / "templates"
|
||||
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)
|
||||
menus = None
|
||||
|
||||
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}"
|
||||
)
|
||||
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)
|
||||
|
||||
templates_path = Path(__file__).parent / "templates"
|
||||
env = Environment(
|
||||
loader=FileSystemLoader(templates_path), autoescape=select_autoescape()
|
||||
logger.info(
|
||||
f"Envoi du message aux numéros {SIGNAL_RECIPIENTS} de la part de "
|
||||
f"{SIGNAL_SENDER} avec pour contenu:\n\n{message}"
|
||||
)
|
||||
message_formatter = MenuMessageFormatter(env)
|
||||
|
||||
for menu_type in MENU_TYPES:
|
||||
if result_file.was_already_sent(creation_date, modification_date, menu_type):
|
||||
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)
|
||||
|
||||
result_file.write(creation_date, modification_date, menu_type)
|
||||
signal_messager.send_message(message, menu_pdf_file, SIGNAL_RECIPIENTS)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue