auto-schedule-pro-v2: add short lesson listing format to improve readability

This commit is contained in:
dymik739 2024-08-14 15:02:51 +03:00
parent c283414fe3
commit c881d54a4e
4 changed files with 58 additions and 16 deletions

View File

@ -28,6 +28,13 @@ lesson_types_to_strings = {
"con": "консультація" "con": "консультація"
} }
color_code_mapping = {
"lec": "🔵",
"prac": "🟡",
"lab": "🔴",
"con": "🟢"
}
# global variables # global variables
module_path = "" module_path = ""
@ -114,6 +121,10 @@ def load_template(template, part):
return readfile(f"templates/{template}/{part}.msg") return readfile(f"templates/{template}/{part}.msg")
def get_color_code(lesson_type):
return color_code_mapping[lesson_type]
def escaped_string_markdownV2(input_string): def escaped_string_markdownV2(input_string):
result_string = input_string result_string = input_string
@ -165,9 +176,6 @@ def get_name_of_lesson_type(lesson_type):
def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={}, def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={},
custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False): custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False):
# temporarily not supported
#output_settings = {"name": True, "date": True, "teacher": True, "link": True, "comment": True}
#output_settings.update(overrides)
if lesson.__class__ == dict: if lesson.__class__ == dict:
if force_date_at_top: if force_date_at_top:
@ -176,33 +184,51 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
current_day, current_week) current_day, current_week)
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
total_result += load_template(template, "multiple") if "full" in overrides and overrides["full"]:
for i in ['name', 'teacher', 'link']: total_result += load_template(template, "multiple")
else:
total_result += load_template(template, "multiple-short")
for i in ['name', 'teacher']:
total_result = total_result.replace(f"%{i.upper()}%", lesson[i]) total_result = total_result.replace(f"%{i.upper()}%", lesson[i])
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
total_result = total_result.replace("%TYPE%", get_name_of_lesson_type(lesson['type'])) total_result = total_result.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
total_result = total_result.replace("%NAME_PREFIX%", custom_name_prefix) total_result = total_result.replace("%NAME_PREFIX%", custom_name_prefix)
total_result = total_result.replace("%COLOR_CODE%", get_color_code(lesson['type']))
if ('nolink' not in lesson) or (not lesson['nolink']):
total_result = total_result.replace("%LINK%", lesson['link'])
else:
total_result = total_result.replace("%LINK%", "#")
if 'comment' in lesson: if 'comment' in lesson:
total_result += load_template(template, "comment") total_result += load_template(template, "comment")
total_result = total_result.replace("%COMMENT%", lesson["comment"]) total_result = total_result.replace("%COMMENT%", lesson["comment"])
return total_result + "\n" if "full" in overrides and overrides["full"]:
total_result += "\n"
return total_result
else: else:
active_template = load_template(template, "single") active_template = load_template(template, "single")
for i in ['name', 'teacher', 'link']: for i in ['name', 'teacher']:
active_template = active_template.replace(f"%{i.upper()}%", lesson[i]) active_template = active_template.replace(f"%{i.upper()}%", lesson[i])
human_readable_date = get_human_readable_date(start_datetime, end_datetime, human_readable_date = get_human_readable_date(start_datetime, end_datetime,
current_day, current_week) current_day, current_week)
active_template = active_template.replace("%DATE%", human_readable_date) active_template = active_template.replace("%DATE%", human_readable_date)
active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type'])) active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix) active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
active_template = active_template.replace("%COLOR_CODE%", get_color_code(lesson['type']))
if ('nolink' not in lesson) or (not lesson['nolink']):
active_template = active_template.replace("%LINK%", lesson['link'])
else:
active_template = active_template.replace("%LINK%", "#")
if 'comment' in lesson: if 'comment' in lesson:
active_template += load_template(template, "comment") active_template += load_template(template, "comment")
@ -213,24 +239,36 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
elif lesson.__class__ == list: elif lesson.__class__ == list:
total_result = load_template(template, "date") total_result = load_template(template, "date")
human_readable_date = get_human_readable_date(start_datetime, end_datetime, human_readable_date = get_human_readable_date(start_datetime, end_datetime,
current_day, current_week) current_day, current_week)
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
for l in lesson: for l in lesson:
active_template = load_template(template, "multiple") if "full" in overrides and overrides["full"]:
active_template = load_template(template, "multiple")
else:
active_template = load_template(template, "multiple-short")
for i in ['name', 'teacher', 'link']: for i in ['name', 'teacher']:
active_template = active_template.replace(f"%{i.upper()}%", l[i]) active_template = active_template.replace(f"%{i.upper()}%", l[i])
active_template = active_template.replace("%DATE%", human_readable_date) active_template = active_template.replace("%DATE%", human_readable_date)
active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(l['type'])) active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(l['type']))
active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix) active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
active_template = active_template.replace("%COLOR_CODE%", get_color_code(l['type']))
if ('nolink' not in lesson) or (not lesson['nolink']):
active_template = active_template.replace("%LINK%", l['link'])
else:
active_template = active_template.replace("%LINK%", "#")
if 'comment' in lesson: if 'comment' in lesson:
total_result += load_template(template, "comment") active_template += load_template(template, "comment")
total_result = total_result.replace("%COMMENT%", lesson["comment"]) active_template = active_template.replace("%COMMENT%", lesson["comment"])
total_result += active_template + "\n" if "full" in overrides and overrides["full"]:
active_template += "\n"
total_result += active_template
return total_result return total_result
@ -324,19 +362,20 @@ def process(message, path):
if base_command in ["!пара", "!para"]: if base_command in ["!пара", "!para"]:
# easter egg # easter egg
study_begin_ts = int(datetime(year=2024, month=2, day=5).strftime("%s")) study_begin_ts = int(datetime(year=2024, month=9, day=2).strftime("%s"))
current_ts = int(datetime.now().strftime("%s")) current_ts = int(datetime.now().strftime("%s"))
until_study_day = study_begin_ts - current_ts until_study_day = study_begin_ts - current_ts
if -3600*4 < until_study_day < 0: if -3600*4 < until_study_day < 0:
return "Навчання от-от розпочнеться!", None return "Навчання от-от розпочнеться!", None
elif 0 <= until_study_day < 3600*24*14: elif 0 <= until_study_day < 3600*24*28:
return f"До навчання залишилося {until_study_day} секунд..." \ return f"До навчання залишилося {until_study_day} секунд..." \
f" ({round(until_study_day/3600, 4)} годин," \ f" ({round(until_study_day/3600, 4)} годин," \
f" {round(until_study_day/3600/24, 4)} діб)", None f" {round(until_study_day/3600/24, 4)} діб)", None
elif until_study_day >= 3600*24*14: elif until_study_day >= 3600*24*14:
return "Ви маєте законне право відпочити, пари почнуться не скоро", None return "Ви маєте законне право відпочити, пари почнуться не скоро", None
# actual lesson finding code # actual lesson finding code
upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400] upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400]

View File

@ -0,0 +1 @@
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>

View File

@ -0,0 +1 @@
<a href="%LINK%">%COLOR_CODE% %NAME%</a>

View File

@ -0,0 +1 @@
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>