Compare commits

...

6 Commits

4 changed files with 307 additions and 10 deletions
+236 -2
View File
@@ -1,26 +1,260 @@
[
{
"8:30": [
{
"name": "Інженерна комп'ютерна графіка",
"teacher": "Поліщук Михайло Миколайович",
"link": "https://us04web.zoom.us/j/76419131688?pwd=1gscv0fpodeI0euCfTOx8IpNEKNAw3.1",
"type": "lec",
"selectable": true,
"nolink": false
},
{
"name": "Основи WEB – технологій",
"teacher": "Голубєв Леонтій Петрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи комп’ютерного моделювання",
"teacher": "Селіванов Віктор Левович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системи управління мережами",
"teacher": "Жураковський Богдан Юрійович",
"link": "https://us02web.zoom.us/j/6838661216?pwd=dGNFdW5XTjBuTjFvRVZIMyt3NDRhQT09&omn=88335799321",
"type": "lec",
"selectable": true,
"nolink": false
},
{
"name": "Системи цифрової обробки сигналів і зображень",
"teacher": "Сергієнко Анатолій Михайлович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Створення інформаційних систем (ІС) на базі Low-code платформ",
"teacher": "Новінський Валерій Петрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Ткаченко Валентина Василівна",
"link": "",
"type": "lec",
"selectable": false,
"nolink": true
},
{
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Клименко Ірина Анатоліївна",
"link": "https://us02web.zoom.us/j/5274433531?pwd=L5kbH2aNdFh4Xn4jhtbXG5AZnFKS6T.1",
"type": "lec",
"selectable": true,
"nolink": false
}
],
"12:20": [
{
"name": "Аналіз та обробка часових рядів (Time Series) (Сертифікатна програма Data Science із Sigma Software)",
"teacher": "Писарчук Олексій Олександрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Кібербезпека комп'ютерних мереж",
"teacher": "Миронов Дмитро Вікторович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Проектування вбудованих систем",
"teacher": "Гордієнко Нікіта Юрійович",
"link": "https://meet.google.com/whi-yxhv-hbq",
"type": "lec",
"selectable": true,
"nolink": false
},
{
"name": "Протоколи і алгоритми електронного голосування",
"teacher": "Полторак Вадим Петрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розроблення VR/AR застосунків",
"teacher": "Амонс Олександр Анатолійович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології інтернет речей",
"teacher": "Жураковський Богдан Юрійович",
"link": "https://us02web.zoom.us/j/6838661216?pwd=dGNFdW5XTjBuTjFvRVZIMyt3NDRhQT09&omn=83508513398",
"type": "lec",
"selectable": true,
"nolink": false
}
],
"19:00": {
"name": "Програмні засоби проектування та реалізації нейромережевих систем",
"teacher": "Фещенко Кирило Юрійович",
"link": "https://meet.google.com/erg-hgic-ptm",
"type": "lab",
"selectable": true,
"nolink": false
}
},
{
},
{
},
{
"19:00": {
"name": "Програмні засоби проектування та реалізації нейромережевих систем",
"teacher": "Фещенко Кирило Юрійович",
"link": "https://meet.google.com/bak-uezz-xtz",
"type": "lab",
"selectable": true,
"nolink": false
}
},
{
},
{
"10:25": {
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Міщенко Людмила Дмитрівна",
"link": "https://bbb.comsys.kpi.ua/rooms/ioe-vhb-yvu-axj/join",
"type": "lab",
"selectable": true,
"nolink": false
}
},
{},
{},
{
"8:30": [
{
"name": "Інженерна комп'ютерна графіка",
"teacher": "Поліщук Михайло Миколайович",
"link": "https://us04web.zoom.us/j/76419131688?pwd=1gscv0fpodeI0euCfTOx8IpNEKNAw3.1",
"type": "lec",
"selectable": true,
"nolink": false
},
{
"name": "Основи WEB – технологій",
"teacher": "Голубєв Леонтій Петрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи комп’ютерного моделювання",
"teacher": "Селіванов Віктор Левович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системи управління мережами",
"teacher": "Жураковський Богдан Юрійович",
"link": "https://us02web.zoom.us/j/6838661216?pwd=dGNFdW5XTjBuTjFvRVZIMyt3NDRhQT09&omn=88335799321",
"type": "lec",
"selectable": true,
"nolink": false
},
{
"name": "Системи цифрової обробки сигналів і зображень",
"teacher": "Сергієнко Анатолій Михайлович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Створення інформаційних систем (ІС) на базі Low-code платформ",
"teacher": "Новінський Валерій Петрович",
"link": "",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Ткаченко Валентина Василівна",
"link": "",
"type": "lec",
"selectable": false,
"nolink": true
},
{
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Клименко Ірина Анатоліївна",
"link": "https://us02web.zoom.us/j/5274433531?pwd=L5kbH2aNdFh4Xn4jhtbXG5AZnFKS6T.1",
"type": "lec",
"selectable": true,
"nolink": false
}
]
},
{
},
{
"16:10": {
"name": "Тестування та контроль якості (QA) вбудованих систем (Сертифікатна програма ESI&IoT з компанією Global Logic)",
"teacher": "Міщенко Людмила Дмитрівна",
"link": "https://bbb.comsys.kpi.ua/rooms/ioe-vhb-yvu-axj/join",
"type": "lab",
"selectable": true,
"nolink": false
}
},
{
"19:00": {
"name": "Програмні засоби проектування та реалізації нейромережевих систем",
"teacher": "Фещенко Кирило Юрійович",
"link": "https://meet.google.com/pdv-vsbe-gcb",
"type": "lab",
"selectable": true,
"nolink": false
}
},
{
},
{
"12:20": {
"name": "Бакалаврат",
"teacher": "Сімоненко Андрій ",
"link": "https://bbb.comsys.kpi.ua/rooms/and-722-eja/join",
"type": "con",
"selectable": false,
"nolink": false
}
},
{},
{}
]
@@ -1,9 +1,10 @@
import json
import sys
if len(sys.argv) != 2:
if not (2 <= len(sys.argv) <= 3):
sys.exit(1)
existing_lesson_pool = []
class Lesson:
def __init__(self):
@@ -12,13 +13,26 @@ class Lesson:
def read_from_schedule_pair(self, p):
self.time = p["time"].rsplit(':', 1)[0]
self.name = p["name"]
self.teacher = p["teacherName"]
self.teacher = p["lecturer"]["name"]
self.type = p["tag"]
self.selectable = False
self.link = ""
self.nolink = True
return self
def read_from_internal_schedule(self, time, p):
self.time = time
self.name = p["name"]
self.teacher = p["teacher"]
self.type = p["type"]
self.selectable = p["selectable"]
self.link = p["link"]
self.nolink = p["nolink"]
return self
def get_packable_object(self):
return {
"name": self.name,
@@ -30,12 +44,51 @@ class Lesson:
}
def get_link_for_lesson_from_pool(pool, lesson):
return tuple(set([
i.link for i in pool
if lesson.name == i.name
and lesson.teacher == i.teacher
and i.link
]))
def get_selectable_for_lesson_from_pool(pool, lesson):
return tuple(set([
i.selectable for i in pool
if lesson.name == i.name
and lesson.teacher == i.teacher
]))
def day_to_lesson_pool(pairs):
pool = []
for p in pairs:
l = Lesson()
l.read_from_schedule_pair(p)
existing_link = get_link_for_lesson_from_pool(existing_lesson_pool, l)
if len(existing_link) == 0:
pass
elif len(existing_link) == 1:
l.link = existing_link[0]
l.nolink = False
print(f"Recovered link for {l.name} by {l.teacher}, link:\n{l.link}", file = sys.stderr)
else:
print(f"Recovered multiple links for {l.name} by {l.teacher}, listing:", file = sys.stderr)
for i, old_link in enumerate(existing_link):
print(f"({i}) {old_link}")
existing_selectable = get_selectable_for_lesson_from_pool(existing_lesson_pool, l)
if len(existing_selectable) == 0:
pass
elif len(existing_selectable) == 1:
l.selectable = existing_selectable[0]
print(f"Recovered selectable for {l.name} by {l.teacher}: {l.selectable}", file = sys.stderr)
else:
print(f"Recovered variating selectable for {l.name} by {l.teacher}", file = sys.stderr)
pool.append(l)
return pool
@@ -54,7 +107,7 @@ def lesson_pool_to_objs(pool):
for i in times:
lesson_timestamp = f"{i[0]:02}:{i[1]:02}"
required_timestamp = f"{i[0]}:{i[1]}"
required_timestamp = f"{i[0]}:{i[1]:02}"
objs_dup = (j.get_packable_object() for j in pool if j.time == lesson_timestamp)
objs = []
@@ -76,15 +129,25 @@ def lesson_pool_to_objs(pool):
def process_week(week):
result = []
for weekday in ["Пн", "Вв", "Ср", "Чт", "Пт"]:
for weekday in ["Пн", "Вв", "Ср", "Чт", "Пт", "Сб"]:
day_pool = day_to_lesson_pool(next(filter(lambda l: l['day'] == weekday, week))['pairs'])
result.append(lesson_pool_to_objs(day_pool))
result.append({})
result.append({})
return result
def global_lesson_pool_from_packed(p):
for i in p:
for k, v in i.items():
if v.__class__ == list:
for j in v:
existing_lesson_pool.append(Lesson().read_from_internal_schedule(k, j))
else:
existing_lesson_pool.append(Lesson().read_from_internal_schedule(k, v))
if len(sys.argv) == 3:
global_lesson_pool_from_packed(json.load(open(sys.argv[2], 'r')))
ext_schedule = json.load(open(sys.argv[1], 'r'))
+1 -1
View File
@@ -403,7 +403,7 @@ def process(message, path):
if base_command in ["!пара", "!para"]:
# easter egg
study_begin_ts = int(datetime(year=2025, month=9, day=1).strftime("%s"))
study_begin_ts = int(datetime(year=2026, month=2, day=2).strftime("%s"))
current_ts = int(datetime.now().strftime("%s"))
until_study_day = study_begin_ts - current_ts
+2 -2
View File
@@ -2,8 +2,8 @@
"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:12062/generic/4year-schedule.jpg",
"r": "Записи пар (7 семестр): http://10.1.1.1:12066/cgi/main-full.py",
"c": "Розклад навчального року: http://kpi.ua/year",
"r": "Записи пар (8 семестр): http://10.1.1.1:12076/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",