fix infinity cycle

This commit is contained in:
2025-09-12 20:25:12 +03:00
parent ed65e5b483
commit 4484148e8a
2 changed files with 13 additions and 1 deletions

View File

@@ -94,7 +94,11 @@ def process_excel_file(facultet, excel_url, counter, timeid):
excel_info['stat']['cycles'] += 1 excel_info['stat']['cycles'] += 1
print(f"Parsing sheet №{reader.get_sheet_index()+1} (from 1)") print(f"Parsing sheet №{reader.get_sheet_index()+1} (from 1)")
prs = parser.Parser(reader) prs = parser.Parser(reader)
print("Parser created; parser.parse();")
prs.parse() prs.parse()
print("parsed done!")
if prs.parser_error is not None: if prs.parser_error is not None:
excel_info["parser_error_cycle_" + excel_info['stat']['cycles']] = prs.parser_error excel_info["parser_error_cycle_" + excel_info['stat']['cycles']] = prs.parser_error

View File

@@ -79,6 +79,7 @@ class Parser:
previous_pair = None previous_pair = None
while row < self.reader.get_row_count(): # maybe условие чтобы не уйти ниже чем есть строк while row < self.reader.get_row_count(): # maybe условие чтобы не уйти ниже чем есть строк
pos = Coord(row, group['position'][1]) # текущая позиция, верхний левый угол (=low) pos = Coord(row, group['position'][1]) # текущая позиция, верхний левый угол (=low)
pprint(f"while pos={pos}")
pos_right = pos.shift(right=3) pos_right = pos.shift(right=3)
pair_pos = pos.replace(col=5) pair_pos = pos.replace(col=5)
weekday_pos = pos.replace(col=4) weekday_pos = pos.replace(col=4)
@@ -123,15 +124,20 @@ class Parser:
parsed_location = None parsed_location = None
parsed_leader = None parsed_leader = None
pairs = 1 pairs = 1
wtf_tomanypairs = False
is_solid = pos_right in merged is_solid = pos_right in merged
parsed_uncotigorized = [] parsed_uncotigorized = []
is_wide_maybe_potokoviy = merged.width() > 4 # потоковая ли лекция (занимает несколько групп.) is_wide_maybe_potokoviy = merged.width() > 4 # потоковая ли лекция (занимает несколько групп.)
if not is_empty_lesson: if not is_empty_lesson:
cur = merged.low.shift(down=2) cur = pos.shift(down=2)
while utils.has_no_bottom_border(self.reader, cur): while utils.has_no_bottom_border(self.reader, cur):
next += 3 next += 3
pairs += 1 pairs += 1
pprint(f"next = {next} cur={cur}")
if pairs >= 7:
wtf_tomanypairs = True
break
cur = cur.shift(down=3) cur = cur.shift(down=3)
if is_wide_maybe_potokoviy: if is_wide_maybe_potokoviy:
@@ -202,6 +208,8 @@ class Parser:
"restoted": pair != "", "restoted": pair != "",
"pair": pair "pair": pair
} }
if wtf_tomanypairs:
today[pair]['to_many_parsing_time_coeff'] = True
# INCREMENT на next и конец цикла. # INCREMENT на next и конец цикла.