update: better exception handling
This commit is contained in:
17
index.html
17
index.html
@@ -400,12 +400,23 @@ $$$('#subcategory', 'change', (e) => {
|
||||
});
|
||||
|
||||
$$$('#chunk_size', 'change', (e) => {
|
||||
let limit = $('#subcategory').disabled ? Limit : Number(subcategory.dataset.limit);
|
||||
let limit = Number($('#subcategory').dataset.limit) || Limit;
|
||||
let size = Math.floor(limit / e.target.value);
|
||||
|
||||
$('#limit').value = size;
|
||||
$('#offset').max = size;
|
||||
$('#offset').value = 0;
|
||||
$('#offset').dispatchEvent(new Event('change'));
|
||||
});
|
||||
|
||||
$$$('#offset', 'change', (e) => {
|
||||
let limit = Number($('#subcategory').dataset.limit) || Limit;
|
||||
let size = Number($('#chunk_size').value) || 0;
|
||||
|
||||
if ($('#slice').checked) {
|
||||
limit = Math.min(size, limit - size * Number(e.target.value));
|
||||
}
|
||||
e.target.dataset.limit = limit;
|
||||
});
|
||||
|
||||
function main(url, parameters, locales) {
|
||||
@@ -523,10 +534,10 @@ function main(url, parameters, locales) {
|
||||
|
||||
if (Status === 'RUNNING') {
|
||||
let index = Number($('#progressLabel').dataset.index) || 0;
|
||||
let limit = Number($('#subcategory').dataset.limit) || Limit;
|
||||
let limit = Number($('#offset').dataset.limit) || 0;
|
||||
|
||||
let percentage = parseFloat((index / limit * 100).toFixed(2));
|
||||
$('#progressLabel').innerText = `${index} / ${limit} (${percentage} %)`;
|
||||
|
||||
let uptime = Timer.getTimedelta();
|
||||
$('#uptimeLabel').innerText = uptime.format("HH:mm:ss");
|
||||
|
||||
|
||||
34
main.py
34
main.py
@@ -10,7 +10,7 @@ import re
|
||||
import trio
|
||||
import trio_websocket as ws
|
||||
|
||||
from selenium.common.exceptions import StaleElementReferenceException, TimeoutException
|
||||
from selenium.common.exceptions import StaleElementReferenceException, TimeoutException, InvalidSessionIdException
|
||||
from selenium.webdriver import Chrome, ChromeOptions
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.by import By
|
||||
@@ -22,7 +22,7 @@ from selenium.webdriver.remote.webdriver import WebDriver
|
||||
|
||||
from io import BytesIO
|
||||
from enum import Enum
|
||||
from queue import Queue, Empty
|
||||
from queue import Queue, Empty, ShutDown
|
||||
from wakepy import keep
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timedelta
|
||||
@@ -30,18 +30,18 @@ from zoneinfo import ZoneInfo
|
||||
from threading import Thread
|
||||
from nameparser import HumanName
|
||||
|
||||
parser = argparse.ArgumentParser(description="邮件批量发送脚本")
|
||||
parser = argparse.ArgumentParser(description="Bulk Email Sending")
|
||||
parser.add_argument('url', nargs='?', default='https://id.ionos.fr/identifier')
|
||||
parser.add_argument('--column-address', type=str, nargs='?', default='邮箱')
|
||||
parser.add_argument('--column-name', type=str, nargs='?', default='主要联系人')
|
||||
parser.add_argument('--column-code', type=str, nargs='?', default='客户编号')
|
||||
parser.add_argument('--column-pays', type=str, nargs='?', default='国家地区')
|
||||
parser.add_argument('--column-sent', type=str, nargs='?', default='已发送')
|
||||
parser.add_argument('-a', '--address', type=str, nargs='?')
|
||||
parser.add_argument('-p', '--password', type=str, nargs='?')
|
||||
parser.add_argument('-t', '--timeout', type=int, nargs='?', default=60)
|
||||
parser.add_argument('-i', '--interval', type=int, nargs='?', default=10)
|
||||
parser.add_argument('-r', '--attempts', type=int, nargs='?', default=3)
|
||||
parser.add_argument('--column-address', type=str, default='邮箱')
|
||||
parser.add_argument('--column-name', type=str, default='主要联系人')
|
||||
parser.add_argument('--column-code', type=str, default='客户编号')
|
||||
parser.add_argument('--column-pays', type=str, default='国家地区')
|
||||
parser.add_argument('--column-sent', type=str, default='已发送')
|
||||
parser.add_argument('-a', '--address', type=str)
|
||||
parser.add_argument('-p', '--password', type=str)
|
||||
parser.add_argument('-t', '--timeout', type=int, default=60)
|
||||
parser.add_argument('-i', '--interval', type=int, default=10)
|
||||
parser.add_argument('-r', '--attempts', type=int, default=3)
|
||||
|
||||
args = parser.parse_args()
|
||||
inbox, outbox = Queue(), Queue()
|
||||
@@ -333,6 +333,7 @@ def main(driver: WebDriver):
|
||||
cursor = 0
|
||||
status = Status.ACTIVE
|
||||
occurrences = {}
|
||||
request = None
|
||||
sent = 0
|
||||
errors = 0
|
||||
warnings = 0
|
||||
@@ -475,8 +476,8 @@ def main(driver: WebDriver):
|
||||
break
|
||||
except Faillable as o:
|
||||
request = o.request
|
||||
except KeyboardInterrupt:
|
||||
tell('程序中断', level=1)
|
||||
except (KeyboardInterrupt, ShutDown, InvalidSessionIdException) as e:
|
||||
tell('程序中断', e, level=1)
|
||||
status = Status.TERMINATED
|
||||
break
|
||||
except Exception as e:
|
||||
@@ -572,9 +573,6 @@ if __name__ == '__main__':
|
||||
opts.add_experimental_option("excludeSwitches", ["enable-logging"])
|
||||
driver = Chrome(opts)
|
||||
status = main(driver)
|
||||
except KeyboardInterrupt:
|
||||
tell('程序中断', level=1)
|
||||
status = 145
|
||||
except Exception as e:
|
||||
tell('致命错误', e, level=0)
|
||||
status = 1
|
||||
|
||||
Reference in New Issue
Block a user