2018-10-06 19:09:44 +02:00
|
|
|
from core.mysql_wrapper import get_anunciosdb
|
|
|
|
|
|
|
|
|
|
|
2018-12-02 18:53:28 +01:00
|
|
|
class CapturasInterface:
|
2018-10-06 19:09:44 +02:00
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
|
|
|
|
self.anunciosdb = get_anunciosdb()
|
|
|
|
|
|
|
|
|
|
def insert_captura(self, ad_data):
|
|
|
|
|
|
|
|
|
|
columns = ', '.join(ad_data.keys())
|
2018-10-13 17:45:42 +02:00
|
|
|
placeholders_string = ', '.join(['%s'] * len(ad_data))
|
2018-10-06 19:09:44 +02:00
|
|
|
|
|
|
|
|
query_statement = """ INSERT INTO capturas
|
2018-10-13 17:45:42 +02:00
|
|
|
( fecha_captura, {} )
|
|
|
|
|
VALUES( NOW(), {} )""".format(columns, placeholders_string)
|
2018-10-06 19:09:44 +02:00
|
|
|
|
2018-10-13 17:45:42 +02:00
|
|
|
query_parameters = tuple([v for v in ad_data.values()])
|
2018-10-06 19:09:44 +02:00
|
|
|
|
|
|
|
|
self.anunciosdb.query(query_statement, query_parameters)
|
|
|
|
|
|
2018-10-14 19:24:17 +02:00
|
|
|
def old_ads_exist(self):
|
2018-10-16 21:19:35 +02:00
|
|
|
query_statement = """
|
|
|
|
|
SELECT uc.referencia
|
|
|
|
|
FROM anuncios.ultima_captura_full as uc
|
|
|
|
|
LEFT JOIN (SELECT cl.ad_url as ad_url
|
|
|
|
|
FROM tasks.capturing_last as cl
|
2018-12-02 12:28:27 +01:00
|
|
|
WHERE cl.status = 'Dead ad'
|
|
|
|
|
OR cl.status = 'Pending') as da
|
2018-10-16 21:19:35 +02:00
|
|
|
ON da.ad_url LIKE CONCAT('%', uc.referencia, '%')
|
2018-11-05 23:40:54 +01:00
|
|
|
WHERE uc.fecha_captura BETWEEN (NOW() - INTERVAL 90 day) AND (NOW() - INTERVAL 10 day)
|
2018-10-16 21:19:35 +02:00
|
|
|
AND da.ad_url is null
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
cursor_result = self.anunciosdb.query(query_statement)
|
|
|
|
|
resultados = cursor_result.fetchall()
|
|
|
|
|
if resultados:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|
2018-10-14 19:24:17 +02:00
|
|
|
|
|
|
|
|
def get_old_ad(self):
|
2018-10-16 21:19:35 +02:00
|
|
|
query_statement = """
|
|
|
|
|
SELECT uc.referencia
|
|
|
|
|
FROM anuncios.ultima_captura_full as uc
|
|
|
|
|
LEFT JOIN (SELECT cl.ad_url as ad_url
|
|
|
|
|
FROM tasks.capturing_last as cl
|
2018-12-02 12:25:18 +01:00
|
|
|
WHERE cl.status = 'Dead ad'
|
|
|
|
|
OR cl.status = 'Pending') as da
|
2018-10-16 21:19:35 +02:00
|
|
|
ON da.ad_url LIKE CONCAT('%', uc.referencia, '%')
|
2018-11-05 23:40:54 +01:00
|
|
|
WHERE uc.fecha_captura BETWEEN (NOW() - INTERVAL 90 day) AND (NOW() - INTERVAL 10 day)
|
2018-10-16 21:19:35 +02:00
|
|
|
AND da.ad_url is null
|
2018-10-18 22:36:10 +02:00
|
|
|
ORDER BY RAND()
|
2018-10-16 21:19:35 +02:00
|
|
|
LIMIT 1
|
|
|
|
|
"""
|
|
|
|
|
cursor_result = self.anunciosdb.query(query_statement, dictionary=True)
|
|
|
|
|
try:
|
2018-10-18 22:36:10 +02:00
|
|
|
return cursor_result.fetchone()
|
2018-10-16 21:19:35 +02:00
|
|
|
except:
|
|
|
|
|
return None
|
2018-10-14 19:24:17 +02:00
|
|
|
|
2018-10-19 19:17:48 +02:00
|
|
|
def not_geocoded_captura_exists(self):
|
|
|
|
|
query_statement = """
|
2018-10-23 23:18:12 +02:00
|
|
|
SELECT COUNT(referencia) as cantidad
|
2018-10-19 19:17:48 +02:00
|
|
|
FROM anuncios.capturas
|
2018-10-22 00:15:44 +02:00
|
|
|
WHERE `precision` IS NULL"""
|
2018-10-19 19:17:48 +02:00
|
|
|
|
2018-10-23 23:18:12 +02:00
|
|
|
cursor_result = self.anunciosdb.query(query_statement)
|
2018-10-22 00:15:44 +02:00
|
|
|
result = cursor_result.fetchone()[0]
|
|
|
|
|
|
|
|
|
|
return result > 0
|
|
|
|
|
|
2018-10-19 19:17:48 +02:00
|
|
|
|
|
|
|
|
def get_not_geocoded_captura(self):
|
|
|
|
|
query_statement = """
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM anuncios.capturas
|
|
|
|
|
WHERE `precision` IS NULL
|
|
|
|
|
LIMIT 1
|
|
|
|
|
"""
|
|
|
|
|
cursor_result = self.anunciosdb.query(query_statement, dictionary=True)
|
2018-10-22 00:01:36 +02:00
|
|
|
return cursor_result.fetchone()
|
2018-10-19 19:17:48 +02:00
|
|
|
|
|
|
|
|
def update_geo_data(self, referencia, fecha_captura, latitude, longitude, precision):
|
|
|
|
|
query_statement = """
|
|
|
|
|
UPDATE anuncios.capturas
|
|
|
|
|
SET latitud = %(latitud)s, longitud = %(longitud)s, `precision` = %(precision)s
|
|
|
|
|
WHERE referencia = %(referencia)s AND fecha_captura = %(fecha_captura)s
|
|
|
|
|
"""
|
|
|
|
|
query_parameters = {'referencia': referencia,
|
|
|
|
|
'fecha_captura': fecha_captura,
|
|
|
|
|
'latitud': latitude,
|
|
|
|
|
'longitud': longitude,
|
|
|
|
|
'precision': precision}
|
|
|
|
|
|
|
|
|
|
self.anunciosdb.query(query_statement, query_parameters)
|
|
|
|
|
|
2018-12-21 19:17:39 +01:00
|
|
|
def get_market_snapshot(self, start_date, end_date):
|
|
|
|
|
query_statement = """
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM `anuncios`.`capturas` `t1`
|
|
|
|
|
WHERE
|
|
|
|
|
(
|
|
|
|
|
(
|
|
|
|
|
`t1`.`fecha_captura` =
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
max(`t2`.`fecha_captura`)
|
|
|
|
|
FROM `anuncios`.`capturas` `t2`
|
|
|
|
|
WHERE (`t1`.`referencia` = `t2`.`referencia`)
|
|
|
|
|
)
|
|
|
|
|
)
|
2018-12-23 18:30:11 +01:00
|
|
|
AND (`t1`.`fecha_captura` BETWEEN %(start_date)s AND %(end_date)s)
|
2018-12-21 19:17:39 +01:00
|
|
|
)
|
|
|
|
|
"""
|
|
|
|
|
query_parameters = {'start_date': start_date.strftime('%Y-%m-%d 00:00:00'),
|
|
|
|
|
'end_date': end_date.strftime('%Y-%m-%d 00:00:00')}
|
|
|
|
|
|
|
|
|
|
cursor_result = self.anunciosdb.query(query_statement, query_parameters, dictionary=True)
|
|
|
|
|
return cursor_result.fetchall()
|
|
|
|
|
|
2018-10-14 19:24:17 +02:00
|
|
|
|
2018-10-06 19:09:44 +02:00
|
|
|
capturas_interface = CapturasInterface()
|
|
|
|
|
|
|
|
|
|
|