1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
import argparse
import datetime
import logging
import os
import zoneinfo
from configparser import ConfigParser
from .const import *
logger = logging.getLogger(__name__)
def main() -> None:
logging.basicConfig(level=logging.INFO)
parser = argparse.ArgumentParser(
prog="sjdbmk",
description="Songjiang Daily Bulletin Build System",
)
parser.add_argument(
"--config",
default="config.ini", # TODO
help="path to the configuration file",
)
parser.add_argument(
"--rebuild",
action="store_true",
default=False,
help="rebuild from scratch",
)
parser.add_argument(
"--date",
default="",
help="build for date",
)
args = parser.parse_args()
config = ConfigParser()
config.read(args.config)
tzinfo = zoneinfo.ZoneInfo(config["general"]["timezone"])
if args.date:
datetime_target_naive = datetime.datetime.strptime(args.date, "%Y-%m-%d")
datetime_target = datetime_target_naive.replace(tzinfo=tzinfo)
else:
datetime_current_aware = datetime.datetime.now(tz=tzinfo)
datetime_target = datetime_current_aware + datetime.timedelta(days=((-datetime_current_aware.weekday()) % 7))
logger.info("Building for %s" % datetime_target.strftime("%Y-%m-%d %Z"))
build_path = config["general"]["build_path"]
os.chdir(build_path)
the_week_ahead_url = config["the_week_ahead"]["file_url"]
the_week_ahead_community_time_page_number = int(config["the_week_ahead"]["community_time_page_number"])
the_week_ahead_aod_page_number = int(config["the_week_ahead"]["aod_page_number"])
weekly_menu_query_string = config["weekly_menu"]["query_string"]
weekly_menu_sender = config["weekly_menu"]["sender"]
weekly_menu_subject_regex = config["weekly_menu"]["subject_regex"]
weekly_menu_subject_regex_four_groups_raw = config["weekly_menu"]["subject_regex_four_groups"].split(" ")
weekly_menu_subject_regex_four_groups = tuple([int(z) for z in weekly_menu_subject_regex_four_groups_raw])
assert len(weekly_menu_subject_regex_four_groups) == 4
del weekly_menu_subject_regex_four_groups_raw
graph_client_id = config["credentials"]["client_id"]
graph_authority = config["credentials"]["authority"]
graph_username = config["credentials"]["username"]
graph_password = config["credentials"]["password"]
graph_scopes = config["credentials"]["scope"].split(" ")
calendar_address = config["calendar"]["address"]
generate(
datetime_target=datetime_target,
the_week_ahead_url=the_week_ahead_url,
the_week_ahead_community_time_page_number=the_week_ahead_community_time_page_number,
the_week_ahead_aod_page_number=the_week_ahead_aod_page_number,
weekly_menu_query_string=weekly_menu_query_string,
weekly_menu_sender=weekly_menu_sender,
weekly_menu_subject_regex=weekly_menu_subject_regex,
weekly_menu_subject_regex_four_groups=weekly_menu_subject_regex_four_groups,
graph_client_id=graph_client_id,
graph_authority=graph_authority,
graph_username=graph_username,
graph_password=graph_password,
graph_scopes=graph_scopes,
calendar_address=calendar_address,
)
|