'use strict'; // ── Configuración ────────────────────────────────────────────── // BOE Sección II-B: Oposiciones, concursos y vacantes const BOE_RSS = 'https://www.boe.es/rss/boe_dias.php?s=2B'; // Proxy CORS gratuito que convierte RSS a JSON const RSS2JSON = 'https://api.rss2json.com/v1/api.json?rss_url='; // Palabras clave para resaltar entradas de interés informático/TAI const KW_TAI = /\b(TAI|T\.A\.I|técnico[a]? (de )?administración (general |de la )?inform|inform[aá]tic|sistemas?\s+de\s+información|AGE\b)/i; // ── Carga del feed BOE ───────────────────────────────────────── async function cargarBOE() { const panel = document.getElementById('boe-items'); const badge = document.getElementById('boe-fecha'); try { const resp = await fetch(RSS2JSON + encodeURIComponent(BOE_RSS)); if (!resp.ok) throw new Error('HTTP ' + resp.status); const data = await resp.json(); if (data.status !== 'ok') throw new Error('Feed error: ' + data.message); const items = data.items || []; if (items.length === 0) { panel.innerHTML = '

No hay publicaciones recientes en esta sección.

'; badge.textContent = 'Sin datos'; return; } // Separar: primero los que coincidan con TAI/informática, luego el resto const importantes = items.filter(it => KW_TAI.test(it.title + ' ' + (it.description || ''))); const resto = items.filter(it => !KW_TAI.test(it.title + ' ' + (it.description || ''))); const ordenados = [...importantes, ...resto].slice(0, 25); // Fecha de la última actualización del feed const fechaFeed = data.feed?.lastBuildDate ? new Date(data.feed.lastBuildDate).toLocaleDateString('es-ES', { day:'2-digit', month:'short', year:'numeric' }) : 'hoy'; badge.textContent = 'Act. ' + fechaFeed; panel.innerHTML = ordenados.map(item => { const esTAI = KW_TAI.test(item.title + ' ' + (item.description || '')); const fecha = item.pubDate ? new Date(item.pubDate).toLocaleDateString('es-ES', { day:'2-digit', month:'short', year:'numeric' }) : ''; const titulo = escHtml(truncar(item.title || 'Sin título', 120)); return `
${esTAI ? ' TAI / Informática' : ''} ${fecha}
${titulo}
`; }).join(''); } catch (err) { console.warn('[noticias.js] Error cargando BOE:', err.message); badge.textContent = 'Error'; panel.innerHTML = `
No se pudo cargar el feed automáticamente. Consulta el BOE directamente: Últimas publicaciones BOE
`; } } // ── Helpers ──────────────────────────────────────────────────── function escHtml(s) { return (s || '').replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } function truncar(s, max) { return s.length > max ? s.slice(0, max) + '…' : s; } // ── Arranque ─────────────────────────────────────────────────── cargarBOE();