latecomers/latecomers/main.py

49 lines
1.2 KiB
Python

# -*- encoding: utf-8 -*-
import logging
import sys
import typing as T
from latecomers.retrieve import retrieve_from_inst, retrieve_from_fr24
from latecomers.parse import find_table, get_details, Details, parse_fr24
from latecomers.serializer import to_excel
from latecomers.notifier import Notifier
from latecomers.config import Config
logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s] %(levelname)s - %(message)s",
datefmt="%H:%M:%S",
)
logger = logging.getLogger(__name__)
def main(config: Config):
"""
The main cli entrypoint.
"""
out = Notifier(**config.smtp)
body = retrieve_from_inst()
table = find_table(body)
fr24_data = retrieve_from_fr24()
aux_data = parse_fr24(fr24_data)
data: T.List[Details] = []
for row in table:
data.append(get_details(row, aux_data))
if not data:
out.send_no_data(config.to)
excel = to_excel(data)
out.send_result(config.to, excel)
def cli():
if len(sys.argv) < 2:
logger.error(f"Missing arguments: {sys.argv[0]} <config_path>")
sys.exit(4)
config_path = sys.argv[1]
config = Config(config_path)
main(config)