Compare commits

..

4 Commits

11 changed files with 573 additions and 31 deletions

View File

@ -9,15 +9,7 @@
},
{
},
{
"11:00": {
"name": "Курсова робота: інженерія програмного забезпечення",
"teacher": "Mr. Volodymyr",
"link": "(посилання відсутнє!)",
"type": "con",
"selectable": false
}
},
{},
{},
{
},

View File

@ -1 +0,0 @@
../auto-schedule-pro/additions.json

View File

@ -28,6 +28,13 @@ lesson_types_to_strings = {
"con": "консультація"
}
color_code_mapping = {
"lec": "🔵",
"prac": "🟡",
"lab": "🔴",
"con": "🟢"
}
# global variables
module_path = ""
@ -114,6 +121,10 @@ def load_template(template, part):
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):
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={},
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 force_date_at_top:
@ -176,33 +184,51 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
current_day, current_week)
total_result = total_result.replace("%DATE%", human_readable_date)
total_result += load_template(template, "multiple")
for i in ['name', 'teacher', 'link']:
if "full" in overrides and overrides["full"]:
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("%DATE%", human_readable_date)
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("%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:
total_result += load_template(template, "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:
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])
human_readable_date = get_human_readable_date(start_datetime, end_datetime,
current_day, current_week)
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("%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:
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:
total_result = load_template(template, "date")
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)
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("%DATE%", human_readable_date)
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("%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:
total_result += load_template(template, "comment")
total_result = total_result.replace("%COMMENT%", lesson["comment"])
active_template += load_template(template, "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
@ -324,19 +362,20 @@ def process(message, path):
if base_command in ["!пара", "!para"]:
# 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"))
until_study_day = study_begin_ts - current_ts
if -3600*4 < until_study_day < 0:
return "Навчання от-от розпочнеться!", None
elif 0 <= until_study_day < 3600*24*14:
elif 0 <= until_study_day < 3600*24*28:
return f"До навчання залишилося {until_study_day} секунд..." \
f" ({round(until_study_day/3600, 4)} годин," \
f" {round(until_study_day/3600/24, 4)} діб)", None
elif until_study_day >= 3600*24*14:
return "Ви маєте законне право відпочити, пари почнуться не скоро", None
# actual lesson finding code
upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400]

View File

@ -0,0 +1,26 @@
[
{
},
{
},
{
},
{
},
{
},
{},
{},
{
},
{
},
{
},
{
},
{
},
{},
{}
]

View File

@ -0,0 +1,484 @@
[
{
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Клименко Ірина Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Правознавство",
"teacher": "Попов Костянтин Леонідович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"16:10": [
{
"name": "Вступ до штучного інтелекту",
"teacher": "Гордієнко Юрій Григорович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування користувацьких інтерфейсів (Front-end)",
"teacher": "Алещенко Олексій Вадимович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології розроблення серверного програмного забезпечення (Back-end)",
"teacher": "Валько В. .",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": [
{
"name": "Життєвий цикл розробки програмного забезпечення",
"teacher": "Галушко Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Комп’ютерна графіка та мультимедіа",
"teacher": "Родіонов Павло Юрійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Методи та технології штучного інтелекту",
"teacher": "Шимкович Володимир Миколайович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Java",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології Computer Vision",
"teacher": "Писарчук О О",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": [
{
"name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
"teacher": "Шевело Олексій Павлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Linux",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи Front-end технологій",
"teacher": "Жереб К. А.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка мобільних застосувань під iOS",
"teacher": "Храмченко Микола Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розроблення застосунків з використанням Spring Framework",
"teacher": "Букасов Максим Михайлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технологія блокчейн",
"teacher": "Яланецький Валерій Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": {
"name": "Правознавство",
"teacher": "Тихонюк Ольга Володимирівна",
"link": "(посиланя відсутнє!)",
"type": "prac",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false,
"nolink": false
}
},
{
"8:30": [
{
"name": "Мова програмування Java",
"teacher": "Орленко С. П.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Node.JS",
"teacher": "Нечай Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системне програмування С і С++",
"teacher": "Ковальов Микола Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
"teacher": "Ковтунець Олесь Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Java",
"teacher": "Іванова Любов Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
"teacher": "Крамар Юлія Михайлівна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування на С/Embedded (Сертифікатна програма)",
"teacher": "Каплунов Артем Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{},
{},
{
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Клименко Ірина Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"16:10": [
{
"name": "Вступ до штучного інтелекту",
"teacher": "Гордієнко Юрій Григорович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування користувацьких інтерфейсів (Front-end)",
"teacher": "Алещенко Олексій Вадимович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології розроблення серверного програмного забезпечення (Back-end)",
"teacher": "Валько В. .",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": [
{
"name": "Життєвий цикл розробки програмного забезпечення",
"teacher": "Галушко Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Комп’ютерна графіка та мультимедіа",
"teacher": "Родіонов Павло Юрійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Методи та технології штучного інтелекту",
"teacher": "Шимкович Володимир Миколайович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Java",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології Computer Vision",
"teacher": "Писарчук О О",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": [
{
"name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
"teacher": "Шевело Олексій Павлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Linux",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи Front-end технологій",
"teacher": "Жереб К. А.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка мобільних застосувань під iOS",
"teacher": "Храмченко Микола Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розроблення застосунків з використанням Spring Framework",
"teacher": "Букасов Максим Михайлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технологія блокчейн",
"teacher": "Яланецький Валерій Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Каплунов Артем Володимирович",
"link": "(посиланя відсутнє!)",
"type": "lab",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посиланя відсутнє!)",
"type": "lab",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false,
"nolink": false
}
},
{
"8:30": [
{
"name": "Мова програмування Java",
"teacher": "Орленко С. П.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Node.JS",
"teacher": "Нечай Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системне програмування С і С++",
"teacher": "Ковальов Микола Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
"teacher": "Ковтунець Олесь Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Java",
"teacher": "Іванова Любов Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
"teacher": "Крамар Юлія Михайлівна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування на С/Embedded (Сертифікатна програма)",
"teacher": "Каплунов Артем Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{},
{}
]

View File

@ -1 +1 @@
schedule-v2-term4-exams.json
schedule-v2-term5.json

View File

@ -1 +0,0 @@
../auto-schedule-pro/schedule.json

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>

View File

@ -2,9 +2,9 @@
"s": "Головна сторінка сервера: http://10.1.1.1:12010/",
"ss": "Головна сторінка сервера: http://10.1.1.1:12010/",
"u": "Універсальне посилання: http://10.1.1.1:12025/?d=1",
"c": "Розклад навчального року: http://10.1.1.1:12022/generic/year-schedule.png",
"r": "Записи пар (4 семестр): http://10.1.1.1:12036/cgi/main-full.py",
"d": "Навчальні дисципліни (1-4 семестри): http://10.1.1.1:12022/generic/disciplines-terms1-4.png",
"c": "Розклад навчального року: http://10.1.1.1:12042/general/year_schedule_2024_2025.jpg",
"r": "Записи пар (5 семестр): http://10.1.1.1:12046/cgi/main-full.py",
"d": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
"d1": "Навчальні дисципліни (1-4 семестри): http://10.1.1.1:12022/generic/disciplines-terms1-4.png",
"d2": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
"h": "Стисла довідка:\n!s - головна сторінка сервера\n!u - універсальне посилання\n!r - записи пар (4 семестр)\n!c - календар навчального року\n!d - перелік навчальних дисциплін\n@all [повідомлення] - тег усіх користувачів\nПовна довідка: http://10.1.1.1:12032/generic/bot-help/short-help.html",