From 81c07786f22bb431fe66cdd2a38274817aeb1ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zden=C4=9Bk=20Lape=C5=A1?= Date: Tue, 2 Jan 2024 18:33:03 +0100 Subject: [PATCH] Added --mode = fast/slow --- bazos/__init__.py | 10 +++++++++- bazos/scrapper.py | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bazos/__init__.py b/bazos/__init__.py index e0342e9..12885ee 100644 --- a/bazos/__init__.py +++ b/bazos/__init__.py @@ -1,7 +1,7 @@ import argparse from pathlib import Path import sys -from typing import Dict, Any, Callable +from typing import Any, Callable, Dict from distutils.util import strtobool # noqa from bazos.scrapper import BazosScrapper, BazosUser, BazosDriver @@ -38,6 +38,13 @@ def parse_cli_argument() -> Dict[str, Any]: parser.add_argument('--remote', **BOOL_AS_STR_ARGUMENTS_FALSE, help='Use remote') + # Possible values: fast, slow + parser.add_argument('--mode', + type=str, + choices=['fast', 'slow'], + default='fast', + nargs='?', + help='Mode') # ? parser.add_argument('--items-path', type=Path, @@ -80,6 +87,7 @@ def main(): # Print arguments if args['verbose']: print(' '.join(sys.argv)) + print(args) bazos_driver = BazosDriver(args=args, country='cz') for country in args['country']: diff --git a/bazos/scrapper.py b/bazos/scrapper.py index 05dca7e..dbc0d82 100644 --- a/bazos/scrapper.py +++ b/bazos/scrapper.py @@ -15,7 +15,7 @@ from bazos.core import settings from bazos.info.product import Product, get_all_products from bazos.info.rubric_category import get_rubric, get_category -from bazos.shared.utils import parse_yaml +from bazos.shared.utils import parse_yaml, wait_random_time ################################################################################ @@ -214,6 +214,8 @@ def delete_advertisement(self): pwd_input = self.driver.find_element(By.XPATH, XPathsBazos.delete_pwd_input) pwd_input.clear() pwd_input.send_keys(getattr(self.user, 'password')) + if self.args['mode'] == 'slow': + wait_random_time(coef=1) self.driver.find_element(By.XPATH, XPathsBazos.delete_submit).click() # Submit-Delete def delete_all_advertisements(self): @@ -222,6 +224,8 @@ def delete_all_advertisements(self): if self.args['verbose']: print("==> Removing old advertisements") for i in range(self.advertisements): + if self.args['mode'] == 'slow': + wait_random_time(coef=1) element = self.driver.find_element(By.CLASS_NAME, 'nadpis') if self.args['verbose']: print(f"Removing[{i}/{self.advertisements}]: {element.text}") @@ -256,6 +260,8 @@ def create_advertisement(self, product: Product): self.driver.find_element(By.CLASS_NAME, 'ovse').click() self.driver.find_element(By.XPATH, XPathsBazos.product_img_input).send_keys('\n'.join(product.images)) + if self.args['mode'] == 'slow': + wait_random_time(coef=1) self.driver.find_element(By.XPATH, XPathsBazos.product_submit).click() def create_all_advertisements(self) -> None: @@ -265,6 +271,8 @@ def create_all_advertisements(self) -> None: if self.args['verbose']: print("==> Adding advertisements") for idx, product in enumerate(products): + if self.args['mode'] == 'slow': + wait_random_time(coef=1) if self.product_already_advertised(product): if self.args['verbose']: