<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Andrenalina</title>
    <style>
        body {
            text-align: center;
            background-color: #1a1a1a;
            color: #ffffff;
            transition: background-color 0.5s, color 0.5s;
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
            font-size: 1rem;
            text-align: left;
        }

        th,
        td {
            padding: 10px;
            border: 1px solid #ddd;
        }

        th {
            background-color: rgb(226, 59, 13);
        }

        .loading {
            text-align: center;
            font-size: 1.2rem;
            color: #ff4d4d;
         }

        .tabla-acestream {
            margin-top: 40px;
            text-align: center;

        }

        .tabla-Eventos {
            margin-top: 40px;
            text-align: center;
        }


        h1 {
            text-align: center;
            color: white;
        }

        a {
            text-align: center;
            color: #ff4d4d;
        }

        hr {
            border-color: #404040;
            margin: 15px 0;
        }

        td img {
        background-color: rgba(255, 255, 255, 0.9);
        padding: 0px;
        border-radius: 100px;
        backdrop-filter: blur(2px);
        }
    </style>
</head>

<body>
    <h1>/⁠╲⁠/⁠\⁠╭⁠(⁠•⁠‿⁠•⁠)⁠╮⁠/⁠\⁠╱⁠\</h1>
    <h1>Andrenalina</h1>
    <h1>by TokyoGhoull</h1>
    <div id="loading" class="loading">Cargando datos...</div>
    <table id="tablaEventos" class="tabla-Eventos" style="display: none;">
        <thead>
            <tr>
                <th>Hora</th>
                <th>Competición</th>
                <th>Evento</th>
                <th>Canales</th>
                <th>Eventos Acestream</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>

    <!-- Segunda tabla para AceStream -->
    <!-- <h2>Eventos Acestream</h2> -->
    <table id="tablaAcestream" class="tabla-acestream" style="display: none;">
        <thead>
            <tr>
                <th>Nombre</th>
                <th>Content ID</th>
                <th>Eventos</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>

    <script>
        const futbolUrls = [
            'https://www.futbolenlatv.es/deporte'
            //'https://www.futbolenlatv.es/competicion/la-liga-promises',
            //'https://www.futbolenlatv.es/deporte/balonmano',
            //'https://www.futbolenlatv.es/deporte/rugby',
        ];

        const andrenalinaUrls = [
            "https://api.jsonbin.io/v3/b/67648144ad19ca34f8ddf91a/latest?meta=true",
            "https://api.jsonbin.io/v3/b/67648144ad19ca34f8ddf91a/latest?meta=true"
        ];

        const acestreamUrls = [
            "https://api.codetabs.com/v1/proxy/?quest=http://ipfs.io/ipns/elcano.top",
            "https://ipfs.io/ipns/k51qzi5uqu5dgg9al11vomikugim0o1i3l3fxp3ym3jwaswmy9uz8pq4brg1u9",
            "htttps://s3.us.archive.org/abcd_20240416/Index.html"
        ];

																			
        const equivalenciasCanales = {
            "La 1 TVE": ["La1", "La1 UHD"],
            "Teledeporte": ["tdp 1080"],
            "Eurosport 1": ["EuroSport 1 1080"],
            "Eurosport 2": ["EuroSport 2 1080"],
            "Eurosport 4K (M444 O98)": ["..."],
            "M+ LaLiga TV (M54-O110)": ["M. LaLiga 1080P", "M. LaLiga 1080 MultiAudio", "M. LaLiga 720"],
            "M+ LaLiga TV UHD (M440 O111)": ["M. LaLiga 1080P", "M. LaLiga 1080 MultiAudio", "M. LaLiga 720"],
            "LaLiga TV M2": ["M. LaLiga 2 1080", "M. LaLiga 2 720"],
            "M+ LaLiga TV (M54-O110)": ["M. LaLiga 1080", "M. LaLiga 720"],
            "M+ LaLiga TV 2 (M57 O112)": ["M. LaLiga 2 1080", "M. LaLiga 2 720"],
            "M+ LaLiga TV 3 (M167 O270)": ["M. LaLiga 3 1080", "M. LaLiga 3 720"],
            "M+ LaLiga TV 4 (M168 O271)": ["M. LaLiga 4 1080", "M. LaLiga 4 720"],
            "LaLiga TV M2": ["M. LaLiga 2 720", "M. LaLiga 2 1080"],
            "LaLiga TV M3": ["M. LaLiga 3 720", "M. LaLiga 3 1080"],
            "LaLiga TV M4": ["M. LaLiga 4 1080", "M. LaLiga 4 720"],
            "LaLiga TV M5": ["M. LaLiga 5 1080", "M. LaLiga 5 720"],
            "LaLiga TV M6": ["M. LaLiga 6 1080", "M. LaLiga 6 720"],

            "LaLiga TV Bar": ["La Liga BAR 1080", "La Liga BAR 720"],

            "LALIGA TV Hypermotion (M56 O 119)": ["LaLiga Smartbank 1080", "LaLiga Smartbank 720"],
            "LALIGA TV Hypermotion 2 (M59 O120)": ["LaLiga Smartbank 2 1080", "LaLiga Smartbank 2 720"],
            "*": ["LaLiga Smartbank 3"],

            "Movistar Plus+ (M7)": ["M.Plus 1080", "M.Plus 720"],
            "Movistar Plus+ 2 (M176)": ["M.Plus 2 1080", "M.Plus 2 720"],

            "M+ Copa del Rey (M52 O107)": ["Copa 1080", "Copa 1080 plus", "Copa 1080 MultiAudio", "Copa 1080", "Copa 720"],
            "Movistar Supercopa de España (M52 O108)": ["Copa 1080", "Copa 1080 plus", "Copa 1080 MultiAudio", "Copa 1080", "Copa 720"],

            "M+ Vamos (8 y 53)": ["#Vamos 1080", "#Vamos 720"],
            "M+ #Vamos Bar (304)": ["#Vamos Bar 1080", "#Vamos Bar 720"],
            "M+ #Vamos Bar 2 (305)": ["#Vamos Bar 2 1080", "#Vamos Bar 2 720"],

            "M+ Ellas Vamos (66)": ["#Ellas 1080"],

            "M+ Deportes (63)": ["M. Deportes 1080", "M. Deportes 720"],
            "M+ Deportes 2 (64)": ["M. Deportes 2 1080", "M. Deportes 2 720"],
            "M+ Deportes 3 (65)": ["M. Deportes 3 1080", "M. Deportes 3 720"],
            "M+ Deportes 4 (191)": ["M. Deportes 4 1080", "M. Deportes 4 720"],
            "M+ Deportes 5 (192)": ["M. Deportes 5 1080", "M. Deportes 5 720"],
            "M+ Deportes 6 (193)": ["M. Deportes 6 1080", "M. Deportes 6 720"],
            "M+ Deportes 7 (194)": ["M. Deportes 7 1080", "M. Deportes 7 720"],

            "M+ Liga de Campeones": ["M.L. Campeones1080", "M.L. Campeones 720", "M.L. Campeones 1080 MultiAudio"],
            "M+ Liga de Campeones (M60 O115)": ["M.L. Campeones 1080", "M.L. Campeones 720", "M.L. Campeones 1080 MultiAudio"],
            "M+ Liga de Campeones 2 (M61 O116)": ["M.L. Campeones 2 SD", "M.L. Campeones 2 1080", "M.L. Campeones 2 720"],
            "M+ Liga de Campeones 3 (M62 O118)": ["M.L. Campeones 3 SD", "M.L. Campeones 3 1080", "M.L. Campeones 3 720"],
            "M+ Liga de Campeones 4 (M180 O276)": ["M.L. Campeones 4 SD", "M.L. Campeones 4 1080", "M.L. Campeones 4 720"],
            "M+ Liga de Campeones 5 (M182 O277)": ["M.L. Campeones 5 SD", "M.L. Campeones 5 1080", "M.L. Campeones 5 720"],
            "M+ Liga de Campeones 6 (M183 O278)": ["M.L. Campeones 6 SD", "M.L. Campeones 6 1080", "M.L. Campeones 6 720"],
            "M+ Liga de Campeones 7 (M184 O279)": ["M.L. Campeones 7 SD", "M.L. Campeones 7 1080", "M.L. Campeones 7 720"],
            "M+ Liga de Campeones 8 (M184 O280)": ["M.L. Campeones 8 SD", "M.L. Campeones 8 1080", "M.L. Campeones 8 720"],
            "M+ Liga de Campeones 9 (M185 O281)": ["M.L. Campeones 9 SD", "M.L. Campeones 9 1080", "M.L. Campeones 9 720"],
            "M+ Liga de Campeones 10 (M186 O282)": ["M.L. Campeones 10 SD", "M.L. Campeones 10 1080", "M.L. Campeones 10 720"],
            "M+ Liga de Campeones 11 (M187 O283)": ["M.L. Campeones 11 SD", "M.L. Campeones 11 1080", "M.L. Campeones 11 720"],
            "M+ Liga de Campeones 12 (M 188 O284)": ["M.L. Campeones 12 SD", "M.L. Campeones 12 1080", "M.L. Campeones 12 720"],
            "M+ Liga de Campeones 13 (M189 O285)": ["M.L. Campeones 13 SD", "M.L. Campeones 13 1080", "M.L. Campeones 13 720"],
            "M+ Liga de Campeones 14 (O286)": ["M.L. Campeones 14 1080", "M.L. Campeones 14 720", "M.L. Campeones 14 SD"],
            "M+ Liga de Campeones 15 (O287)": ["M.L. Campeones 15 SD", "M.L. Campeones 15 1080", "M.L. Campeones 15 720"],
            "M+ Liga de Campeones 16 (O288)": ["M.L. Campeones 16 SD", "M.L. Campeones 16 1080", "M.L. Campeones 16 720"],
            "M+ Liga de Campeones 17 (O289)": ["M.L. Campeones 17 SD", "M.L. Campeones 17 1080", "M.L. Campeones 17 720"],
            "M+ Liga de Campeones 18": ["M.L. Campeones 18 SD", "M.L. Campeones 18 1080", "M.L. Campeones 18 720"],
            "M+ Liga de Campeones 19": ["M.L. Campeones 19 SD", "M.L. Campeones 19 1080", "M.L. Campeones 19 720"],

            "Movistar Golf (M67)": ["M. Golf 1080", "M. Golf 720"],
            "Movistar Golf 2 (M68)": ["M. Golf2 1080", "M. Golf2 720"],

            "DAZN 1 (M70)": ["DAZN 1 1080", "DAZN 1 720"],
            "DAZN 1 Bar (Movistar-148)": ["DAZN 1 Bar 1080", "DAZN 1 Bar 720"],
            "DAZN 2 (M71)": ["DAZN 2 1080", "DAZN 2 720"],
            "DAZN 2 Bar (Movistar-149)": ["DAZN 2 Bar 1080", "DAZN 2 Bar 720"],
            "DAZN 3 (M196)": ["DAZN 3 1080", "DAZN 3 720"],
            "DAZN 4 (M197)": ["DAZN 4 1080", "DAZN 4 720"],

            "DAZN F1 (M69)": ["DAZN F1 Multicamara (Fórmula 1)", "DAZN F1 1080 (Fórmula 1)", "DAZN F1 720 (Fórmula 1)"],

            "DAZN LaLiga (M55 O113)": ["DAZN LaLiga 1080 MultiAudio", "DAZN LaLiga 720"],
            "DAZN LaLiga 2 (M58 O274)": ["DAZN LaLiga 2 1080 MultiAudio", "DAZN LaLiga 2 720"],

            "*": ["PPVP 1"],
            "*": ["PPVP 2"],
            "*": ["PPVP 3"],

            "Telecinco": ["Telecinco 1080", "Telecinco 720"],
            "Telemadrid": ["Telemadrid 1080", "Telemadrid 720", "Telemadrid"],
        };
        // Filtros genéricos basados en palabras clave
        const filtrosGenericos = [
            'YouTube',
            'Twitch',
            'Twitter',
            'Facebook',
            'DIRECTO',
            'directo',
            'Directo',
            'Play',
            'PLAY',
            'play',
            'PPV',
            'Regístrate',
            'acceder',
            'Acceder',
            '.com',
            '.es',
            'Web',
            'Dispositivos',
            'Orange',
            'Zapi',
            'Galicia',
            'Cataluña',
            'OneFootball',
            'Lite',
            '(País Vasco)',
            'Aragón',
            '7Play',
			'Netflix',
            'SFC TV',
            'La 7',
            'Bar'
        ];
        // Canales específicos que queremos excluir
        const canalesExcluidos = [
            "NBA League Pass",
            "MAX",
            "Plaiz",
            "Canal por confirmar",
            "FEF TV",
            "GolStadium Premium",
            "Esport3 Web",
            "DAZN App Gratis",
            "EHF TV",
            "Barça One",
            "Amazon Prime Video",
            "FCF TV",
            "Real Betis TV",
            "RFEF",
            "CONCACAF GO",
            "LaLiga+",
            "LaLiga+ Plus",
            "GolStadium",
            "CMMPlay",
            "La Xarxa+",
            "FEB TV",
            "TV FootballClub",
            "FANSEA",
            "FANSEAT",
            "Fight Sports Max",
            "À Punt (C. Valenciana)",
            "TV5 Monde",
            "ElCanalDelFutbol",
            "RTP Internacional",
            "RCN Nuestra Tele",
            "RFAF TV",
            "NWSL+",
            "7 TV Linares",
            "La Otra (Madrid)",
            "FIFA+",
            "Extv",
            "101 TV (Málaga)",
            "Real Avilés Industrial TV",
            "VivamóvilTV",
            "Telecartagena",
            "UEFA TV",
            "TV Melilla",
            "La 8 Burgos",
            "IB3 (Baleares)",
            "Popular TV Murcia",
            "Betevé (Barcelona)",
            "7 TV Jaén",
            "Canal Sur",
            "TPA 1 (Asturias)",
            "TV Canaria",
            "Real Madrid TV",
            "Lleida Televisió",
            "À Punt Mèdia",
            "Red Bull TV",
            "Eurovision Sports TV",
            "ATP Tennis TV",
            "Movistar+",
			"Real Betis TV",
            "WTA TV"
        ];
        function debeExcluirCanal(canalTitulo) {
            // Comprobar si el canal está en la lista de excluidos específicos
            if (canalesExcluidos.some(canal => canalTitulo.includes(canal))) {
                return true;
            }
            // Comprobar si el canal contiene alguna palabra clave genérica
            if (filtrosGenericos.some(filtro => canalTitulo.includes(filtro))) {
                return true;
            }
            return false;
        }

        function horaAMinutos(hora) {
            const [horas, minutos] = hora.split(':').map(Number);
            return horas * 60 + minutos;
        }

        async function cargarDatosFutbol() {
            const tablaEventos = document.getElementById('tablaEventos');
            const tbodyEventos = tablaEventos.querySelector('tbody');
            const loading = document.getElementById('loading');

            // Array para almacenar todos los eventos antes de ordenarlos
            const todosLosEventos = [];

            try {
                // Array para almacenar todas las promesas de fetch
                const promesas = futbolUrls.map(url => fetch(url));

                // Esperar a que todas las solicitudes se completen
                const respuestas = await Promise.all(promesas);

                // Procesar cada respuesta
                for (const respuesta of respuestas) {
                    const texto = await respuesta.text();
                    const parser = new DOMParser();
                    const doc = parser.parseFromString(texto, 'text/html');
                    const tablaPrincipal = doc.querySelector('table.tablaPrincipal.detalleVacio');

                    if (!tablaPrincipal) {
                        continue;
                    }

                    const filas = tablaPrincipal.querySelectorAll('tr');
                    let fechaActual = '';

                    filas.forEach(fila => {
                        if (fila.classList.contains('cabeceraTabla')) {
                            const fechaTexto = fila.querySelector('td[colspan="5"]').innerText;
                            const match = fechaTexto.match(/(\d{2}\/\d{2}\/\d{4})/);
                            if (match) fechaActual = match[1];
                        } else {
                            const hora = fila.querySelector('.hora')?.innerText.trim();

                            const obtenerCompeticion = (fila) => {
                                const contenedor = fila.querySelector('.ajusteDoslineas');
                                if (!contenedor) return '';

                                const labelTitle = contenedor.querySelector('label')?.getAttribute('title');
                                const spanTitle = contenedor.querySelector('span > span[title]')?.getAttribute('title');

                                // Obtener la imagen de la competición
                                const compImg = contenedor.parentElement.querySelector('img')?.getAttribute('src') || '';

                                if (labelTitle && spanTitle) {
                                    return {
                                        texto: `<br><br>${labelTitle}<br>-<br>${spanTitle}`,
                                        imagen: compImg
                                    };
                                }
                                return {
                                    texto: labelTitle || '',
                                    imagen: compImg
                                };
                            };

                            const competicionInfo = obtenerCompeticion(fila);
                            const canalesList = fila.querySelectorAll('.listaCanales li');
                            const canales = [];

                            let evento = '';
                            let imagenLocal = '';
                            let imagenVisitante = '';
                    
                            const eventoUnico = fila.querySelector('.eventoUnico');
                            if (eventoUnico) {
                                evento = eventoUnico.innerHTML;
                            } else {
                                const localElement = fila.querySelector('.local');
                                const visitanteElement = fila.querySelector('.visitante');
                        
                                if (localElement && visitanteElement) {
                                    const local = localElement.querySelector('span')?.getAttribute('title');
                                    const visitante = visitanteElement.querySelector('span')?.getAttribute('title');
                            
                                    // Obtener las imágenes de los equipos
                                    imagenLocal = localElement.querySelector('img')?.getAttribute('src') || '';
                                    imagenVisitante = visitanteElement.querySelector('img')?.getAttribute('src') || '';
                            
                                    if (local && visitante) {
                                        evento = `
                                            ${imagenLocal ? `<img src="${imagenLocal}" width="32" height="32" alt="${local}">` : ''}
                                            <br><br>
                                            ${local}
                                            <br>≠<br>
                                            ${imagenVisitante ? `<img src="${imagenVisitante}" width="32" height="32" alt="${visitante}">` : ''}
                                            <br><br>
                                            ${visitante}
                                        `;
                                    }
                                }
                            }

                            canalesList.forEach(canal => {
                                const canalTitulo = canal.getAttribute('title');
                                if (canalTitulo && !debeExcluirCanal(canalTitulo)) {
                                 canales.push(canalTitulo);
                                }
                            });

                            if (hora && competicionInfo.texto && evento && canales.length > 0) {
                                todosLosEventos.push({
                                    hora,
                                    competicion: `
                                        ${competicionInfo.imagen ? `<img src="${competicionInfo.imagen}" width="22" height="22" alt="Competición">` : ''}
                                        <br><br>
                                        ${competicionInfo.texto}
                                    `,
                                    evento,
                                    canales: canales.join('<br>'),
                                    minutos: horaAMinutos(hora)
                                });
                            }
                        }
                    });
                }

                // Ordenar todos los eventos por hora
                todosLosEventos.sort((a, b) => a.minutos - b.minutos);

                // Crear las filas en el orden correcto
                todosLosEventos.forEach(evento => {
                    const row = document.createElement('tr');
                    row.innerHTML = `
                        <td>${evento.hora}</td>
                        <td>${evento.competicion}</td>
                        <td>${evento.evento}</td>
                        <td>${evento.canales}</td>
                        <td>-</td>
                    `;
                tbodyEventos.appendChild(row);
            });

            loading.style.display = 'none';
            tablaEventos.style.display = 'table';
        } catch (error) {
            loading.textContent = 'Error al cargar los datos.';
            console.error(error);
        }
    }

        async function cargarDatosAcestream() {
			const tablaAcestream = document.getElementById('tablaAcestream');
			const tbodyAcestream = tablaAcestream.querySelector('tbody');
			const enlacesAcestream = new Map(); // Cambiamos Set por Map para mejor control

			// Conjunto para trackear IDs ya procesados
			const idsProcessed = new Set();

			// Primero, cargar datos de Andrenalina
			let firstUrlProcessed = false;
    
			for (const url of andrenalinaUrls) {
				try {
					const respuesta = await fetch(url);
					const jsonData = await respuesta.json();
            
					// Procesar secciones del JSON
					for (const [seccionNombre, enlaces] of Object.entries(jsonData.record)) {
						if (seccionNombre === "Andrenalina") {
							// Procesar enlaces de Andrenalina individualmente
							enlaces.forEach(enlace => {
								const contentId = enlace.url.replace("acestream://", "");
								if (contentId && contentId.length > 0) {
									// Solo añadir si es la primera URL o si el ID no está procesado
									if (!firstUrlProcessed || !idsProcessed.has(contentId)) {
										enlacesAcestream.set(contentId, {
                                    nombre: enlace.name,
                                    contentId: contentId
									});
										idsProcessed.add(contentId);
								}
							}
						});
                } else {
                    // Para Sky Sports Main Event y otras secciones
                    enlaces.forEach(enlace => {
                        const contentId = enlace.url.replace("acestream://", "");
                        if (contentId && contentId.length > 0) {
                            // Solo añadir si es la primera URL o si el ID no está procesado
                            if (!firstUrlProcessed || !idsProcessed.has(contentId)) {
                                enlacesAcestream.set(contentId, {
                                    nombre: enlace.name,
                                    contentId: contentId,
                                    seccionNombre: seccionNombre
                                });
                                idsProcessed.add(contentId);
                            }
                        }
                    });
																
                }
            }
            firstUrlProcessed = true;
        } catch (error) {
            console.error("Error al obtener datos de Andrenalina:", error);
        }
    }

    // Luego, cargar datos de las URLs originales
    for (const url of acestreamUrls) {
        try {
            const respuesta = await fetch(url);
            const textoHTML = await respuesta.text();
            const parser = new DOMParser();
            const doc = parser.parseFromString(textoHTML, "text/html");
            const scriptContent = [...doc.scripts].find(script => script.textContent.includes("linksData"));
            
            if (!scriptContent) continue;
            const linksDataMatch = scriptContent.textContent.match(/const linksData = ({.*?});/s);
            if (!linksDataMatch) continue;
            
            const linksData = JSON.parse(linksDataMatch[1]);
            linksData.links.forEach(link => {
                const contentId = link.url.startsWith("acestream://") ? link.url.replace("acestream://", "") : null;
                if (contentId && !idsProcessed.has(contentId)) {
                    enlacesAcestream.set(contentId, {
                        nombre: link.name.trim(),
                        contentId: contentId
                    });
                    idsProcessed.add(contentId);
                }
            });
        } catch (error) {
            console.error("Error al obtener Eventos Acestream:", error);
        }
    }

    // Limpiar tabla existente
    tbodyAcestream.innerHTML = '';

    // Añadir todas las entradas a la tabla
    for (const enlace of enlacesAcestream.values()) {
        const row = document.createElement('tr');
        const displayName = enlace.seccionNombre || enlace.nombre;
        row.innerHTML = `
            <td>${displayName}</td>
            <td>${enlace.contentId}</td>
            <td><a href="acestream://${enlace.contentId}" target="_blank">${enlace.nombre}</a></td>
        `;
        tbodyAcestream.appendChild(row);
    }

    tablaAcestream.style.display = 'table';
}

        async function asociarCanalesYEnlaces() {
            const tablaEventos = document.getElementById('tablaEventos');
            const filasEventos = tablaEventos.querySelectorAll('tbody tr');
            const tablaAcestream = document.getElementById('tablaAcestream');
            const filasAcestream = tablaAcestream.querySelectorAll('tbody tr');

            filasEventos.forEach(fila => {
                const canales = fila.querySelector('td:nth-child(4)').innerText.split('\n');
                const columnaEnlaces = fila.querySelector('td:nth-child(5)');

                // Usar Set para almacenar enlaces únicos
                const enlacesSet = new Set();

                canales.forEach(canalEvento => {
                    // Buscar coincidencia en equivalenciasCanales
                    for (const [canalPrincipal, subCanales] of Object.entries(equivalenciasCanales)) {
                        if (canalEvento.toLowerCase() === canalPrincipal.toLowerCase() ||
                            subCanales.some(subcanal => canalEvento.toLowerCase() === subcanal.toLowerCase())) {
                            // Buscar Eventos Acestream que coincidan con los nombres de los canales
                            filasAcestream.forEach(filaAcestream => {
                                const nombre = filaAcestream.querySelector('td:nth-child(1)').innerText;
                                const contentId = filaAcestream.querySelector('td:nth-child(2)').innerText;

                                // Asegurarse de comparar el nombre del canal, no el ID
                                if (canalEvento === nombre || subCanales.some(subcanal => nombre.includes(subcanal))) {
                                    // Crear un enlace clickeable con el nombre del canal y el ID de AceStream
                                    const enlace = `<a href="acestream://${contentId}" target="_blank">${nombre}</a>`;
                                    enlacesSet.add(enlace); // Usar Set.add en lugar de array.push
                                }
                            });
                            break; // Solo se busca una vez la coincidencia para cada canal
                        }
                    }
                });

                // Convertir el Set a Array y unir los enlaces con <br>
                const enlacesUnicos = Array.from(enlacesSet);
                columnaEnlaces.innerHTML = enlacesUnicos.length > 0 ? enlacesUnicos.join('<br>') : 'No disponible';
            });
        }

        async function main() {
            await cargarDatosFutbol();
            await cargarDatosAcestream();
            await asociarCanalesYEnlaces();
        }

        main();
    </script>
</body>