import uuid from core.mysql_wrapper import get_tasksdb class CapturingTasksInterface: def __init__(self): self.tasksdb = get_tasksdb() def create_capturing_task(self, referencia, uuid_exploring=None): ads_root = "https://www.idealista.com/inmueble/" query_parameters = { "ad_url": ads_root + referencia, "uuid": str(uuid.uuid4()), "status": "Pending", } if uuid_exploring is None: query_statement = """INSERT INTO capturing_tasks_logs (uuid, write_time, status, ad_url) VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s)""" else: query_parameters["uuid_exploring"] = uuid_exploring query_statement = """INSERT INTO capturing_tasks_logs (uuid, write_time, status, ad_url, fk_uuid_exploring) VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s, %(uuid_exploring)s)""" self.tasksdb.query(query_statement, query_parameters) def get_pending_task(self): query_statement = """SELECT logs.* FROM capturing_tasks_logs as logs INNER JOIN capturing_last as last ON logs.uuid = last.uuid WHERE last.status = 'Pending' ORDER BY logs.write_time ASC LIMIT 1 """ cursor = self.tasksdb.query(query_statement, dictionary=True) try: return cursor.fetchone() except: return None def update_capturing_task(self, uuid, uuid_exploring, status, ad_url): query_parameters = {"ad_url": ad_url, "uuid": uuid, "status": status} if uuid_exploring is None: query_statement = """INSERT INTO capturing_tasks_logs (uuid, write_time, status, ad_url) VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s)""" else: query_parameters["uuid_exploring"] = uuid_exploring query_statement = """INSERT INTO capturing_tasks_logs (uuid, write_time, status, ad_url, fk_uuid_exploring) VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s, %(uuid_exploring)s)""" self.tasksdb.query(query_statement, query_parameters) def seconds_since_last_try(self): query_statement = """SELECT TIME_TO_SEC(TIMEDIFF(now(), write_time)) FROM capturing_tasks_logs WHERE status = 'Loading' ORDER BY write_time DESC LIMIT 1 """ cursor = self.tasksdb.query(query_statement) try: return cursor.fetchone()[0] except: return 999 capturing_interface = CapturingTasksInterface()