From 98a10b559759ece5f67a2e15d9489889df6de536 Mon Sep 17 00:00:00 2001 From: Break27 Date: Tue, 11 Aug 2026 21:48:03 +0800 Subject: [PATCH] update: bump 'common' version 0.1.20 --- main.py | 54 +++++++++++++++++++++++------------------------ requirements.txt | Bin 892 -> 892 bytes 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/main.py b/main.py index 3492dd9..5fad3d5 100644 --- a/main.py +++ b/main.py @@ -36,15 +36,15 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): unique = identity() parameters = vars(args) http = PoolManager() - sp = ServiceProvider.default() - + sp = ServiceProvider(ServiceProvider.Options()) + try: sp.set('context', lambda: { 'parameters': parameters }) driver.get(sp.run()) except Exception as e: logger.critical('Unable to load starup page', exc_info=e) return 2 - + try: driver.switch_to.new_window('tab') driver.set_page_load_timeout(parameters['timeout']) @@ -52,14 +52,14 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except TimeoutException: logger.warning('Timeout') driver.execute_script("window.stop();") - + try: setup(driver, parameters) until(lambda x: 'loginProgress' in x.find_element(By.TAG_NAME, "body").get_attribute('class'), watch=False) account = str(parameters['account']) password = str(parameters['password']) logger.info('Logging in as %s (%s)', account.split('@', 1).pop(0).capitalize(), account) - + locate("input.account").send_keys(account) locate("input#password").send_keys(password) click("input.agree-checkbox") @@ -68,7 +68,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except Exception as e: logger.critical('Unable to login to %s', parameters['url'], exc_info=e) return 3 - + while True: try: locate("#container", wait=False) @@ -78,7 +78,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): break except: sleep(3) - + while True: try: if not (buttons := driver.find_elements(By.CSS_SELECTOR, ".export-actions .okki-btn-primary")): raise ValueError() @@ -86,7 +86,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): break except: sleep(1) - + try: verified = False button = locate(".filter-actions .okki-btn-primary") @@ -96,7 +96,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except Exception as e: logger.critical("Error while setting up button listeners", exc_info=e) return 4 - + while True: try: for index in count(0): @@ -111,7 +111,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except: sleep(1) continue - + if not verified: try: locate(".safe-verify-dialog:not([style*='display: none']) .mm-modal-content .mm-modal-body input").send_keys(parameters['password']) @@ -119,7 +119,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): verified = True except: pass - + while True: try: sleep(1) @@ -128,12 +128,12 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): if (filename := cell.text) != '--': break except: pass - + try: logger.info('New task: %s', filename) download = locate(".business-export-wrap section:nth-child(3) table tbody tr:first-child td:last-child a") href = download.get_attribute('href') - + response = http.request("GET", href) text = response.data.decode(parameters['encoding']).splitlines() data = csv.reader(text) @@ -141,7 +141,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except Exception as e: logger.critical('Unable to load input data', exc_info=e) return 6 - + try: file = Path('template.xlsx').resolve() template = openpyxl.load_workbook(file) @@ -151,42 +151,42 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): except Exception as e: logger.critical('Unable to load template excel', exc_info=e) return 7 - + def preprocess(data: str): try: return float(data) except ValueError: pass - + try: return int(data) except ValueError: pass - + return data.lstrip("'") - + for row in data: for index, name in enumerate(header): names = template.defined_names if name not in names: continue - + for _, coord in names[name].destinations: value = preprocess(row[index]) source[coord] = value - + sheet = template.copy_worksheet(source) sheet.title = "COPY" logger.debug('%s', sheet.title) - + if not len(template.worksheets) > 1: logger.error('Invalid input') continue - + template.remove(source) template.save(output) - + data = base64.b64encode(output.getbuffer()) text = data.decode('ascii') mime = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' href = f"data:{mime};base64,{text}" filename = filename.replace('.csv', '.xlsx') - + driver.switch_to.new_window('tab') driver.execute_script( """ @@ -198,7 +198,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): filename, href ) - + if parameters['open']: try: path = Path(parameters['directory']) / filename @@ -206,7 +206,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): Popen(['start', str(path)], shell=True) except Exception as e: logger.warning('Unable to open exported excel file at %s', str(path), exc_info=e) - + driver.close() driver.switch_to.window(driver.window_handles[1]) logger.info('Done') @@ -217,7 +217,7 @@ if __name__ == '__main__': logger = logging.getLogger() level = logging.getLevelNamesMapping().get(args.log_level, 'INFO') logger.setLevel(level) - + opts = Options() opts.enable_downloads = True opts.add_argument('--deny-permission-prompts') diff --git a/requirements.txt b/requirements.txt index d07e2cd6788aa78cbfbf6e360df35a08402e126c..d228b5df0161a1bccc6a06baa27e1b3270317ea8 100644 GIT binary patch delta 91 zcmeyv_J?i44gVyDG=?Mw69!X;LeP