78 lines
3 KiB
Python
78 lines
3 KiB
Python
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()
|