import datetime import json import time import os 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( open("../schedule.json").read() ) 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( open("../additions.json").read() ) 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())) #print("test1") #print(f"Full schedule #printout: {full_schedule}") #print(f"Current delta_time: {current_seconds}") p = None next_pair_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 break #print("test2") 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) 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 += "завтра " 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]) else: human_readable_date += "сьогодні " #print("test3.1.2") human_readable_date += "з " #print("test3.1.3") human_readable_date += dt_pair.strftime("%H:%M") #print("test3.1.4") 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.loads(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

{random.choice(surprise_pool)}


Посилання на пару {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

{random.choice(surprise_pool)}


Під час спроби отримання посилання на пару {p['name']} сталася непередбачена помилка. Ви можете оновлювати сторінку, поки проблема не зникне (перенаправлення відбудеться, щойно все запрацює), або пошукати посилання де-інде.

Вибачте за тимчасові незручності(

(технічна інформація про помилку: {e}

") else: print(f"Location: {p['link'].split()[0]}\n\n", end = '') else: #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) 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 += "завтра " 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]) else: human_readable_date += "сьогодні " human_readable_date += "з " human_readable_date += dt_pair.strftime("%H:%M") 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']) if 'container_id' in p: try: cont = json.loads(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

{random.choice(surprise_pool)}


Посилання на пару {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

{random.choice(surprise_pool)}


Під час спроби отримання посилання на пару {p['name']} сталася непередбачена помилка. Ви можете оновлювати сторінку, поки проблема не зникне (перенаправлення відбудеться, щойно все запрацює), або пошукати посилання де-інде.

Вибачте за тимчасові незручності(

(технічна інформація про помилку: {e}

") else: print(f"Location: {p['link'].split()[0]}\n\n", end = '') #print(f"Location: {p['link'].split()[0]}\n\n")