From 36793e9946b620b75981b3c2c1ee94617f6eb059 Mon Sep 17 00:00:00 2001 From: Rhinemann Date: Thu, 27 Apr 2023 11:22:25 +0300 Subject: [PATCH] Cleaning up in auto-schedule --- modules/auto-schedule-pro/index.py | 141 +++++++++++-------------- modules/auto-schedule-pro/predefine.py | 10 +- 2 files changed, 65 insertions(+), 86 deletions(-) diff --git a/modules/auto-schedule-pro/index.py b/modules/auto-schedule-pro/index.py index c82f1ae..b360a1c 100644 --- a/modules/auto-schedule-pro/index.py +++ b/modules/auto-schedule-pro/index.py @@ -6,8 +6,8 @@ class Self: def __init__(self): self.path = "" self.WEEKDAY_NAMES_ROD = ["понеділка", "вівторка", "середи", "четверга", "п'ятниці", "суботи", "неділі"] - self.WEEKDAY_NAMES_ROD_WITH_NEXT = ["наступного понеділка", "наступного вівторка", "наступної середи", "наступного четверга", "наступної п'ятниці", "наступної суботи", "наступної неділі"] - self.WEEKDAY_NAMES_ROD_WITH_THIS = ["цього понеділка", "цього вівторка", "цієї середи", "цього четверга", "цієї п'ятниці", "цієї суботи", "цієї неділі"] + self.WEEKDAYS_GENITIVE_NEXT = ["наступного понеділка", "наступного вівторка", "наступної середи", "наступного четверга", "наступної п'ятниці", "наступної суботи", "наступної неділі"] + self.WEEKDAYS_GENITIVE_THIS = ["цього понеділка", "цього вівторка", "цієї середи", "цього четверга", "цієї п'ятниці", "цієї суботи", "цієї неділі"] def readfile(path): @@ -16,16 +16,7 @@ def readfile(path): self = Self() ''' - -## code ## -if self.MESSAGE["text"].lower() == "!пара": - current_time = datetime.datetime.now() - - current_week = current_time.isocalendar()[1] % 2 - current_day = current_time.weekday() - current_seconds = current_week*604800 + current_day*86400 + current_time.hour*3600 + current_time.minute*60 + current_time.second - reference_time = int(current_time.strftime("%s")) - current_seconds - +def get_full_schedule(): # baking defined schedule raw_schedule = json.loads( readfile(self.path + "schedule.json") ) schedule = {} @@ -35,8 +26,8 @@ if self.MESSAGE["text"].lower() == "!пара": new_item = dict(raw_schedule[day][i]) new_item["source"] = "schedule" schedule[ts] = new_item - - # baking additions (extra pairs) + + # baking additions (extra lessons) raw_additions = json.loads( readfile(self.path + "additions.json") ) additions = {} for day in range(len(raw_additions)): @@ -46,41 +37,56 @@ if self.MESSAGE["text"].lower() == "!пара": new_item["source"] = "additions" schedule[ts] = new_item - full_schedule = dict(list(schedule.items()) + list(additions.items())) + result = dict(list(schedule.items()) + list(additions.items())) + return result + +## code ## +if (self.MESSAGE["text"].lower() == "!пара" or self.MESSAGE["text"].lower().split()[0] == "!пари"): + + #getting current time + current_time = datetime.datetime.now() + current_week = current_time.isocalendar()[1] % 2 + current_day = current_time.weekday() + current_seconds = current_week*604800 + current_day*86400 + current_time.hour*3600 + current_time.minute*60 + current_time.second + reference_time = int(current_time.strftime("%s")) - current_seconds + + full_schedule = get_full_schedule() + +if self.MESSAGE["text"].lower() == "!пара": print("test1") print(f"Full schedule printout: {full_schedule}") print(f"Current delta_time: {current_seconds}") p = None - next_pair_time = None + next_lesson_time = None key_list = list(full_schedule.keys()) key_list.sort() for i in key_list: if i > current_seconds - 5400: p = full_schedule[i] - next_pair_time = i + next_lesson_time = i break print("test2") - if next_pair_time == None: + if next_lesson_time == None: if len(full_schedule.keys()) > 0: print("test3.1") - actual_pair_ts = reference_time + min(full_schedule.keys()) - dt_pair = datetime.datetime.fromtimestamp(actual_pair_ts) - dt_pair_finish = datetime.datetime.fromtimestamp(actual_pair_ts + 5400) + actual_lesson_ts = reference_time + min(full_schedule.keys()) + dt_lesson = datetime.datetime.fromtimestamp(actual_lesson_ts) + dt_lesson_finish = datetime.datetime.fromtimestamp(actual_lesson_ts + 5400) p = full_schedule[min(full_schedule.keys())] print("test3.1.1") - print("{} == 6 && {} == 1, {}".format(current_day, dt_pair.strftime('%u'), str( ((current_day + 2) == int(dt_pair.strftime("%u"))) or ((str(current_day) == "6") and (dt_pair.strftime("%u") == "1")) ))) + print("{} == 6 && {} == 1, {}".format(current_day, dt_lesson.strftime('%u'), str( ((current_day + 2) == int(dt_lesson.strftime("%u"))) or ((str(current_day) == "6") and (dt_lesson.strftime("%u") == "1")) ))) human_readable_date = "" - if ((current_day + 2) == int(dt_pair.strftime("%u"))) or ((str(current_day) == "6") and (dt_pair.strftime("%u") == "1")): + if ((current_day + 2) == int(dt_lesson.strftime("%u"))) or ((str(current_day) == "6") and (dt_lesson.strftime("%u") == "1")): human_readable_date += "завтра " - elif current_week != int(dt_pair.strftime("%W")) % 2: - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_NEXT[int(dt_pair.strftime("%u")) - 1]) - elif current_day != (int(dt_pair.strftime("%u")) - 1): - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_THIS[int(dt_pair.strftime("%u")) - 1]) + elif current_week != int(dt_lesson.strftime("%W")) % 2: + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_NEXT[int(dt_lesson.strftime("%u")) - 1]) + elif current_day != (int(dt_lesson.strftime("%u")) - 1): + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_THIS[int(dt_lesson.strftime("%u")) - 1]) else: human_readable_date += "сьогодні " @@ -89,11 +95,11 @@ if self.MESSAGE["text"].lower() == "!пара": human_readable_date += "з " print("test3.1.3") - human_readable_date += dt_pair.strftime("%H:%M") + human_readable_date += dt_lesson.strftime("%H:%M") print("test3.1.4") human_readable_date += " до " - human_readable_date += dt_pair_finish.strftime("%H:%M") + human_readable_date += dt_lesson_finish.strftime("%H:%M") self.RESPONCE = "Актуальна пара: {}\nДата: {}\nВикладач: {}\nПосилання на пару: {}".format(p['name'], human_readable_date, p['teacher'], p['link']) print("test3.1.5") @@ -102,60 +108,31 @@ if self.MESSAGE["text"].lower() == "!пара": else: print("test3.2") - actual_pair_ts = reference_time + next_pair_time - dt_pair = datetime.datetime.fromtimestamp(actual_pair_ts) - dt_pair_finish = datetime.datetime.fromtimestamp(actual_pair_ts + 5400) + actual_lesson_ts = reference_time + next_lesson_time + dt_lesson = datetime.datetime.fromtimestamp(actual_lesson_ts) + dt_lesson_finish = datetime.datetime.fromtimestamp(actual_lesson_ts + 5400) human_readable_date = "" - if ((current_day + 2) == int(dt_pair.strftime("%u"))) or ((str(current_day) == "6") and (dt_pair.strftime("%u") == "1")): + if ((current_day + 2) == int(dt_lesson.strftime("%u"))) or ((str(current_day) == "6") and (dt_lesson.strftime("%u") == "1")): human_readable_date += "завтра " - elif current_week != int(dt_pair.strftime("%W")) % 2: - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_NEXT[int(dt_pair.strftime("%u")) - 1]) - elif current_day != (int(dt_pair.strftime("%u")) - 1): - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_THIS[int(dt_pair.strftime("%u")) - 1]) + elif current_week != int(dt_lesson.strftime("%W")) % 2: + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_NEXT[int(dt_lesson.strftime("%u")) - 1]) + elif current_day != (int(dt_lesson.strftime("%u")) - 1): + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_THIS[int(dt_lesson.strftime("%u")) - 1]) else: human_readable_date += "сьогодні " human_readable_date += "з " - human_readable_date += dt_pair.strftime("%H:%M") + human_readable_date += dt_lesson.strftime("%H:%M") human_readable_date += " до " - human_readable_date += dt_pair_finish.strftime("%H:%M") + human_readable_date += dt_lesson_finish.strftime("%H:%M") self.RESPONCE = "Актуальна пара: {}\nДата: {}\nВикладач: {}\nПосилання на пару: {}".format(p['name'], human_readable_date, p['teacher'], p['link']) if self.MESSAGE["text"].lower().split()[0] == "!пари": command = self.MESSAGE["text"].lower().split() - current_time = datetime.datetime.now() - - current_week = current_time.isocalendar()[1] % 2 - current_day = current_time.weekday() - current_seconds = current_week*604800 + current_day*86400 + current_time.hour*3600 + current_time.minute*60 + current_time.second - reference_time = int(current_time.strftime("%s")) - current_seconds - - # baking defined schedule - raw_schedule = json.loads( readfile(self.path + "schedule.json") ) - schedule = {} - for day in range(len(raw_schedule)): - for i in raw_schedule[day]: - ts = day*86400 + int(i.split(":")[0])*3600 + int(i.split(":")[1])*60 - new_item = dict(raw_schedule[day][i]) - new_item["source"] = "schedule" - schedule[ts] = new_item - - # baking additions (extra pairs) - raw_additions = json.loads( readfile(self.path + "additions.json") ) - additions = {} - for day in range(len(raw_additions)): - for i in raw_additions[day]: - ts = day*86400 + int(i.split(":")[0])*3600 + int(i.split(":")[1])*60 - new_item = dict(raw_additions[day][i]) - new_item["source"] = "additions" - schedule[ts] = new_item - - full_schedule = dict(list(schedule.items()) + list(additions.items())) - preferences = {"name": True, "date": True, "teacher": True, "link": True} selected_day = current_week*7 + current_day @@ -188,33 +165,33 @@ if self.MESSAGE["text"].lower().split()[0] == "!пари": elif i[0] == "-": preferences[i[1:]] = False - found_pairs = {} + found_lessons = {} for i in full_schedule: if selected_day*86400 <= i < (selected_day+1)*86400: - found_pairs[i] = dict(full_schedule[i]) + found_lessons[i] = dict(full_schedule[i]) result_text = f"Пари у {self.WEEKDAY_NAMES_ZNAH[selected_day%7]}:\n\n" - for i in found_pairs: - actual_pair_ts = reference_time + i - dt_pair = datetime.datetime.fromtimestamp(actual_pair_ts) - dt_pair_finish = datetime.datetime.fromtimestamp(actual_pair_ts + 5400) - p = found_pairs[i] + for i in found_lessons: + actual_lesson_ts = reference_time + i + dt_lesson = datetime.datetime.fromtimestamp(actual_lesson_ts) + dt_lesson_finish = datetime.datetime.fromtimestamp(actual_lesson_ts + 5400) + p = found_lessons[i] human_readable_date = "" - if ((current_day + 2) == int(dt_pair.strftime("%u"))) or ((str(current_day) == "6") and (dt_pair.strftime("%u") == "1")): + if ((current_day + 2) == int(dt_lesson.strftime("%u"))) or ((str(current_day) == "6") and (dt_lesson.strftime("%u") == "1")): human_readable_date += "завтра " - elif current_week != int(dt_pair.strftime("%W")) % 2: - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_NEXT[int(dt_pair.strftime("%u")) - 1]) - elif current_day != (int(dt_pair.strftime("%u")) - 1): - human_readable_date += "{} ".format(self.WEEKDAY_NAMES_ROD_WITH_THIS[int(dt_pair.strftime("%u")) - 1]) + elif current_week != int(dt_lesson.strftime("%W")) % 2: + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_NEXT[int(dt_lesson.strftime("%u")) - 1]) + elif current_day != (int(dt_lesson.strftime("%u")) - 1): + human_readable_date += "{} ".format(self.WEEKDAYS_GENITIVE_THIS[int(dt_lesson.strftime("%u")) - 1]) else: human_readable_date += "сьогодні " human_readable_date += "з " - human_readable_date += dt_pair.strftime("%H:%M") + human_readable_date += dt_lesson.strftime("%H:%M") human_readable_date += " до " - human_readable_date += dt_pair_finish.strftime("%H:%M") + human_readable_date += dt_lesson_finish.strftime("%H:%M") if preferences['name']: diff --git a/modules/auto-schedule-pro/predefine.py b/modules/auto-schedule-pro/predefine.py index 6092c07..c9d4242 100644 --- a/modules/auto-schedule-pro/predefine.py +++ b/modules/auto-schedule-pro/predefine.py @@ -1,4 +1,6 @@ -self.WEEKDAY_NAMES_ZNAH = ["понедулок", "вівторок", "середу", "четвер", "п'ятницю", "суботу", "неділю"] -self.WEEKDAY_NAMES_ROD_WITH_NEXT = ["наступного понеділка", "наступного вівторка", "наступної середи", "наступного четверга", "наступної п'ятниці", "наступної суботи", "наступної неділі"] -self.WEEKDAY_NAMES_ROD_WITH_THIS = ["цього понеділка", "цього вівторка", "цієї середи", "цього четверга", "цієї п'ятниці", "цієї суботи", "цієї неділі"] -self.current_seconds = 0 +# Accusative - znahidnyj +self.WEEKDAYS_ACCUSATIVE = ["понеділок", "вівторок", "середу", "четвер", "п'ятницю", "суботу", "неділю"] +# Genitive - rodovyj +self.WEEKDAYS_GENITIVE_NEXT = ["наступного понеділка", "наступного вівторка", "наступної середи", "наступного четверга", "наступної п'ятниці", "наступної суботи", "наступної неділі"] +self.WEEKDAYS_GENITIVE_THIS = ["цього понеділка", "цього вівторка", "цієї середи", "цього четверга", "цієї п'ятниці", "цієї суботи", "цієї неділі"] +self.current_seconds = 0 \ No newline at end of file