from enum import Enum from playwright.sync_api import sync_playwright import params from db.DbManager import DataManager 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" PENDING = "PENDING" # check result with playright def check_result_page(url) -> ResultEnum: with sync_playwright() as p: return run(p, url) def run(playwright, url) -> ResultEnum: browser = playwright.webkit.launch(headless=False) page = browser.new_page( user_agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Mobile Safari/537.36") url_to_check = url.replace("register/", "") url_to_check = url_to_check + "?lang=fr" print(url_to_check) page.goto(url_to_check) content = page.content() print(content) browser.close() if SORRY_SENTENCE in content: print("result is REFUSED") return ResultEnum.REFUSED elif PENDING_SENTENCE in content: print("result is PENDING") return ResultEnum.PENDING else: print("result is ACCEPTED") return ResultEnum.ACCEPTED # need to start at 21h00 if __name__ == '__main__': # get the list db_manager = params.firebase_store_manager collection = db_manager.get_all_successful_items() count = 0 for appointment in collection.stream(): count = count + 1 reserve_pojo = ReserveResultPojo.from_firestore_dict(appointment.to_dict()) print("status is " + reserve_pojo.accepted) if reserve_pojo.accepted is None or ResultEnum.PENDING.value == reserve_pojo.accepted: result = check_result_page(reserve_pojo.url) collection.document(reserve_pojo.id).update({u'accepted': result.name}) print(count)