import mysql.connector
import requests
from bs4 import BeautifulSoup
from datetime import datetime

# 1. Conexión a tu base de datos en entorno de producción LAMP (Ubuntu)
conexion = mysql.connector.connect(
    host="localhost",
    user="admin_mvc",      # Usuario específico para la aplicación web
    password="Satipo_mvc2026!", # Contraseña segura obligatoria en Linux
    database="noticias_satipo"
)
cursor = conexion.cursor()

# 2. Definimos la ruta de tu radar RSSHub local
# Ejemplo: Para extraer posts de una página de Facebook pública
# Sustituye "facebook/page/NombredelaPagina" por la ruta exacta que necesites
url_rsshub = 'https://feeds.bbci.co.uk/mundo/rss.xml'

print(f"Conectando al radar RSSHub en el puerto 1200...")
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}

try:
    respuesta = requests.get(url_rsshub, headers=headers, timeout=10)
    respuesta.raise_for_status()
    
    # RSSHub devuelve un formato XML, usamos BeautifulSoup para leerlo
    soup = BeautifulSoup(respuesta.text, 'html.parser')
    
    # En el formato RSS, cada publicación viene dentro de una etiqueta <item>
    noticias = soup.find_all('item', limit=5) # Capturamos las 5 más recientes
    
    print(f"Se encontraron {len(noticias)} publicaciones nuevas. Guardando en WAMP...\n")
    
    for noticia in noticias:
        # Extraemos título, descripción y enlace de las etiquetas
        titulo = noticia.title.text if noticia.title else "Sin título"
        descripcion_texto = noticia.description.text if noticia.description else "Sin descripción"
        enlace = noticia.link.text if noticia.link else "Sin enlace"
        
        fecha_actual = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        
        # 3. Inserción en la base de datos (usando tu estructura exacta)
        sql = "INSERT INTO noticias (titulo, descripcion, enlace_video, fecha) VALUES (%s, %s, %s, %s)"
        valores = (titulo, descripcion_texto, enlace, fecha_actual)
        
        cursor.execute(sql, valores)
        print(f"✔️ Guardado: {titulo[:40]}...")

    # Confirmamos los cambios en MySQL
    conexion.commit()
    print("\n¡Proceso de guardado terminado con éxito!")

except Exception as e:
    print(f"Ocurrió un error: {e}")

finally:
    # Siempre cerramos la conexión al final por buenas prácticas
    cursor.close()
    conexion.close()