From 7b21046b741d2241bec1c4558158694faa2f4316 Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Fri, 13 May 2022 18:04:36 +0200 Subject: [PATCH] need to test check_results.py --- utils/check_results.py => check_results.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) rename utils/check_results.py => check_results.py (86%) diff --git a/utils/check_results.py b/check_results.py similarity index 86% rename from utils/check_results.py rename to check_results.py index 70c6e78..efdc2b8 100644 --- a/utils/check_results.py +++ b/check_results.py @@ -15,6 +15,7 @@ from pojo.ReserveResultPojo import ReserveResultPojo SORRY_SENTENCE = "nous sommes sincèrement désolés de n'avoir pu vous satisfaire cette fois-ci" PENDING_SENTENCE = "Ce soir, entre 20:00 et 20:30, vous obtiendrez une réponse par e-mail." + class ResultEnum(Enum): ACCEPTED = "ACCEPTED" REFUSED = "REFUSED" @@ -33,12 +34,13 @@ class Worker: def __init__(self): self.logger = logging.getLogger("Worker") - def load_page(self, browser, url, proxy) -> Union[str, None]: + def load_page(self, playwright, proxy, url) -> Union[str, None]: try: + self.browser = playwright.webkit.launch(headless=False, timeout=90000, proxy=proxy) device = random.choice(params.DEVICES) self.logger.info("device is " + device) pixel_2 = self.tls.playwright.devices[device] - context = browser.new_context(**pixel_2, locale='en-GB') + context = self.browser.new_context(**pixel_2, locale='en-GB') self.page = context.new_page() # hide webdriver information self.page.add_init_script("""() => { @@ -57,12 +59,11 @@ class Worker: def run(self, reserve_pojo: ReserveResultPojo, collection): print("Launched worker in ", threading.current_thread().name) - browser = self.tls.playwright.firefox.launch(headless=False) url = reserve_pojo.url phone_number = reserve_pojo.phone # url_to_check = url.replace("register/", "") - url_to_check = url + "?lang=fr" - print("url is " + url_to_check) + # url_to_check = url + "?lang=fr" + print("url is " + url) content = None random_id_number = str(phone_number)[1:len(str(phone_number))] proxy_username = "panleicim-res-fr-" + random_id_number @@ -73,7 +74,7 @@ class Worker: "password": params.PROXY_PASSWORD } while content is None: - content = self.load_page(browser, url_to_check, proxy) + content = self.load_page(self.tls.playwright, url, proxy) random_id_number = get_random_id_number_for_proxy() proxy_username = "panleicim-res-fr-" + random_id_number print("proxy_username is " + proxy_username) @@ -83,7 +84,7 @@ class Worker: "password": params.PROXY_PASSWORD } print(content) - browser.close() + self.browser.close() print("Stopped worker in ", threading.current_thread().name) status = None if SORRY_SENTENCE in content: @@ -106,14 +107,12 @@ if __name__ == '__main__': collection = db_manager.get_all_successful_items() count = 0 task_list = list() - with ThreadPoolExecutor(max_workers=10) as executor: + with ThreadPoolExecutor(max_workers=2) as executor: for appointment in collection.stream(): - worker = Worker() count = count + 1 reserve_pojo = ReserveResultPojo.from_firestore_dict(appointment.to_dict()) if reserve_pojo.accepted: print("status is " + reserve_pojo.accepted) if reserve_pojo.accepted is None or ResultEnum.PENDING.value == reserve_pojo.accepted: - # tasks = check_result_page(reserve_pojo.url, reserve_pojo.phone) - executor.submit(worker.run, reserve_pojo, collection) + executor.submit(Worker().run, threading.Event(), reserve_pojo, collection) print(count)