fix: task slicing index range restraints

This commit is contained in:
2026-07-08 14:47:35 +08:00
parent 036519ca98
commit feb3020fba
2 changed files with 21 additions and 23 deletions
+17 -19
View File
@@ -347,6 +347,7 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
class MismatchedEmailSubject(Exception): pass
class MismatchedEmailAddress(Exception): pass
class Next(Exception): pass
while True:
try:
@@ -373,7 +374,7 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
progress['done'] = 0
progress['skip'] = 0
progress['omit'] = 0
progress['next'] = 0
progress['subject'] = subject
logger.info('Done')
except Cancel:
@@ -407,15 +408,17 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
logger.warning("[%d/%d] Exhausted all allowed attempts; skipping", index-1, limit-1)
raise Skip()
if index < options.get('start', 2) or progress['done'] >= options.get('limit', limit):
logger.info("[%d/%d] Not planned; skipping '%s'", index-1, limit-1, email)
progress['omit'] += 1
raise Skip()
if options.get('slice') and (start := options.get('start')) and (end := options.get('limit')):
if index < start or index > start + end:
logger.info("[%d/%d] Not planned; skipping '%s'", index-1, limit-1, email)
raise Next()
if (items := options.get('subcategories')) and (item := str(cell(index, column.region).value)) not in items:
logger.info("[%d/%d] Value '%s' not enlisted; skipping '%s'", index-1, limit-1, item, email)
raise Next()
if (sent := cell(index, column.sent).value) is not None and str(sent).strip():
logger.info("[%d/%d] Already visited; skipping '%s'", index-1, limit-1, email)
occurrence[code] += 1
progress['omit'] += 1
raise Skip()
match options.get('occurrence'):
@@ -428,11 +431,6 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
logger.info("[%d/%d] No Spam! Skipping '%s'", index-1, limit-1, email)
raise Skip()
if options.get('slice') and (sub := options.get('subcategories')):
if (value := str(cell(index, column.region).value)) not in sub:
logger.info("[%d/%d] Value '%s' not enlisted; skipping '%s'", index-1, limit-1, value, email)
raise Skip()
while mails := driver.find_elements(By.CSS_SELECTOR, "div.io-ox-mail-compose-window"):
try:
click(mails[0].find_element(By.CSS_SELECTOR, "button[data-action='close']"), wait=False)
@@ -486,8 +484,8 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
hello += ','
action.send_keys(hello).perform()
if items := iframe.find_elements(By.XPATH, f'//*[contains(text(), "{hello}")]'):
target = items[0]
if elements := iframe.find_elements(By.XPATH, f'//*[contains(text(), "{hello}")]'):
target = elements[0]
clean = target.text == hello
driver.switch_to.default_content()
@@ -523,16 +521,16 @@ def main(driver: Chrome, logger = logging.getLogger('main')):
flow.react(Wait)
click("div.io-ox-mail-compose-window button[data-action='send']")
except Skip:
progress['skip'] += 1
index += 1
attempts = 0
continue
except Cancel:
status = Status.IDLE
break
except (Next, Skip) as e:
progress[e.__class__.__name__.lower()] += 1
index += 1
attempts = 0
continue
except (MismatchedEmailAddress, MismatchedEmailSubject) as e:
logger.error('Nuh-Uh', exc_info=e)
logger.error('Input mismatched', exc_info=e)
status = Status.STANDBY
continue
except Exception as e: