commit 7b977abeb6ce905f8a7b197392a9bdc4c19c3d05 Author: jandres Date: Tue Feb 4 10:42:57 2025 -0600 Initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5ae8da1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Usar una imagen base de Python +FROM python:3.9-slim + +# Instalar dependencias del sistema necesarias para OpenCV y zbar +RUN apt-get update && apt-get install -y \ + libzbar0 \ + libgl1-mesa-glx \ + libglib2.0-0 \ + && rm -rf /var/lib/apt/lists/* + +# Directorio de trabajo +WORKDIR /app + +# Copiar requirements.txt primero para aprovechar la caché de Docker +COPY requirements.txt . + +# Instalar dependencias de Python +RUN pip install --no-cache-dir -r requirements.txt + +# Copiar el código fuente +COPY . . + +# Comando para ejecutar la aplicación +CMD ["python", "qr_detector.py"] \ No newline at end of file diff --git a/__pycache__/database_handler.cpython-313.pyc b/__pycache__/database_handler.cpython-313.pyc new file mode 100644 index 0000000..bb5f9c5 Binary files /dev/null and b/__pycache__/database_handler.cpython-313.pyc differ diff --git a/__pycache__/db_handler.cpython-313.pyc b/__pycache__/db_handler.cpython-313.pyc new file mode 100644 index 0000000..dc794a8 Binary files /dev/null and b/__pycache__/db_handler.cpython-313.pyc differ diff --git a/__pycache__/webhook_handler.cpython-313.pyc b/__pycache__/webhook_handler.cpython-313.pyc new file mode 100644 index 0000000..43c66c2 Binary files /dev/null and b/__pycache__/webhook_handler.cpython-313.pyc differ diff --git a/config copy.yaml b/config copy.yaml new file mode 100644 index 0000000..3df9b6e --- /dev/null +++ b/config copy.yaml @@ -0,0 +1,50 @@ +# webhooks: + enabled: true + endpoints: + - url: 'https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75' + method: 'POST' # POST, PUT, GET + headers: + Authorization: 'Bearer your-token' + Content-Type: 'application/json' + retry: + max_attempts: 3 + delay_seconds: 5 + notification_rules: + send_on_new: true # Notificar nuevos QRs + send_on_repeat: false # Notificar QRs repetidos +headless: + enabled: true # Activar modo headless + save_images: true # Guardar imágenes de QRs detectados + image_output_dir: '/var/log/qr_detector/images' # Directorio para guardar imágenes + webhook_url: 'http://your-webhook-url' # URL para notificaciones (opcional) +# Configuración del detector QR +database: + enabled: true + path: 'qr_codes.db' + table_name: 'qr_scans' + +camera: + id: 0 # ID de la cámara a usar + min_delay: 2.0 # Tiempo mínimo entre lecturas del mismo código + +logging: + level: INFO + format: '%(asctime)s - %(levelname)s - %(message)s' + output: + console: true + file: + enabled: true + path: 'qr_detector.log' + +display: + window_name: 'QR Detector' + rectangle: + color: [0, 255, 0] # Color BGR (verde) + thickness: 2 + corner_length: 30 # Longitud de las líneas de las esquinas + text: + font_scale: 0.6 + color: [255, 255, 255] # Color BGR (blanco) + thickness: 2 + background_opacity: 0.5 # Opacidad del fondo del texto + margin_top: 40 # Píxeles sobre el código QR \ No newline at end of file diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..62e3bf4 --- /dev/null +++ b/config.yaml @@ -0,0 +1,55 @@ +# webhooks: + # enabled: true + # endpoints: + # - url: 'https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75' + # method: 'POST' # POST, PUT, GET + # headers: + # Authorization: 'Bearer your-token' + # Content-Type: 'application/json' + # retry: + # max_attempts: 3 + # delay_seconds: 5 + # notification_rules: + # send_on_new: true # Notificar nuevos QRs + # send_on_repeat: false # Notificar QRs repetidos +headless: + enabled: true # Activar modo headless + save_images: true # Guardar imágenes de QRs detectados + image_output_dir: '/var/log/qr_detector/images' # Directorio para guardar imágenes + webhook_url: 'http://your-webhook-url' # URL para notificaciones (opcional) +# Configuración del detector QR +database: + enabled: true + path: 'qr_codes.db' + table_name: 'qr_scans' + +camera: + id: "rtsp://172.20.5.201:8080/h264.sdp" # ID de la cámara a usar + min_delay: 2.0 # Tiempo mínimo entre lecturas del mismo código + +logging: + level: INFO + format: '%(asctime)s - %(levelname)s - %(message)s' + output: + console: true + file: + enabled: true + path: 'qr_detector.log' + +display: + window_name: 'QR Detector' + rectangle: + color: [0, 255, 0] # Color BGR (verde) + thickness: 2 + corner_length: 30 # Longitud de las líneas de las esquinas + text: + font_scale: 0.6 + color: [255, 255, 255] # Color BGR (blanco) + thickness: 2 + background_opacity: 0.5 # Opacidad del fondo del texto + margin_top: 40 # Píxeles sobre el código QR +# URL del webhook (opcional) +api: + url: "https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75" + api_key: "tu-api-key-aqui" + batch_size: 1 # Número de QRs a acumular antes de enviar \ No newline at end of file diff --git a/db_handler.py b/db_handler.py new file mode 100644 index 0000000..9a89e3b --- /dev/null +++ b/db_handler.py @@ -0,0 +1,86 @@ +import sqlite3 +import logging +from contextlib import contextmanager +from datetime import datetime + +class DBHandler: + def __init__(self, db_path='qr_codes.db'): + self.db_path = db_path + self.logger = logging.getLogger(__name__) + self.setup_database() + + @contextmanager + def get_connection(self): + """Administra la conexión a la base de datos""" + conn = None + try: + conn = sqlite3.connect(self.db_path) + yield conn + except sqlite3.Error as e: + self.logger.error(f"Error de conexión a la base de datos: {e}") + raise + finally: + if conn: + conn.close() + + def setup_database(self): + """Crea la tabla si no existe""" + create_table_sql = ''' + CREATE TABLE IF NOT EXISTS qr_codes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + qr_data TEXT NOT NULL UNIQUE, + camera_name TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + ''' + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(create_table_sql) + conn.commit() + self.logger.info("Base de datos inicializada correctamente") + except sqlite3.Error as e: + self.logger.error(f"Error creando la tabla: {e}") + raise + + def check_qr_exists(self, qr_data: str) -> bool: + """Verifica si un código QR ya existe en la base de datos""" + query = 'SELECT COUNT(*) FROM qr_codes WHERE qr_data = ?' + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(query, (qr_data,)) + (count,) = cursor.fetchone() + return count > 0 + except sqlite3.Error as e: + self.logger.error(f"Error verificando QR: {e}") + return False + + def save_qr(self, qr_data: str,camera_name: str) -> bool: + """Guarda un nuevo código QR en la base de datos""" + if self.check_qr_exists(qr_data): + return False + + insert_sql = 'INSERT INTO qr_codes (qr_data,camera_name) VALUES (?, ?)' + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(insert_sql, (qr_data,camera_name)) + conn.commit() + self.logger.info(f"QR guardado en DB: {qr_data}") + return True + except sqlite3.Error as e: + self.logger.error(f"Error guardando QR: {e}") + return False + + def get_all_qrs(self) -> list: + """Obtiene todos los códigos QR almacenados""" + query = 'SELECT qr_data, created_at FROM qr_codes ORDER BY created_at DESC' + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(query) + return cursor.fetchall() + except sqlite3.Error as e: + self.logger.error(f"Error obteniendo QRs: {e}") + return [] \ No newline at end of file diff --git a/qr_codes.db b/qr_codes.db new file mode 100644 index 0000000..18b001e Binary files /dev/null and b/qr_codes.db differ diff --git a/qr_detector copy.py b/qr_detector copy.py new file mode 100644 index 0000000..9e28ea1 --- /dev/null +++ b/qr_detector copy.py @@ -0,0 +1,274 @@ +# Agregar al inicio del archivo, después de los imports existentes +import cv2 +from pyzbar import pyzbar + +import os +import json +from datetime import datetime +import requests # Para webhooks si se necesitan +import time +import logging +import sys +import yaml +from pathlib import Path +from typing import Optional, Tuple, List +from dataclasses import dataclass +from contextlib import contextmanager +from db_handler import DatabaseHandler, DatabaseError + +@dataclass +class QRData: + """Clase para almacenar información del código QR""" + data: str + code_type: str + coordinates: Tuple[int, int, int, int] + timestamp: float + +class QRDetectorError(Exception): + """Clase base para excepciones del detector QR""" + pass + +class CameraError(QRDetectorError): + """Error relacionado con la cámara""" + pass + +class QRDecodeError(QRDetectorError): + """Error en la decodificación del QR""" + pass + +class ConfigError(QRDetectorError): + """Error en la configuración""" + pass + +class QRDetector: + def __init__(self, config_path: str = 'config.yaml'): + self.config = self.load_config(config_path) + self.setup_logging() + self.camera_id = self.config['camera']['id'] + self.min_delay = self.config['camera']['min_delay'] + self.camera = None + self.last_code = None + self.last_time = 0 + + # Inicializar base de datos si está habilitada + if self.config['database']['enabled']: + try: + self.db = DatabaseHandler(self.config['database']) + self.logger.info("Base de datos inicializada correctamente") + except DatabaseError as e: + self.logger.error(f"Error inicializando base de datos: {e}") + raise + + def load_config(self, config_path: str) -> dict: + """Carga la configuración desde el archivo YAML""" + try: + with open(config_path, 'r') as file: + return yaml.safe_load(file) + except Exception as e: + raise ConfigError(f"Error cargando configuración: {e}") + + def setup_logging(self): + """Configura el sistema de logging basado en la configuración""" + log_config = self.config['logging'] + handlers = [] + + if log_config['output']['console']: + handlers.append(logging.StreamHandler(sys.stdout)) + + if log_config['output']['file']['enabled']: + handlers.append(logging.FileHandler(log_config['output']['file']['path'])) + + logging.basicConfig( + level=getattr(logging, log_config['level']), + format=log_config['format'], + handlers=handlers + ) + self.logger = logging.getLogger(__name__) + + @contextmanager + def initialize_camera(self): + """Inicializa la cámara de manera segura usando context manager""" + try: + self.camera = cv2.VideoCapture(self.camera_id) + if not self.camera.isOpened(): + raise CameraError("No se pudo abrir la cámara") + yield self.camera + finally: + if self.camera: + self.camera.release() + cv2.destroyAllWindows() + self.logger.info("Recursos de la cámara liberados") + + def process_frame(self, frame) -> List[QRData]: + """Procesa un frame y retorna la lista de códigos QR detectados""" + try: + qr_codes = pyzbar.decode(frame) + current_time = time.time() + results = [] + + for qr_code in qr_codes: + try: + data = qr_code.data.decode('utf-8') + code_type = qr_code.type + coordinates = qr_code.rect + + if (data != self.last_code or + (current_time - self.last_time) > self.min_delay): + + qr_data = QRData( + data=data, + code_type=code_type, + coordinates=coordinates, + timestamp=current_time + ) + results.append(qr_data) + + self.last_code = data + self.last_time = current_time + + # Guardar en base de datos si está habilitada + if self.config['database']['enabled']: + try: + qr_dict = { + 'data': data, + 'code_type': code_type, + 'coordinates': coordinates, + 'timestamp': current_time + } + self.db.save_qr_code(qr_dict) + scan_count = self.db.get_scan_count(data) + self.logger.info(f"QR guardado en DB. Total escaneos: {scan_count}") + except DatabaseError as e: + self.logger.error(f"Error guardando en base de datos: {e}") + + except UnicodeDecodeError as e: + self.logger.error(f"Error decodificando QR: {e}") + raise QRDecodeError("Error al decodificar el contenido del QR") + + return results + + except Exception as e: + self.logger.error(f"Error procesando frame: {e}") + raise QRDetectorError(f"Error en el procesamiento del frame: {e}") + + def draw_qr_info(self, frame, qr_data: QRData): + """Dibuja la información del QR en el frame con efectos visuales mejorados""" + try: + display_config = self.config['display'] + x, y, w, h = qr_data.coordinates + + # Dibujar rectángulo principal + cv2.rectangle( + frame, + (x, y), + (x + w, y + h), + tuple(display_config['rectangle']['color']), + display_config['rectangle']['thickness'] + ) + + # Dibujar esquinas del QR + l = 30 # longitud de las líneas de las esquinas + # Esquina superior izquierda + cv2.line(frame, (x, y), (x + l, y), (0, 255, 255), 2) + cv2.line(frame, (x, y), (x, y + l), (0, 255, 255), 2) + # Esquina superior derecha + cv2.line(frame, (x + w, y), (x + w - l, y), (0, 255, 255), 2) + cv2.line(frame, (x + w, y), (x + w, y + l), (0, 255, 255), 2) + # Esquina inferior izquierda + cv2.line(frame, (x, y + h), (x + l, y + h), (0, 255, 255), 2) + cv2.line(frame, (x, y + h), (x, y + h - l), (0, 255, 255), 2) + # Esquina inferior derecha + cv2.line(frame, (x + w, y + h), (x + w - l, y + h), (0, 255, 255), 2) + cv2.line(frame, (x + w, y + h), (x + w, y + h - l), (0, 255, 255), 2) + + # Crear fondo semi-transparente para el texto + overlay = frame.copy() + cv2.rectangle( + overlay, + (x, y - 40), + (x + w, y), + (0, 0, 0), + -1 + ) + frame = cv2.addWeighted(overlay, 0.5, frame, 0.5, 0) + + # Mostrar información + display_text = f"{qr_data.code_type}: {qr_data.data}" + cv2.putText( + frame, + display_text, + (x + 5, y - 15), + cv2.FONT_HERSHEY_SIMPLEX, + 0.6, + (255, 255, 255), # Color blanco para mejor contraste + 2 + ) + + # Contador de escaneos si está disponible + if self.config['database']['enabled']: + try: + scan_count = self.db.get_scan_count(qr_data.data) + count_text = f"Escaneos: {scan_count}" + cv2.putText( + frame, + count_text, + (x + w - 100, y + h + 25), + cv2.FONT_HERSHEY_SIMPLEX, + 0.5, + (0, 255, 255), + 1 + ) + except DatabaseError: + pass + + self.logger.info(f"QR detectado - Tipo: {qr_data.code_type}, Datos: {qr_data.data}") + + except Exception as e: + self.logger.error(f"Error dibujando información del QR: {e}") + raise QRDetectorError(f"Error al dibujar información: {e}") + + def run(self): + """Método principal para ejecutar el detector""" + self.logger.info("Iniciando detector de códigos QR...") + + with self.initialize_camera() as camera: + while True: + try: + success, frame = camera.read() + if not success: + raise CameraError("Error capturando frame") + + qr_codes = self.process_frame(frame) + + for qr_data in qr_codes: + self.draw_qr_info(frame, qr_data) + + cv2.imshow(self.config['display']['window_name'], frame) + + if cv2.waitKey(1) & 0xFF == ord('q'): + self.logger.info("Cerrando aplicación...") + break + + except CameraError as e: + self.logger.error(f"Error de cámara: {e}") + break + except QRDecodeError as e: + self.logger.error(f"Error de decodificación: {e}") + continue + except Exception as e: + self.logger.error(f"Error inesperado: {e}") + break + +def main(): + try: + detector = QRDetector() + detector.run() + except ConfigError as e: + print(f"Error en la configuración: {e}") + sys.exit(1) + except Exception as e: + print(f"Error crítico en la aplicación: {e}") + sys.exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/qr_detector.log b/qr_detector.log new file mode 100644 index 0000000..7a13257 --- /dev/null +++ b/qr_detector.log @@ -0,0 +1,1085 @@ +2025-02-03 20:24:36,329 - INFO - Base de datos inicializada correctamente +2025-02-03 20:24:36,330 - INFO - Base de datos inicializada correctamente +2025-02-03 20:24:36,330 - INFO - Iniciando detector de códigos QR... +2025-02-03 20:25:13,374 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:25:13,374 - INFO - QR detectado - Tipo: QRCODE, Datos: https://merca.truper.com/qr/index.php?codigo=maq_elec +2025-02-03 20:26:10,111 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:26:10,111 - INFO - QR detectado - Tipo: QRCODE, Datos: tel: +2025-02-03 20:26:12,152 - INFO - QR guardado en DB. Total escaneos: 2 +2025-02-03 20:26:12,153 - INFO - QR detectado - Tipo: QRCODE, Datos: tel: +2025-02-03 20:26:13,075 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:26:13,076 - INFO - QR detectado - Tipo: QRCODE, Datos: http://en.m.wikipedia.org +2025-02-03 20:26:15,093 - INFO - QR guardado en DB. Total escaneos: 2 +2025-02-03 20:26:15,094 - INFO - QR detectado - Tipo: QRCODE, Datos: http://en.m.wikipedia.org +2025-02-03 20:26:56,315 - INFO - Cerrando aplicación... +2025-02-03 20:26:56,924 - INFO - Recursos de la cámara liberados +2025-02-03 20:36:06,439 - INFO - Base de datos inicializada correctamente +2025-02-03 20:36:06,440 - INFO - Base de datos inicializada correctamente +2025-02-03 20:36:06,440 - INFO - Iniciando detector de códigos QR... +2025-02-03 20:36:38,717 - INFO - QR guardado en DB. Total escaneos: 3 +2025-02-03 20:36:38,719 - INFO - QR detectado - Tipo: QRCODE, Datos: http://en.m.wikipedia.org +2025-02-03 20:36:49,130 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:36:49,132 - INFO - QR detectado - Tipo: QRCODE, Datos: Hello, world! +2025-02-03 20:37:55,186 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:37:55,187 - INFO - QR detectado - Tipo: QRCODE, Datos: http://apple.com +2025-02-03 20:38:31,810 - INFO - Cerrando aplicación... +2025-02-03 20:38:32,398 - INFO - Recursos de la cámara liberados +2025-02-03 20:56:56,286 - INFO - Base de datos inicializada correctamente +2025-02-03 20:56:56,287 - INFO - Base de datos inicializada correctamente +2025-02-03 20:56:56,287 - INFO - Iniciando detector de códigos QR... +2025-02-03 20:57:24,185 - INFO - Base de datos inicializada correctamente +2025-02-03 20:57:24,186 - INFO - Base de datos inicializada correctamente +2025-02-03 20:57:24,186 - INFO - Iniciando detector de códigos QR... +2025-02-03 20:57:25,997 - ERROR - Error procesando frame: name 'pyzbar' is not defined +2025-02-03 20:57:25,998 - ERROR - Error inesperado: Error en el procesamiento del frame: name 'pyzbar' is not defined +2025-02-03 20:57:26,542 - INFO - Recursos de la cámara liberados +2025-02-03 20:58:10,415 - INFO - Base de datos inicializada correctamente +2025-02-03 20:58:10,415 - INFO - Base de datos inicializada correctamente +2025-02-03 20:58:10,415 - INFO - Iniciando detector de códigos QR... +2025-02-03 20:58:26,227 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:58:26,228 - INFO - QR detectado - Tipo: QRCODE, Datos: https://lobbyfix.com/?utm_source=blog&utm_medium=qr&utm_campaign=qr +2025-02-03 20:58:29,234 - INFO - QR guardado en DB. Total escaneos: 2 +2025-02-03 20:58:29,236 - INFO - QR detectado - Tipo: QRCODE, Datos: https://lobbyfix.com/?utm_source=blog&utm_medium=qr&utm_campaign=qr +2025-02-03 20:59:27,163 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 20:59:27,165 - INFO - QR detectado - Tipo: QRCODE, Datos: www.abcsubmit.com +2025-02-03 20:59:36,038 - INFO - Cerrando aplicación... +2025-02-03 20:59:36,608 - INFO - Recursos de la cámara liberados +2025-02-03 21:07:31,046 - WARNING - Intento 1/3 fallido. Status: 404, Response: +404 Not Found + +

