def get_credentials(credentials_file, encrypted_pass=None): if os.path.exists(credentials_file): credential = load_encrypted_config(credentials_file, encrypted_pass) return credential["username"], credential["password"] else: log.info("No credential file found, let's make one") log.info("NOTE: DO NOT SAVE YOUR CREDENTIALS IN CHROME, CLICK NEVER!") credential = await_credential_input() create_encrypted_config(credential, credentials_file) return credential["username"], credential["password"]
def __init__( self, notification_handler, headless=False, checkshipping=False, random_delay=False, detailed=False, used=False, single_shot=False, no_screenshots=False, ): self.notification_handler = notification_handler self.asin_list = [] self.reserve = [] self.checkshipping = checkshipping self.button_xpaths = BUTTON_XPATHS self.random_delay = random_delay self.detailed = detailed self.used = used self.single_shot = single_shot self.no_screenshots = no_screenshots self.start_time = time.time() self.start_time_atc = 0 if not self.no_screenshots: if not os.path.exists("screenshots"): try: os.makedirs("screenshots") except: raise if not os.path.exists("html_saves"): try: os.makedirs("html_saves") except: raise if os.path.exists(CREDENTIAL_FILE): credential = load_encrypted_config(CREDENTIAL_FILE) self.username = credential["username"] self.password = credential["password"] else: log.info("No credential file found, let's make one") credential = self.await_credential_input() create_encrypted_config(credential, CREDENTIAL_FILE) self.username = credential["username"] self.password = credential["password"] if os.path.exists(AUTOBUY_CONFIG_PATH): with open(AUTOBUY_CONFIG_PATH) as json_file: try: config = json.load(json_file) self.asin_groups = int(config["asin_groups"]) self.amazon_website = config.get("amazon_website", "smile.amazon.com") for x in range(self.asin_groups): self.asin_list.append(config[f"asin_list_{x + 1}"]) self.reserve.append(float(config[f"reserve_{x + 1}"])) # assert isinstance(self.asin_list, list) except Exception: log.error( "amazon_config.json file not formatted properly: https://github.com/Hari-Nagarajan/fairgame/wiki/Usage#json-configuration" ) exit(0) else: log.error( "No config file found, see here on how to fix this: https://github.com/Hari-Nagarajan/fairgame/wiki/Usage#json-configuration" ) exit(0) if headless: enable_headless() # profile_amz = ".profile-amz" # # keep profile bloat in check # if os.path.isdir(profile_amz): # os.remove(profile_amz) options.add_argument(f"user-data-dir=.profile-amz") # options.page_load_strategy = "eager" try: self.driver = webdriver.Chrome(executable_path=binary_path, options=options) self.wait = WebDriverWait(self.driver, 10) except Exception as e: log.error(e) exit(1) for key in AMAZON_URLS.keys(): AMAZON_URLS[key] = AMAZON_URLS[key].format( domain=self.amazon_website)
def __init__( self, notification_handler, headless=False, checkshipping=False, detailed=False, used=False, single_shot=False, no_screenshots=False, disable_presence=False, slow_mode=False, encryption_pass=None, no_image=False, ): self.notification_handler = notification_handler self.asin_list = [] self.reserve_min = [] self.reserve_max = [] self.checkshipping = checkshipping self.button_xpaths = BUTTON_XPATHS self.detailed = detailed self.used = used self.single_shot = single_shot self.take_screenshots = not no_screenshots self.start_time = time.time() self.start_time_atc = 0 self.webdriver_child_pids = [] self.driver = None self.refresh_delay = DEFAULT_REFRESH_DELAY self.testing = False self.slow_mode = slow_mode self.setup_driver = True self.headless = headless self.no_image = no_image presence.enabled = not disable_presence presence.start_presence() # Create necessary sub-directories if they don't exist if not os.path.exists("screenshots"): try: os.makedirs("screenshots") except: raise if not os.path.exists("html_saves"): try: os.makedirs("html_saves") except: raise if os.path.exists(CREDENTIAL_FILE): credential = load_encrypted_config(CREDENTIAL_FILE, encryption_pass) self.username = credential["username"] self.password = credential["password"] else: log.info("No credential file found, let's make one") log.info("NOTE: DO NOT SAVE YOUR CREDENTIALS IN CHROME, CLICK NEVER!") credential = self.await_credential_input() create_encrypted_config(credential, CREDENTIAL_FILE) self.username = credential["username"] self.password = credential["password"] if os.path.exists(AUTOBUY_CONFIG_PATH): with open(AUTOBUY_CONFIG_PATH) as json_file: try: config = json.load(json_file) self.asin_groups = int(config["asin_groups"]) self.amazon_website = config.get( "amazon_website", "smile.amazon.com" ) for x in range(self.asin_groups): self.asin_list.append(config[f"asin_list_{x + 1}"]) self.reserve_min.append(float(config[f"reserve_min_{x + 1}"])) self.reserve_max.append(float(config[f"reserve_max_{x + 1}"])) # assert isinstance(self.asin_list, list) except Exception as e: log.error(f"{e} is missing") log.error( "amazon_config.json file not formatted properly: https://github.com/Hari-Nagarajan/fairgame/wiki/Usage#json-configuration" ) exit(0) else: log.error( "No config file found, see here on how to fix this: https://github.com/Hari-Nagarajan/fairgame/wiki/Usage#json-configuration" ) exit(0) if not self.create_driver(): exit(1) for key in AMAZON_URLS.keys(): AMAZON_URLS[key] = AMAZON_URLS[key].format(domain=self.amazon_website)