auto-schedule-pro-v2: add short lesson listing format to improve readability
This commit is contained in:
parent
c283414fe3
commit
c881d54a4e
|
@ -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)
|
||||||
|
|
||||||
|
if "full" in overrides and overrides["full"]:
|
||||||
total_result += load_template(template, "multiple")
|
total_result += load_template(template, "multiple")
|
||||||
for i in ['name', 'teacher', 'link']:
|
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")
|
||||||
|
@ -217,20 +243,32 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
|
||||||
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:
|
||||||
|
if "full" in overrides and overrides["full"]:
|
||||||
active_template = load_template(template, "multiple")
|
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,20 +362,21 @@ 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]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>
|
|
@ -0,0 +1 @@
|
||||||
|
<a href="%LINK%">%COLOR_CODE% %NAME%</a>
|
|
@ -0,0 +1 @@
|
||||||
|
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>
|
Loading…
Reference in New Issue