404 Not Found

+ +2025-02-03 21:07:36,133 - WARNING - Intento 2/3 fallido. Status: 404, Response: +404 Not Found + +

404 Not Found

+ +2025-02-03 21:08:33,859 - INFO - Webhook enviado exitosamente a https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:08:33,860 - INFO - Conexión de webhook probada exitosamente +2025-02-03 21:08:33,870 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:10:00,694 - ERROR - Error procesando frame: name 'DatabaseError' is not defined +2025-02-03 21:10:00,694 - ERROR - Error inesperado: Error en el procesamiento del frame: name 'DatabaseError' is not defined +2025-02-03 21:10:01,233 - INFO - Recursos de la cámara liberados +2025-02-03 21:10:46,233 - INFO - Webhook enviado exitosamente a https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:10:46,234 - INFO - Conexión de webhook probada exitosamente +2025-02-03 21:10:46,234 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:11:10,109 - ERROR - Error procesando frame: name 'DatabaseError' is not defined +2025-02-03 21:11:10,110 - ERROR - Error inesperado: Error en el procesamiento del frame: name 'DatabaseError' is not defined +2025-02-03 21:11:10,651 - INFO - Recursos de la cámara liberados +2025-02-03 21:13:20,806 - INFO - Webhook enviado exitosamente a https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:13:20,807 - INFO - Conexión de webhook probada exitosamente +2025-02-03 21:13:20,807 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:13:58,920 - ERROR - Error procesando frame: 'QRDetector' object has no attribute 'db' +2025-02-03 21:13:58,920 - ERROR - Error inesperado: Error en el procesamiento del frame: 'QRDetector' object has no attribute 'db' +2025-02-03 21:13:59,464 - INFO - Recursos de la cámara liberados +2025-02-03 21:16:06,585 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:16:39,122 - INFO - Datos enviados al webhook: http://en.m.wikipedia.org +2025-02-03 21:16:53,725 - INFO - Datos enviados al webhook: http://en.m.wikipedia.org +2025-02-03 21:24:09,640 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:24:29,988 - INFO - Nuevo lote añadido: https://sans.org/ouch +2025-02-03 21:25:02,370 - INFO - Nuevo lote añadido: https://apple.co/3ygzxCD +2025-02-03 21:26:21,301 - INFO - Base de datos inicializada correctamente +2025-02-03 21:26:21,301 - INFO - Base de datos inicializada correctamente +2025-02-03 21:26:21,302 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:26:27,843 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 21:26:27,845 - INFO - QR detectado - Tipo: QRCODE, Datos: https://apple.co/3ygzxCD +2025-02-03 21:26:39,368 - INFO - QR guardado en DB. Total escaneos: 1 +2025-02-03 21:26:39,369 - INFO - QR detectado - Tipo: QRCODE, Datos: https://www.ncsc.admin.ch +2025-02-03 21:27:04,217 - INFO - Cerrando aplicación... +2025-02-03 21:27:04,760 - INFO - Recursos de la cámara liberados +2025-02-03 21:27:55,915 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:28:03,950 - INFO - Nuevo lote añadido: https://www.ncsc.admin.ch +2025-02-03 21:28:27,101 - INFO - Nuevo lote añadido: http://www.joydeepdeb.com/ +2025-02-03 21:32:34,347 - INFO - Intentando enviar a API: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:32:34,348 - INFO - Headers: {'Content-Type': 'application/json', 'x-api-key': 'tu-api-key-aqui'} +2025-02-03 21:32:34,348 - INFO - Payload: {'lotes': ['https://www.ncsc.admin.ch', 'http://www.joydeepdeb.com/']} +2025-02-03 21:32:48,946 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:33:04,505 - INFO - QR detectado - Contenido: http://www.joydeepdeb.com/ +2025-02-03 21:33:04,506 - INFO - Lote añadido. Total lotes: 1 +2025-02-03 21:33:04,506 - INFO - Contenido actual de lotes: ['http://www.joydeepdeb.com/'] +2025-02-03 21:33:18,582 - INFO - QR detectado - Contenido: https://sans.org/ouch +2025-02-03 21:33:18,583 - INFO - Lote añadido. Total lotes: 2 +2025-02-03 21:33:18,583 - INFO - Contenido actual de lotes: ['http://www.joydeepdeb.com/', 'https://sans.org/ouch'] +2025-02-03 21:34:03,978 - INFO - QR detectado - Contenido: tel: +2025-02-03 21:34:03,978 - INFO - Lote añadido. Total lotes: 3 +2025-02-03 21:34:03,978 - INFO - Contenido actual de lotes: ['http://www.joydeepdeb.com/', 'https://sans.org/ouch', 'tel:'] +2025-02-03 21:34:08,088 - INFO - QR detectado - Contenido: http://en.m.wikipedia.org +2025-02-03 21:34:08,088 - INFO - Lote añadido. Total lotes: 4 +2025-02-03 21:34:08,088 - INFO - Contenido actual de lotes: ['http://www.joydeepdeb.com/', 'https://sans.org/ouch', 'tel:', 'http://en.m.wikipedia.org'] +2025-02-03 21:34:10,089 - INFO - QR detectado - Contenido: https://sans.org/ouch +2025-02-03 21:34:10,090 - INFO - QR ya existe en lotes, no se añade +2025-02-03 21:34:18,762 - INFO - QR detectado - Contenido: tel: +2025-02-03 21:34:18,763 - INFO - QR ya existe en lotes, no se añade +2025-02-03 21:35:33,282 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:35:37,948 - INFO - QR detectado - Contenido: http://en.m.wikipedia.org +2025-02-03 21:35:37,948 - INFO - Lote añadido. Total lotes: 1 +2025-02-03 21:35:37,948 - INFO - Contenido actual de lotes: ['http://en.m.wikipedia.org'] +2025-02-03 21:35:37,949 - INFO - Intentando enviar a API: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:35:37,949 - INFO - Headers: {'Content-Type': 'application/json', 'x-api-key': 'tu-api-key-aqui'} +2025-02-03 21:35:37,949 - INFO - Payload: {'lotes': ['http://en.m.wikipedia.org']} +2025-02-03 21:35:58,828 - INFO - Respuesta de la API - Status Code: 200 +2025-02-03 21:35:58,829 - INFO - Respuesta de la API - Contenido: This URL has no default content configured. View in Webhook.site. +2025-02-03 21:35:58,829 - INFO - Lotes enviados exitosamente: ['http://en.m.wikipedia.org'] +2025-02-03 21:36:10,509 - INFO - QR detectado - Contenido: http://en.m.wikipedia.org +2025-02-03 21:36:10,509 - INFO - Lote añadido. Total lotes: 1 +2025-02-03 21:36:10,509 - INFO - Contenido actual de lotes: ['http://en.m.wikipedia.org'] +2025-02-03 21:36:10,510 - INFO - Intentando enviar a API: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:36:10,510 - INFO - Headers: {'Content-Type': 'application/json', 'x-api-key': 'tu-api-key-aqui'} +2025-02-03 21:36:10,510 - INFO - Payload: {'lotes': ['http://en.m.wikipedia.org']} +2025-02-03 21:36:31,493 - INFO - Respuesta de la API - Status Code: 200 +2025-02-03 21:36:31,494 - INFO - Respuesta de la API - Contenido: This URL has no default content configured. View in Webhook.site. +2025-02-03 21:36:31,494 - INFO - Lotes enviados exitosamente: ['http://en.m.wikipedia.org'] +2025-02-03 21:39:33,186 - INFO - No hay lotes para enviar +2025-02-03 21:39:33,186 - INFO - Recursos liberados +2025-02-03 21:40:23,592 - INFO - Base de datos inicializada correctamente +2025-02-03 21:40:23,593 - INFO - Configuración API cargada: +2025-02-03 21:40:23,593 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:40:23,593 - INFO - Batch size: 1 +2025-02-03 21:40:23,593 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:40:23,593 - INFO - Batch size configurado: 1 +2025-02-03 21:40:37,968 - ERROR - Error en verificación de QR: Expecting value: line 1 column 1 (char 0) +2025-02-03 21:40:37,970 - INFO - Nuevo QR detectado - Contenido: tel: +2025-02-03 21:40:37,970 - INFO - Lote añadido. Total lotes: 1 +2025-02-03 21:40:37,971 - INFO - Contenido actual de lotes: ['tel:'] +2025-02-03 21:40:37,972 - INFO - Intentando enviar a API: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:40:37,972 - INFO - Headers: {'Content-Type': 'application/json', 'x-api-key': 'tu-api-key-aqui'} +2025-02-03 21:40:37,973 - INFO - Payload: {'lotes': ['tel:']} +2025-02-03 21:40:58,808 - INFO - Respuesta de la API - Status Code: 200 +2025-02-03 21:40:58,809 - INFO - Respuesta de la API - Contenido: This URL has no default content configured. View in Webhook.site. +2025-02-03 21:40:58,809 - INFO - Lotes enviados exitosamente: ['tel:'] +2025-02-03 21:44:29,790 - INFO - No hay lotes para enviar +2025-02-03 21:44:29,791 - INFO - Recursos liberados +2025-02-03 21:44:46,093 - INFO - Base de datos inicializada correctamente +2025-02-03 21:44:46,094 - INFO - Configuración API cargada: +2025-02-03 21:44:46,094 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-03 21:44:46,094 - INFO - Batch size: 1 +2025-02-03 21:44:46,094 - INFO - Iniciando detector de códigos QR... +2025-02-03 21:44:46,095 - INFO - Batch size configurado: 1 +2025-02-03 21:44:55,063 - INFO - QR guardado en DB: http://en.m.wikipedia.org +2025-02-03 21:44:55,063 - INFO - QR guardado en base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:55,063 - INFO - Añadido a lotes para API. Total: 1 +2025-02-03 21:44:55,064 - INFO - Enviando lotes a API: ['http://en.m.wikipedia.org'] +2025-02-03 21:44:57,049 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,049 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,110 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,112 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,135 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,136 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,172 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,173 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,198 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,199 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,224 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,224 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,248 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,248 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,347 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,348 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,373 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,374 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,410 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,411 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,435 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,436 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,473 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,474 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,498 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,499 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,526 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,527 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,547 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,548 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,590 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,651 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:57,676 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:58,557 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:58,574 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:58,670 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:58,687 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,280 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,408 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,430 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,474 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,497 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,521 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:44:59,542 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:00,337 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:00,436 - INFO - QR guardado en DB: https://sans.org/ouch +2025-02-03 21:45:00,436 - INFO - QR guardado en base de datos: https://sans.org/ouch +2025-02-03 21:45:00,436 - INFO - Añadido a lotes para API. Total: 1 +2025-02-03 21:45:05,908 - INFO - Lotes enviados exitosamente +2025-02-03 21:45:05,908 - INFO - Enviando lotes a API: ['https://sans.org/ouch'] +2025-02-03 21:45:08,895 - INFO - QR guardado en DB: http://www.joydeepdeb.com/ +2025-02-03 21:45:08,896 - INFO - QR guardado en base de datos: http://www.joydeepdeb.com/ +2025-02-03 21:45:08,896 - INFO - Añadido a lotes para API. Total: 1 +2025-02-03 21:45:09,556 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,557 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,588 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,588 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,618 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,619 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,650 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,684 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,685 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,729 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,730 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,763 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,763 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,788 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,789 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,812 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,813 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,858 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,923 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,956 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:09,989 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,039 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,067 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,088 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,110 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,132 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,162 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,197 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,228 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,257 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:10,342 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,412 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,412 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,876 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,922 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,957 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:11,988 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,019 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,053 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,054 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,084 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,085 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,114 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,145 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,179 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,225 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,259 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,260 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,285 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:12,285 - INFO - QR ya existe en la base de datos: http://en.m.wikipedia.org +2025-02-03 21:45:21,186 - ERROR - Error en envío a API: HTTPSConnectionPool(host='webhook.site', port=443): Read timed out. (read timeout=5) +2025-02-03 21:45:21,187 - INFO - Enviando lotes a API: ['http://www.joydeepdeb.com/'] +2025-02-03 21:45:22,849 - INFO - QR guardado en DB: +2025-02-03 21:45:22,850 - INFO - QR guardado en base de datos: +2025-02-03 21:45:22,850 - INFO - Añadido a lotes para API. Total: 1 +2025-02-03 21:45:36,508 - ERROR - Error en envío a API: HTTPSConnectionPool(host='webhook.site', port=443): Read timed out. (read timeout=5) +2025-02-03 21:45:36,509 - INFO - Enviando lotes a API: [''] +2025-02-03 21:45:57,018 - ERROR - Error en envío a API: HTTPSConnectionPool(host='webhook.site', port=443): Read timed out. (read timeout=5) +2025-02-03 21:46:44,215 - INFO - Recursos liberados +2025-02-04 08:40:52,293 - INFO - Base de datos inicializada correctamente +2025-02-04 08:40:52,294 - INFO - Configuración API cargada: +2025-02-04 08:40:52,294 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 08:40:52,294 - INFO - Batch size: 1 +2025-02-04 08:40:52,295 - INFO - Iniciando detector de códigos QR... +2025-02-04 08:40:52,295 - INFO - Batch size configurado: 1 +2025-02-04 08:41:16,135 - INFO - QR guardado en DB: Hello :) +2025-02-04 08:41:16,135 - INFO - QR guardado en base de datos: Hello :) +2025-02-04 08:41:16,136 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 08:41:16,138 - INFO - Enviando lotes a API: ['Hello :)'] +2025-02-04 08:41:16,190 - INFO - QR guardado en DB: https://l.ead.me/api-1 +2025-02-04 08:41:16,190 - INFO - QR guardado en base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:16,190 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 08:41:16,192 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,239 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,287 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,336 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,398 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,451 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,509 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,567 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,628 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,691 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,751 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,812 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,837 - INFO - Lotes enviados exitosamente +2025-02-04 08:41:16,838 - INFO - Enviando lotes a API: ['https://l.ead.me/api-1'] +2025-02-04 08:41:16,873 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,936 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:16,997 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,058 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,119 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,180 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,243 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,302 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,377 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,413 - INFO - Lotes enviados exitosamente +2025-02-04 08:41:17,446 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,510 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,576 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,640 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,703 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:17,953 - INFO - QR guardado en DB: https://qr-codes.io/1tTjBstLWTE +2025-02-04 08:41:17,954 - INFO - QR guardado en base de datos: https://qr-codes.io/1tTjBstLWTE +2025-02-04 08:41:17,954 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 08:41:17,955 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:17,956 - INFO - Enviando lotes a API: ['https://qr-codes.io/1tTjBstLWTE'] +2025-02-04 08:41:18,019 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,084 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,149 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,213 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,282 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,348 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,416 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,480 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,524 - INFO - Lotes enviados exitosamente +2025-02-04 08:41:18,546 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,615 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,682 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,750 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,816 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,882 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:18,947 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,013 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,076 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,140 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,207 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,273 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,336 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,337 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,400 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,401 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,464 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,465 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,530 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,531 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,594 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,594 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,662 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,725 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,726 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,790 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,791 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,856 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,857 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,921 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,922 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:19,988 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:19,989 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,053 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,054 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,119 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,119 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,179 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,180 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,242 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,243 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,306 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,306 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,370 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,371 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 08:41:20,438 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,502 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,565 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,630 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 08:41:20,671 - INFO - Recursos liberados +2025-02-04 08:42:18,804 - INFO - Base de datos inicializada correctamente +2025-02-04 08:42:18,805 - INFO - Configuración API cargada: +2025-02-04 08:42:18,805 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 08:42:18,805 - INFO - Batch size: 1 +2025-02-04 08:42:18,805 - INFO - Iniciando detector de códigos QR... +2025-02-04 08:42:18,806 - INFO - Batch size configurado: 1 +2025-02-04 08:42:23,754 - INFO - Recursos liberados +2025-02-04 08:42:33,191 - INFO - Base de datos inicializada correctamente +2025-02-04 08:42:33,191 - INFO - Configuración API cargada: +2025-02-04 08:42:33,192 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 08:42:33,192 - INFO - Batch size: 1 +2025-02-04 08:42:33,192 - INFO - Iniciando detector de códigos QR... +2025-02-04 08:42:33,192 - INFO - Batch size configurado: 1 +2025-02-04 08:42:40,142 - INFO - Recursos liberados +2025-02-04 09:28:48,553 - INFO - Base de datos inicializada correctamente +2025-02-04 09:28:48,554 - INFO - Configuración API cargada: +2025-02-04 09:28:48,555 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 09:28:48,555 - INFO - Batch size: 1 +2025-02-04 09:28:48,555 - INFO - Iniciando detector de códigos QR... +2025-02-04 09:28:48,555 - INFO - Batch size configurado: 1 +2025-02-04 09:29:22,643 - INFO - Base de datos inicializada correctamente +2025-02-04 09:29:22,644 - INFO - Configuración API cargada: +2025-02-04 09:29:22,644 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 09:29:22,644 - INFO - Batch size: 1 +2025-02-04 09:29:22,644 - INFO - Iniciando detector de códigos QR... +2025-02-04 09:29:22,645 - INFO - Batch size configurado: 1 +2025-02-04 09:29:28,152 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:28,206 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:28,461 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:28,562 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:29,915 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:30,287 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:30,341 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:30,662 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:30,718 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:32,770 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:35,493 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:35,544 - ERROR - Error procesando QR individual: DBHandler.save_qr() missing 1 required positional argument: 'camera_name' +2025-02-04 09:29:37,638 - INFO - Recursos liberados +2025-02-04 09:30:06,433 - INFO - Base de datos inicializada correctamente +2025-02-04 09:30:06,434 - INFO - Configuración API cargada: +2025-02-04 09:30:06,434 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 09:30:06,435 - INFO - Batch size: 1 +2025-02-04 09:30:06,435 - INFO - Iniciando detector de códigos QR... +2025-02-04 09:30:06,435 - INFO - Batch size configurado: 1 +2025-02-04 09:30:09,379 - INFO - QR guardado en DB: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:09,380 - INFO - QR guardado en base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:09,380 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:30:09,430 - INFO - Enviando lotes a API: ['https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html'] +2025-02-04 09:30:10,073 - INFO - Lotes enviados exitosamente +2025-02-04 09:30:11,369 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,475 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,528 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,637 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,689 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,741 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,792 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:11,848 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:12,102 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:12,962 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,588 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,636 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,684 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,733 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,781 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,830 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,878 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,927 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:13,977 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,027 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,075 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,127 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,173 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,219 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,266 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,313 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,360 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,631 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,680 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,727 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,773 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,819 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,866 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,914 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:30:14,944 - INFO - Recursos liberados +2025-02-04 09:54:20,393 - INFO - Base de datos inicializada correctamente +2025-02-04 09:55:36,817 - INFO - Base de datos inicializada correctamente +2025-02-04 09:55:36,818 - INFO - Configuración API cargada: +2025-02-04 09:55:36,819 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 09:55:36,820 - INFO - Batch size: 1 +2025-02-04 09:55:36,820 - INFO - Iniciando detector de códigos QR... +2025-02-04 09:55:36,820 - INFO - Batch size configurado: 1 +2025-02-04 09:55:46,227 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,277 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,326 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,374 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,422 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,468 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,516 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,606 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,652 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,742 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,789 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,839 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,886 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:46,934 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,028 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,074 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,122 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,168 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,215 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,263 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,311 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,357 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,406 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,455 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,502 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,550 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,598 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,646 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,694 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,739 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,787 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,836 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,884 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,932 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:47,980 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:48,030 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:48,078 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:55:51,076 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,077 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,171 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,172 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,173 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,173 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,228 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,228 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,229 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,229 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,293 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,293 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,295 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,295 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,353 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,354 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,355 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,355 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,415 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,415 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,416 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,416 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,473 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,474 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,475 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,475 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,533 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,534 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,535 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,535 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,595 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,596 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,597 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,597 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,652 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,652 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,654 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,654 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,655 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,655 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,712 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,713 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,714 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,715 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,715 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,716 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,771 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,771 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,772 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,772 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,773 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,773 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,832 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,833 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,834 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,834 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,835 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,836 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,890 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,890 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,891 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,891 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,893 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,893 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,948 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,949 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,950 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,951 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,952 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:51,952 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,008 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,008 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,009 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,010 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,011 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,011 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,067 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,068 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,069 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,069 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,070 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,071 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,127 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,128 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,129 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,129 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,131 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,131 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,190 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,191 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,192 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,192 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,193 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,194 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,253 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,254 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,254 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,255 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,256 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,256 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,335 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,335 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,337 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,337 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,338 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,339 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,396 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,397 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,398 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,399 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,399 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,400 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,455 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,455 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,456 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,457 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,512 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,513 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,514 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,514 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,569 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,569 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,570 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,571 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,571 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,572 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,628 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,629 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,630 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,630 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,687 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,688 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,689 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,689 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,690 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,691 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,749 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,749 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,750 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,751 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,752 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,752 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,814 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,815 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,816 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,816 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,817 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,817 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,876 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,877 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,878 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,878 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,880 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,880 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,939 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,939 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,941 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,941 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,943 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:52,943 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,005 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,006 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,007 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,007 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,008 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,009 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,065 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,065 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,066 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,067 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,067 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,068 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,128 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,130 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,131 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,131 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,133 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,134 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,188 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,189 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,190 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,191 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,192 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,192 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,243 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,244 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,245 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,246 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,299 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,299 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,301 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,301 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,356 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,357 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,358 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,358 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,413 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,413 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,414 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,415 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,468 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,469 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,470 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,470 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,660 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,661 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,662 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,662 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,716 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,716 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,717 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,717 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,771 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,771 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,772 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,773 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,828 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,829 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,829 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,830 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,884 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,884 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,885 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,886 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,940 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,941 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,942 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,942 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,998 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,998 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,999 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:53,999 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,000 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,000 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,059 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,059 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,060 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,061 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,062 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,062 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,116 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,117 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,118 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,118 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,259 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,259 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,260 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,260 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,313 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,313 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,314 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,314 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,367 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,367 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,368 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,368 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,422 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,422 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,423 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,423 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,478 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,478 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,479 - ERROR - Error de conexión a la base de datos: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:55:54,480 - ERROR - Error guardando QR: UNIQUE constraint failed: qr_codes.camera_name +2025-02-04 09:57:44,309 - INFO - Recursos liberados +2025-02-04 09:57:45,962 - INFO - Base de datos inicializada correctamente +2025-02-04 09:57:45,963 - INFO - Configuración API cargada: +2025-02-04 09:57:45,963 - INFO - URL: https://webhook.site/92f87e0c-3611-43b1-8010-b873835b9e75 +2025-02-04 09:57:45,963 - INFO - Batch size: 1 +2025-02-04 09:57:45,963 - INFO - Iniciando detector de códigos QR... +2025-02-04 09:57:45,963 - INFO - Batch size configurado: 1 +2025-02-04 09:57:54,567 - INFO - QR guardado en DB: https://l.ead.me/api-1 +2025-02-04 09:57:54,567 - INFO - QR guardado en base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:54,567 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:57:54,568 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:57:54,622 - INFO - Enviando lotes a API: ['https://l.ead.me/api-1'] +2025-02-04 09:57:55,154 - INFO - QR guardado en DB: Text to Create QR for. +2025-02-04 09:57:55,154 - INFO - QR guardado en base de datos: Text to Create QR for. +2025-02-04 09:57:55,154 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:57:55,156 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,156 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:57:55,231 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,274 - INFO - Lotes enviados exitosamente +2025-02-04 09:57:55,275 - INFO - Enviando lotes a API: ['Text to Create QR for.'] +2025-02-04 09:57:55,309 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,381 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,447 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,515 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,573 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,636 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,692 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,750 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,808 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,850 - INFO - Lotes enviados exitosamente +2025-02-04 09:57:55,870 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,931 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:55,991 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,052 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,110 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,172 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,237 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,299 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,360 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,423 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,492 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,560 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,621 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,686 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,752 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,820 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,888 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:56,956 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,029 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,102 - INFO - QR guardado en DB: https://www.fotor.com/qr-code-generator/ +2025-02-04 09:57:57,102 - INFO - QR guardado en base de datos: https://www.fotor.com/qr-code-generator/ +2025-02-04 09:57:57,103 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:57:57,105 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,106 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,106 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:57:57,176 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,177 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,177 - INFO - Enviando lotes a API: ['https://www.fotor.com/qr-code-generator/'] +2025-02-04 09:57:57,243 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,244 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,312 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,313 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,382 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,383 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,449 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,450 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,515 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,515 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,583 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,584 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,653 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,654 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,725 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,725 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,735 - INFO - Lotes enviados exitosamente +2025-02-04 09:57:57,796 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,797 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:57,867 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:57,868 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,003 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,004 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,071 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,072 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,139 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,140 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,203 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,204 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,272 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,273 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,338 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,339 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,406 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,407 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,475 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,476 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,545 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,546 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,617 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,617 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,689 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,690 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,762 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,763 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,835 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,836 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,905 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,906 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:58,973 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:58,974 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,038 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,039 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,096 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,097 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,155 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,155 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,213 - INFO - QR ya existe en la base de datos: https://www.fotor.com/qr-code-generator/ +2025-02-04 09:57:59,214 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,215 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,269 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,270 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,325 - INFO - QR ya existe en la base de datos: https://www.fotor.com/qr-code-generator/ +2025-02-04 09:57:59,326 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,327 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,380 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,381 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,436 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,437 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,494 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,494 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,556 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,557 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,622 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,623 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,690 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,691 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,757 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,758 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,822 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:57:59,823 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,883 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:57:59,945 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,014 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,345 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,644 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,645 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,707 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,708 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,767 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,768 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,833 - INFO - QR ya existe en la base de datos: https://www.fotor.com/qr-code-generator/ +2025-02-04 09:58:00,834 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,835 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,902 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,903 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:00,966 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:00,967 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:01,033 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:01,034 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:01,830 - INFO - QR guardado en DB: https://apple.co/3ygzxCD +2025-02-04 09:58:01,831 - INFO - QR guardado en base de datos: https://apple.co/3ygzxCD +2025-02-04 09:58:01,831 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:01,831 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:01,882 - INFO - Enviando lotes a API: ['https://apple.co/3ygzxCD'] +2025-02-04 09:58:02,514 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:03,991 - INFO - QR guardado en DB: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:03,992 - INFO - QR guardado en base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:03,992 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:03,992 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:04,052 - INFO - Enviando lotes a API: ['https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html'] +2025-02-04 09:58:04,593 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:05,863 - INFO - QR guardado en DB: Hello :) +2025-02-04 09:58:05,864 - INFO - QR guardado en base de datos: Hello :) +2025-02-04 09:58:05,864 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:05,864 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:05,919 - INFO - Enviando lotes a API: ['Hello :)'] +2025-02-04 09:58:05,976 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,033 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,088 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,147 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,369 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,428 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,483 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:06,484 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,527 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:06,537 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:06,538 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,595 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:06,596 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,655 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,712 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,777 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,841 - INFO - QR guardado en DB: http://www.joydeepdeb.com/ +2025-02-04 09:58:06,842 - INFO - QR guardado en base de datos: http://www.joydeepdeb.com/ +2025-02-04 09:58:06,842 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:06,843 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,844 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 09:58:06,844 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:06,904 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,905 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 09:58:06,905 - INFO - Enviando lotes a API: ['http://www.joydeepdeb.com/'] +2025-02-04 09:58:06,965 - INFO - QR ya existe en la base de datos: https://l.ead.me/api-1 +2025-02-04 09:58:06,966 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 09:58:07,036 - INFO - QR guardado en DB: https://qr-codes.io/1tTjBstLWTE +2025-02-04 09:58:07,037 - INFO - QR guardado en base de datos: https://qr-codes.io/1tTjBstLWTE +2025-02-04 09:58:07,037 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:07,039 - INFO - QR ya existe en la base de datos: http://www.joydeepdeb.com/ +2025-02-04 09:58:07,039 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:07,040 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 09:58:07,040 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:07,104 - INFO - QR ya existe en la base de datos: http://www.joydeepdeb.com/ +2025-02-04 09:58:07,105 - INFO - QR ya existe en la base de datos: https://www.tripadvisor.ie/Restaurant_Review-g189112-d7075860-Reviews-The_Indian_Sizzler-Albufeira_Faro_District_Algarve.html +2025-02-04 09:58:07,106 - INFO - QR ya existe en la base de datos: Hello :) +2025-02-04 09:58:07,450 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:07,451 - INFO - Enviando lotes a API: ['https://qr-codes.io/1tTjBstLWTE'] +2025-02-04 09:58:08,703 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:09,715 - INFO - QR guardado en DB: https://kreatology.com/contact/ +2025-02-04 09:58:09,715 - INFO - QR guardado en base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:09,715 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:09,715 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:09,768 - INFO - Enviando lotes a API: ['https://kreatology.com/contact/'] +2025-02-04 09:58:09,957 - INFO - QR guardado en DB: https://www.aptika.com/qrcode/ +2025-02-04 09:58:09,958 - INFO - QR guardado en base de datos: https://www.aptika.com/qrcode/ +2025-02-04 09:58:09,958 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:09,958 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:10,021 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,082 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,152 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,217 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,282 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,345 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:10,346 - INFO - Enviando lotes a API: ['https://www.aptika.com/qrcode/'] +2025-02-04 09:58:10,346 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,412 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,476 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,538 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,607 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:10,672 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:11,006 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:11,288 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:11,351 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:11,413 - INFO - QR ya existe en la base de datos: https://kreatology.com/contact/ +2025-02-04 09:58:12,838 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:12,893 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:12,908 - INFO - QR guardado en DB: https://tcea.org/ +2025-02-04 09:58:12,908 - INFO - QR guardado en base de datos: https://tcea.org/ +2025-02-04 09:58:12,908 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:12,909 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:12,964 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:12,964 - INFO - Enviando lotes a API: ['https://tcea.org/'] +2025-02-04 09:58:13,020 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,079 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,136 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,195 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,273 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,338 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,401 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,463 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,531 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,581 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:13,597 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,660 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,722 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,911 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:13,974 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,036 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,092 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,154 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,212 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,271 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,335 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,400 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,460 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,521 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:14,583 - INFO - QR ya existe en la base de datos: Text to Create QR for. +2025-02-04 09:58:15,234 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,398 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,458 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,518 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,579 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,867 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,927 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:15,995 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:16,059 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:16,121 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:16,185 - INFO - QR ya existe en la base de datos: https://tcea.org/ +2025-02-04 09:58:18,570 - INFO - QR guardado en DB: https://www.canva.com/ +2025-02-04 09:58:18,570 - INFO - QR guardado en base de datos: https://www.canva.com/ +2025-02-04 09:58:18,571 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:18,571 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:18,653 - INFO - Enviando lotes a API: ['https://www.canva.com/'] +2025-02-04 09:58:18,756 - INFO - QR guardado en DB: http://www.shopify.com +2025-02-04 09:58:18,757 - INFO - QR guardado en base de datos: http://www.shopify.com +2025-02-04 09:58:18,757 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:18,758 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:18,865 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:18,994 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:19,000 - INFO - QR guardado en DB: https://tylerpotts.co.uk +2025-02-04 09:58:19,001 - INFO - QR guardado en base de datos: https://tylerpotts.co.uk +2025-02-04 09:58:19,001 - INFO - Añadido a lotes para API. Total: 1 +2025-02-04 09:58:19,002 - ERROR - Error en el bucle principal: 'QRDetector' object has no attribute 'save_frame_with_qr' +2025-02-04 09:58:19,108 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:19,109 - INFO - QR ya existe en la base de datos: http://www.shopify.com +2025-02-04 09:58:19,190 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:19,191 - INFO - Enviando lotes a API: ['http://www.shopify.com'] +2025-02-04 09:58:19,217 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:19,218 - INFO - QR ya existe en la base de datos: http://www.shopify.com +2025-02-04 09:58:19,316 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:19,317 - INFO - QR ya existe en la base de datos: http://www.shopify.com +2025-02-04 09:58:19,403 - INFO - QR ya existe en la base de datos: https://www.canva.com/ +2025-02-04 09:58:19,736 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:19,737 - INFO - Enviando lotes a API: ['https://tylerpotts.co.uk'] +2025-02-04 09:58:20,304 - INFO - Lotes enviados exitosamente +2025-02-04 09:58:54,986 - INFO - Recursos liberados diff --git a/qr_detector.py b/qr_detector.py new file mode 100644 index 0000000..fc02c70 --- /dev/null +++ b/qr_detector.py @@ -0,0 +1,267 @@ +import os +import cv2 +from pyzbar import pyzbar +import time +import logging +import sys +import yaml +import requests +from pathlib import Path +from typing import Optional, Tuple, List +from dataclasses import dataclass +from contextlib import contextmanager +import threading +from queue import Queue +from db_handler import DBHandler + +@dataclass +class QRData: + """Clase para almacenar información del código QR""" + data: str + code_type: str + coordinates: Tuple[int, int, int, int] + timestamp: float + +class QRDetector: + def __init__(self, config_path: str = 'config.yaml'): + self.config = self.load_config(config_path) + self.setup_logging() + self.camera_id = self.config['camera']['id'] + self.camera_name = self.config.get('camera', {}).get('name', 'NO_CAMERA_NAME') + self.min_delay = self.config['camera']['min_delay'] + self.camera = None + self.last_code = None + self.last_time = 0 + self.lotes = [] + self.api_queue = Queue() + self.running = True + + # Inicializar base de datos + self.db = DBHandler(self.config.get('database', {}).get('path', 'qr_codes.db')) + + # Iniciar thread para procesar envíos a la API + self.api_thread = threading.Thread(target=self.api_worker) + self.api_thread.daemon = True + self.api_thread.start() + + self.headless = self.config.get('headless', {}).get('enabled', False) + + + + # Crear directorio para imágenes si es necesario + + if self.headless and self.config['headless'].get('save_images', False): + + os.makedirs(self.config['headless']['image_output_dir'], exist_ok=True) + + # Verificar configuración de API + if 'api' in self.config: + self.logger.info(f"Configuración API cargada:") + self.logger.info(f"URL: {self.config['api']['url']}") + self.logger.info(f"Batch size: {self.config['api'].get('batch_size', 1)}") + else: + self.logger.error("No se encontró configuración de API") + + def load_config(self, config_path: str) -> dict: + """Carga la configuración desde el archivo YAML""" + try: + with open(config_path, 'r') as file: + return yaml.safe_load(file) + except Exception as e: + self.logger.error(f"Error cargando configuración: {e}") + sys.exit(1) + + def setup_logging(self): + """Configura el sistema de logging""" + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(sys.stdout), + logging.FileHandler('qr_detector.log') + ] + ) + self.logger = logging.getLogger(__name__) + + def api_worker(self): + """Worker thread para procesar envíos a la API""" + while self.running: + try: + lotes = self.api_queue.get(timeout=1) + if lotes: + self._send_to_api(lotes) + self.api_queue.task_done() + except: + continue + + def _send_to_api(self, lotes): + """Envía los lotes a la API (método interno)""" + try: + api_url = self.config['api']['url'] + headers = { + 'Content-Type': 'application/json', + 'x-api-key': self.config['api']['api_key'] + } + + payload = { + "lotes": lotes + } + + self.logger.info(f"Enviando lotes a API: {lotes}") + response = requests.post(api_url, json=payload, headers=headers, timeout=5) + + if response.status_code == 200: + self.logger.info(f"Lotes enviados exitosamente") + else: + self.logger.error(f"Error enviando lotes: {response.status_code}") + + except Exception as e: + self.logger.error(f"Error en envío a API: {e}") + + def send_to_api(self): + """Encola los lotes para envío asíncrono""" + if not self.lotes: + return + + # Copiar los lotes actuales y limpiar la lista + lotes_to_send = self.lotes.copy() + self.lotes = [] + + # Encolar para envío asíncrono + self.api_queue.put(lotes_to_send) + + @contextmanager + def initialize_camera(self): + """Inicializa la cámara""" + try: + self.camera = cv2.VideoCapture(self.camera_id) + if not self.camera.isOpened(): + self.logger.error("No se pudo abrir la cámara") + sys.exit(1) + yield self.camera + finally: + if self.camera: + self.camera.release() + cv2.destroyAllWindows() + self.send_to_api() # Enviar lotes pendientes al cerrar + self.logger.info("Recursos liberados") + + def process_frame(self, frame) -> List[QRData]: + """Procesa un frame y retorna los códigos QR detectados""" + try: + qr_codes = pyzbar.decode(frame) + current_time = time.time() + results = [] + + for qr_code in qr_codes: + try: + data = qr_code.data.decode('utf-8') + code_type = qr_code.type + coordinates = qr_code.rect + + if (data != self.last_code or + (current_time - self.last_time) > self.min_delay): + + # Verificar si el QR ya existe en la base de datos local + if self.db.check_qr_exists(data): + self.logger.info(f"QR ya existe en la base de datos: {data}") + continue + + # Guardar en la base de datos local + if self.db.save_qr(data,self.camera_name): + self.logger.info(f"QR guardado en base de datos: {data}") + + qr_data = QRData( + data=data, + code_type=code_type, + coordinates=coordinates, + timestamp=current_time + ) + results.append(qr_data) + + # Añadir a lotes para envío a API solo si es nuevo + if data not in self.lotes: + self.lotes.append(data) + self.logger.info(f"Añadido a lotes para API. Total: {len(self.lotes)}") + + self.last_code = data + self.last_time = current_time + + except Exception as e: + self.logger.error(f"Error procesando QR individual: {e}") + + return results + + except Exception as e: + self.logger.error(f"Error procesando frame: {e}") + return [] + + def draw_qr_info(self, frame, qr_data: QRData): + """Dibuja la información del QR en el frame""" + try: + x, y, w, h = qr_data.coordinates + + # Dibujar rectángulo + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + + # Mostrar información + display_text = f"{qr_data.code_type}: {qr_data.data}" + cv2.putText( + frame, + display_text, + (x, y - 10), + cv2.FONT_HERSHEY_SIMPLEX, + 0.5, + (0, 255, 0), + 2 + ) + + except Exception as e: + self.logger.error(f"Error dibujando información: {e}") + + def run(self): + """Método principal para ejecutar el detector""" + self.logger.info("Iniciando detector de códigos QR...") + batch_size = self.config['api'].get('batch_size', 1) + self.logger.info(f"Batch size configurado: {batch_size}") + + with self.initialize_camera() as camera: + while True: + try: + success, frame = camera.read() + if not success: + self.logger.error("Error capturando frame") + break + + qr_codes = self.process_frame(frame) + + for qr_data in qr_codes: + if self.headless: + self.save_frame_with_qr(frame, qr_data) + else: + self.draw_qr_info(frame, qr_data) + cv2.imshow('QR Detector', frame) + + if not self.headless: + if cv2.waitKey(1) & 0xFF == ord('q'): + self.running = False + if self.lotes: + self.logger.info(f"Enviando {len(self.lotes)} lotes pendientes...") + self.send_to_api() + self.api_queue.join() + break + + # Verificar y enviar lotes + if len(self.lotes) >= batch_size: + self.send_to_api() + + except Exception as e: + self.logger.error(f"Error en el bucle principal: {e}") + continue + +def main(): + detector = QRDetector() + detector.run() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..af2d285 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +opencv-python>=4.5.0 +pyzbar>=0.1.8 +numpy>=1.19.0 +pyyaml>=5.4.0 +requests>=2.32.3 \ No newline at end of file diff --git a/webhook_handler.py b/webhook_handler.py new file mode 100644 index 0000000..883fac3 --- /dev/null +++ b/webhook_handler.py @@ -0,0 +1,126 @@ +import requests +import logging +import time +from typing import Dict, Any +from dataclasses import dataclass, asdict +from datetime import datetime + +@dataclass +class WebhookConfig: + url: str + method: str + headers: Dict[str, str] + retry: Dict[str, int] + +class WebhookError(Exception): + """Clase para errores relacionados con webhooks""" + pass + +class WebhookHandler: + def __init__(self, webhook_config: dict): + self.config = webhook_config + self.logger = logging.getLogger(__name__) + self.session = requests.Session() + + def prepare_payload(self, qr_data: dict, scan_count: int) -> dict: + """Prepara el payload para el webhook""" + return { + "event_type": "qr_detected", + "timestamp": datetime.now().isoformat(), + "qr_data": { + "content": qr_data.get('data'), + "type": qr_data.get('code_type'), + "scan_count": scan_count, + "coordinates": qr_data.get('coordinates'), + "detection_timestamp": qr_data.get('timestamp') + }, + "device_info": { + "id": "qr_detector_01", # Puedes configurar esto + "location": "main_entrance" # Puedes configurar esto + } + } + + def send_webhook(self, endpoint: WebhookConfig, payload: dict) -> bool: + """Envía el webhook con reintentos""" + max_attempts = endpoint.retry['max_attempts'] + delay = endpoint.retry['delay_seconds'] + + for attempt in range(max_attempts): + try: + response = self.session.request( + method=endpoint.method, + url=endpoint.url, + json=payload, + headers=endpoint.headers, + timeout=10 + ) + + if response.ok: + self.logger.info(f"Webhook enviado exitosamente a {endpoint.url}") + return True + + self.logger.warning( + f"Intento {attempt + 1}/{max_attempts} fallido. " + f"Status: {response.status_code}, " + f"Response: {response.text[:100]}" + ) + + except requests.RequestException as e: + self.logger.error(f"Error en intento {attempt + 1}/{max_attempts}: {e}") + + if attempt < max_attempts - 1: + time.sleep(delay) + + self.logger.error(f"Todos los intentos de webhook fallaron para {endpoint.url}") + return False + + def notify(self, qr_data: dict, scan_count: int) -> None: + """Maneja el envío de notificaciones basado en las reglas configuradas""" + try: + # Verificar reglas de notificación + is_new = scan_count == 1 + should_notify = ( + (is_new and self.config['notification_rules']['send_on_new']) or + (not is_new and self.config['notification_rules']['send_on_repeat']) + ) + + if not should_notify: + return + + payload = self.prepare_payload(qr_data, scan_count) + + for endpoint_config in self.config['endpoints']: + endpoint = WebhookConfig( + url=endpoint_config['url'], + method=endpoint_config['method'], + headers=endpoint_config['headers'], + retry=endpoint_config['retry'] + ) + + self.send_webhook(endpoint, payload) + + except Exception as e: + self.logger.error(f"Error procesando notificación: {e}") + raise WebhookError(f"Error en notificación: {e}") + + def test_connection(self) -> bool: + """Prueba las conexiones a todos los endpoints configurados""" + test_payload = { + "event_type": "connection_test", + "timestamp": datetime.now().isoformat() + } + + all_successful = True + + for endpoint_config in self.config['endpoints']: + endpoint = WebhookConfig( + url=endpoint_config['url'], + method=endpoint_config['method'], + headers=endpoint_config['headers'], + retry=endpoint_config['retry'] + ) + + if not self.send_webhook(endpoint, test_payload): + all_successful = False + + return all_successful \ No newline at end of file