mirror of
				https://gitea.augustin64.fr/piair/MsRewards-Reborn.git
				synced 2025-10-30 22:13:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from modules.imports import *
 | |
| from modules.config import *
 | |
| from modules.tools import *
 | |
| import modules.globals as g
 | |
| 
 | |
| 
 | |
| def set_language(ldriver):
 | |
|     ldriver.get("chrome://settings/languages")
 | |
|     action = ActionChains(ldriver)
 | |
|     action.reset_actions()
 | |
|     # select langage
 | |
|     x_coord = 1200
 | |
|     y_coord = 150
 | |
|     action.move_by_offset(x_coord, y_coord).click().perform()
 | |
|     sleep(0.5)
 | |
|     # scroll down
 | |
|     action.reset_actions()
 | |
|     elm = ldriver.find_element(By.XPATH, "/html/body")
 | |
|     ActionChains(ldriver)\
 | |
|         .send_keys("french")\
 | |
|         .pause(0.5)\
 | |
|         .send_keys(Keys.TAB + Keys.TAB + Keys.ENTER + Keys.TAB + Keys.TAB + Keys.ENTER)\
 | |
|         .perform()
 | |
|     x_coord = 1163
 | |
|     y_coord = 717
 | |
|     action.move_by_offset(x_coord, y_coord).click().perform()
 | |
|     # put to the top
 | |
|     sleep(0.5)
 | |
|     action.reset_actions()
 | |
|     x_coord = 1257
 | |
|     y_coord = 328
 | |
|     action.move_by_offset(x_coord, y_coord).click().perform()
 | |
|     action.click().perform()
 | |
| 
 | |
| 
 | |
| def setup_proxy(ip: str, port: str) -> None:
 | |
|     PROXY = f"{ip}:{port}"
 | |
|     webdriver.DesiredCapabilities.FIREFOX['proxy'] = {
 | |
|         "httpProxy": PROXY,
 | |
|         "sslProxy": PROXY,
 | |
|         "proxyType": "MANUAL",
 | |
|     }
 | |
| 
 | |
| 
 | |
| #Deal with RGPD popup as well as some random popup like 'are you satisfied' one
 | |
| def rgpd_popup(driver) -> None:
 | |
|     for i in ["bnp_btn_accept", "bnp_hfly_cta2", "bnp_hfly_close"] :
 | |
|         try:
 | |
|             driver.find_element(By.ID, i).click()
 | |
|         except:
 | |
|             pass
 | |
| 
 | |
| 
 | |
| # save webdriver cookies
 | |
| def save_cookies(driver) -> None:
 | |
|     if g.dev:
 | |
|         f = open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{g._mail}_unsafe.pkl", "w")
 | |
|         for i in driver.get_cookies():
 | |
|             f.write(str(i) + "\n")
 | |
|         f.close()
 | |
|     else :
 | |
|         pickle.dump(driver.get_cookies(), open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{g._mail}.pkl", "wb"))
 | |
| 
 | |
| 
 | |
| # load cookies previously saved to the driver
 | |
| def load_cookies(driver) -> None:
 | |
|     if g.dev:
 | |
|         f = open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{g._mail}_unsafe.pkl", "r")
 | |
|         lines = f.readlines()
 | |
|         f.close()
 | |
|         cookies = [literal_eval(x) for x in lines]
 | |
|     else :
 | |
|         cookies = pickle.load(open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{g._mail}.pkl", "rb"))
 | |
|     for cookie in cookies:
 | |
|         driver.add_cookie(cookie)
 | |
| 
 | |
| """
 | |
| send_keys_wait([selenium element:element, str:keys]) send the different keys to the field element, with a random time between each press to simulate human action.
 | |
| keys can be an string, but also selenium keys
 | |
| """
 | |
| def send_keys_wait(element, keys: str) -> None:
 | |
|     for i in keys:
 | |
|         element.send_keys(i)
 | |
|         sleep(uniform(0.1, 0.3))
 | |
| 
 | |
| 
 | |
| 
 | |
| # Wait for the presence of the element identifier or [timeout]s
 | |
| def wait_until_visible(search_by: str, identifier: str, timeout = 20, browser = None) -> None:
 | |
|     try :
 | |
|         WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((search_by,identifier)), "element not found")
 | |
|         return(True)
 | |
|     except TimeoutException as e:
 | |
|         printf(f"element {identifier} not found after {timeout}s")
 | |
|         return(False)
 | |
| 
 |