From d5484492b1863a846d97c2a403af3df757997a9b Mon Sep 17 00:00:00 2001 From: Abdussamet Kocak Date: Mon, 20 Feb 2023 15:33:08 +0100 Subject: [PATCH] fix(berlin/immigration): prevent crashes on due to page.pause() --- berlin_immigration.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/berlin_immigration.py b/berlin_immigration.py index 253a0ba..53afe37 100644 --- a/berlin_immigration.py +++ b/berlin_immigration.py @@ -38,6 +38,7 @@ def alert(text: str): dump_dir = Path('~/Desktop').expanduser() / 'immigration' dump_dir.mkdir(parents=True, exist_ok=True) + async def check_slots(page: Page, retry_count: int = 1) -> list[datetime.datetime]: await page.add_init_script('''Object.defineProperty(navigator, 'webdriver', { get: () => false })''') window_id = random.randint(1000, 9999) @@ -96,13 +97,24 @@ async def check_slots(page: Page, retry_count: int = 1) -> list[datetime.datetim continue if 'st=3' in page.url: - alert('empty slot found') + dates = [] + for el in await page.query_selector_all('.ui-datepicker-calendar td:not(.ui-datepicker-unselectable)'): + dates.append( + datetime.date( + year=int(await el.get_attribute('data-year')), + month=int(await el.get_attribute('data-month')), + day=int(await el.inner_text()), + ) + ) + + alert("\n".join(['empty slots found', *[it.isoformat() for it in dates]])) + now = int(datetime.datetime.now().timestamp()) html_path = dump_dir / f'immigration_{now}.html' html_path.write_text(await page.content()) - await page.screenshot(path=dump_dir/f'immigration_{now}.png') + await page.screenshot(path=dump_dir / f'immigration_{now}.png') - await page.pause() + input() input() @@ -112,9 +124,7 @@ def parse_args(): arger.add_argument( '--headless', '--silent', '--quiet', action='store_true', dest='headless', help='Run in headless mode' ) - arger.add_argument( - '--retry-count', '--retry', type=int, default=1, help='Run in headless mode' - ) + arger.add_argument('--retry-count', '--retry', type=int, default=1, help='Run in headless mode') args, _ = arger.parse_known_args() return args @@ -130,7 +140,7 @@ async def main(): return except Exception as e: logging.exception('got an error') - await page.pause() + input() if __name__ == '__main__':