diff --git a/modules/auto-schedule-pro/schedule.json b/modules/auto-schedule-pro/schedule.json index 62ee37f..e7bb0cc 100644 --- a/modules/auto-schedule-pro/schedule.json +++ b/modules/auto-schedule-pro/schedule.json @@ -14,11 +14,11 @@ }, { "10:25": {"name": "Вища математика", "teacher": "Ординська З. П.", "link": "https://us04web.zoom.us/j/2684350438?pwd=kiOi3BrgbJHeYvkrx7qaSxa08J8m8O.1"}, - "12:20": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!"}, + "12:20": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!", "container_id": "1"}, "14:15": {"name": "Програмування. Частина 2. Об'єктно-орієнтоване програмування", "teacher": "Алещенко О. В.", "link": "https://us02web.zoom.us/j/2711546637?pwd=Ry82RHp3SjV6WTZRMXl6WUNod25hUT09"} }, { - "10:25": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!"}, + "10:25": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!", "container_id": "1"}, "12:20": {"name": "Дискретна математика", "teacher": "Пономаренко А. М.", "link": "https://us05web.zoom.us/j/7089075754?pwd=TWRlZmxyVlFiTWU1UGlVVU1XcFE0Zz09"}, "14:15": {"name": "Основи здорового способу життя", "teacher": "Соболенко А. І.", "link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09"} }, @@ -40,11 +40,11 @@ }, { "10:25": {"name": "Вища математика", "teacher": "Ординська З. П.", "link": "https://us04web.zoom.us/j/2684350438?pwd=kiOi3BrgbJHeYvkrx7qaSxa08J8m8O.1"}, - "12:20": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!"}, + "12:20": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!", "container_id": "1"}, "14:15": {"name": "Програмування. Частина 2. Об'єктно-орієнтоване програмування", "teacher": "Алещенко О. В.", "link": "https://us02web.zoom.us/j/2711546637?pwd=Ry82RHp3SjV6WTZRMXl6WUNod25hUT09"} }, { - "10:25": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!"}, + "10:25": {"name": "Фізика", "teacher": "Русаков В. Ф.", "link": "В житті не буває нічого вічного. Життя мінливе, як і посилання на кожну нову пару. Щасти вам його віднайти!", "container_id": "1"}, "12:20": {"name": "Культура мовлення та ділове мовлення", "teacher": "Кушлаба М. П.", "link": "https://bbb.comsys.kpi.ua/b/myk-0iw-red-p01"}, "14:15": {"name": "Основи здорового способу життя", "teacher": "Соболенко А. І.", "link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09"} }, diff --git a/modules/auto-schedule-pro/www/index.py b/modules/auto-schedule-pro/www/index.py index 6334373..af0a50c 100644 --- a/modules/auto-schedule-pro/www/index.py +++ b/modules/auto-schedule-pro/www/index.py @@ -1,5 +1,6 @@ import datetime import json +import os current_time = datetime.datetime.now() @@ -48,14 +49,15 @@ for i in key_list: if next_pair_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_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) 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")) ))) - + ''' human_readable_date = "" if ((current_day + 2) == int(dt_pair.strftime("%u"))) or ((str(current_day) == "6") and (dt_pair.strftime("%u") == "1")): human_readable_date += "завтра " @@ -76,16 +78,42 @@ if next_pair_time == None: human_readable_date += " до " human_readable_date += dt_pair_finish.strftime("%H:%M") + ''' #self.RESPONCE = "Актуальна пара: {}\nДата: {}\nВикладач: {}\nПосилання на пару: {}".format(p['name'], human_readable_date, p['teacher'], p['link']) #print("test3.1.5") + if 'container_id' in p: + try: + cont = json.decode(open(f"../containers/{p['container_id']}", 'r').read()) + if (time.time() - cont['update_ts']) > 43200: + if ("QUERY_STRING" in os.environ) and ("force" in os.environ['QUERY_STRING'].lower()): + print(f"Location: {cont['link']}\n\n", end = '') + else: + import random + new_seed = os.environ['REMOTE_ADDR'] + datetime.datetime.now().replace(minute = 0, second = 0).strftime("%s") + random.seed(new_seed) + surprise_pool = ["Йой!", "От халепа!", "Ой лишенько!"] + print(f"Content-Type: text/html; charset=UTF-8\n\n
Посилання на пару {p['name']}, яке зберігається у сховищі, було отримане більш ніж 12 годин тому (рівно {time.time() - cont['update_ts']} секунд тому), тому, скоріш за все, не є дійсним.
На жаль, нового посилання ще не надходило, тому Ви можете або чекати на нього і оновлювати цю сторінку (перенаправлення станеться, щойно з'явиться нове посилання), або перейти вручну за старим посиланням (не рекомендується):
{cont['link']}PS: щоб обійти цю сторінку та завжди автоматично переходити за будь-яким наявним посиланням, можна додати у рядок URL в кінці напис: ?force
") + else: + print(f"Location: {cont['link']}\n\n", end = '') + + except Exception as e: + import random + new_seed = os.environ['REMOTE_ADDR'] + datetime.datetime.now().replace(minute = 0, second = 0).strftime("%s") + random.seed(new_seed) + surprise_pool = ["Йой!", "От халепа!", "Ой лишенько!"] + print(f"Content-Type: text/html; charset=UTF-8\n\nПід час спроби отримання посилання на пару {p['name']} сталася непередбачена помилка. Ви можете оновлювати сторінку, поки проблема не зникне (перенаправлення відбудеться, щойно все запрацює), або пошукати посилання де-інде.
Вибачте за тимчасові незручності(
") + + else: + print(f"Location: {p['link'].split()[0]}\n\n", end = '') - print(f"Location: {p['link'].split()[0]}\n\n") else: - self.RESPONCE = "Пар немає взагалі. Ми вільні!" + #self.RESPONCE = "Пар немає взагалі. Ми вільні!" + pass 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) @@ -105,7 +133,33 @@ else: human_readable_date += " до " human_readable_date += dt_pair_finish.strftime("%H:%M") + ''' #self.RESPONCE = "Актуальна пара: {}\nДата: {}\nВикладач: {}\nПосилання на пару: {}".format(p['name'], human_readable_date, p['teacher'], p['link']) - print(f"Location: {p['link'].split()[0]}\n\n") + if 'container_id' in p: + try: + cont = json.decode(open(f"../containers/{p['container_id']}", 'r').read()) + if (time.time() - cont['update_ts']) > 43200: + if ("QUERY_STRING" in os.environ) and ("force" in os.environ['QUERY_STRING'].lower()): + print(f"Location: {cont['link']}\n\n", end = '') + else: + import random + new_seed = os.environ['REMOTE_ADDR'] + datetime.datetime.now().replace(minute = 0, second = 0).strftime("%s") + random.seed(new_seed) + surprise_pool = ["Йой!", "От халепа!", "Ой лишенько!"] + print(f"Content-Type: text/html; charset=UTF-8\n\nПосилання на пару {p['name']}, яке зберігається у сховищі, було отримане більш ніж 12 годин тому (рівно {time.time() - cont['update_ts']} секунд тому), тому, скоріш за все, не є дійсним.
На жаль, нового посилання ще не надходило, тому Ви можете або чекати на нього і оновлювати цю сторінку (перенаправлення станеться, щойно з'явиться нове посилання), або перейти вручну за старим посиланням (не рекомендується):
{cont['link']}PS: щоб обійти цю сторінку та завжди автоматично переходити за будь-яким наявним посиланням, можна додати у рядок URL в кінці напис: ?force
") + else: + print(f"Location: {cont['link']}\n\n", end = '') + + except Exception as e: + import random + new_seed = os.environ['REMOTE_ADDR'] + datetime.datetime.now().replace(minute = 0, second = 0).strftime("%s") + random.seed(new_seed) + surprise_pool = ["Йой!", "От халепа!", "Ой лишенько!"] + print(f"Content-Type: text/html; charset=UTF-8\n\nПід час спроби отримання посилання на пару {p['name']} сталася непередбачена помилка. Ви можете оновлювати сторінку, поки проблема не зникне (перенаправлення відбудеться, щойно все запрацює), або пошукати посилання де-інде.
Вибачте за тимчасові незручності(
") + + else: + print(f"Location: {p['link'].split()[0]}\n\n", end = '') + + #print(f"Location: {p['link'].split()[0]}\n\n")