79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
import base64
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
import requests
|
|
from dotenv import load_dotenv
|
|
from pdfminer.high_level import extract_text
|
|
|
|
from config import (
|
|
MENU_CRECHE_PDF_URL,
|
|
MENU_TYPE,
|
|
SIGNAL_SENDER,
|
|
SIGNAL_RECIPIENTS,
|
|
SIGNAL_API_URL,
|
|
)
|
|
from menus import Menus, MenuMessageFormatter
|
|
from message_sender import SignalMessager
|
|
from pdf_downloader import download
|
|
|
|
load_dotenv()
|
|
|
|
def send_signal_message(
|
|
days: list[str], menu: dict[str, dict[str, str]], menu_pdf_file: Path
|
|
) -> None:
|
|
headers = {"Content-Type": "application/json"}
|
|
message = f"""
|
|
**Menu de la crèche** (message automatique)
|
|
|
|
Menu {MENU_TYPE}:
|
|
|
|
{days[0].upper()}:
|
|
*Midi*: {menu[days[0]]["midi"]}
|
|
*Goûter*: {menu[days[0]]["gouter"]}
|
|
|
|
{days[1].upper()}:
|
|
*Midi*: {menu[days[1]]["midi"]}
|
|
*Goûter*: {menu[days[1]]["gouter"]}
|
|
|
|
{days[2].upper()}:
|
|
*Midi*: {menu[days[2]]["midi"]}
|
|
*Goûter*: {menu[days[2]]["gouter"]}
|
|
|
|
{days[3].upper()}:
|
|
*Midi*: {menu[days[3]]["midi"]}
|
|
*Goûter*: {menu[days[3]]["gouter"]}
|
|
|
|
{days[4].upper()}:
|
|
*Midi*: {menu[days[4]]["midi"]}
|
|
*Goûter*: {menu[days[4]]["gouter"]}
|
|
"""
|
|
text_mode = "styled"
|
|
attachment = base64.b64encode(menu_pdf_file.read_bytes())
|
|
body = {
|
|
"message": message,
|
|
"text_mode": text_mode,
|
|
"number": SIGNAL_SENDER,
|
|
"recipients": SIGNAL_RECIPIENTS,
|
|
"base64_attachments": [
|
|
f"data:application/pdf;filename=menu.pdf;base64,{attachment.decode()}"
|
|
],
|
|
}
|
|
|
|
requests.post(SIGNAL_API_URL, headers=headers, json=body)
|
|
|
|
|
|
def main():
|
|
menu_pdf_file = download(MENU_CRECHE_PDF_URL, file_name="menu.pdf")
|
|
|
|
menus = Menus(menu_pdf_file)
|
|
|
|
message_formatter = MenuMessageFormatter()
|
|
message = message_formatter.create_message(menus, MENU_TYPE)
|
|
|
|
signal_messager = SignalMessager(SIGNAL_API_URL, SIGNAL_SENDER)
|
|
signal_messager.send_message(message, menu_pdf_file, SIGNAL_RECIPIENTS)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|