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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Darts Events</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #121212;
            color: #FFFFFF;
            margin: 20px;
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
            background-color: #1E1E1E;
        }

        th,
        td {
            border: 1px solid #333;
            padding: 10px;
            text-align: left;
        }

        th {
            background-color: #333;
            color: #4FC3F7;
        }

        th:nth-child(2) {
            color: #FF5252;
        }

        tr:nth-child(even) {
            background-color: #2A2A2A;
        }

        tr:hover {
            background-color: #444;
        }

        h1 {
            color: #4FC3F7;
        }

        #loading {
            text-align: center;
            font-size: 1.2em;
        }

        #error {
            color: #FF5252;
            text-align: center;
        }

        .acestream-link {
            color: #4ff78d;
            text-decoration: none;
            margin-right: 10px;
        }

        .acestream-link:hover {
            text-decoration: underline;
        }

        .acestream-links {
            display: inline-block;
            margin-left: 10px;
        }
    </style>
</head>

<body>
    <h1>Darts Events on Sky Sports</h1>
    <p><a href="http://127.0.0.1:43110/1Gg6PxRS3HD9WdfNMRAccCHmH7LGP6MTd6/"
            style="color: #4ff78d; text-decoration: none;" target="_blank">
            Tupla Elcano.top
        </a></p>
    <p>
        <a href="http://127.0.0.1:43110/1B7mUJeEoiFsWcf42Qfch4eprkoxXb97Zm/ott_externo.m3u" style="color: #4ff78d; text-decoration: none; margin-right: 20px;" download>
            OTT Externo
        </a>
        <a href="http://127.0.0.1:43110/1B7mUJeEoiFsWcf42Qfch4eprkoxXb97Zm/ott_interno.m3u" style="color: #4ff78d; text-decoration: none;" download>
            OTT Interno
        </a>
    </p>
    <p id="loading">Loading events...</p>
    <p id="error" style="display: none;">Failed to load events. Please try again later.</p>
    <table style="display: none;" id="events-table">
        <thead>
            <tr>
                <th>Date</th>
                <th>Event</th>
                <th>Details</th>
            </tr>
        </thead>
        <tbody id="events-body">
        </tbody>
    </table>

    <script>
        // URL de tu proxy local
        const eventsUrl = "https://s3.us.archive.org/abcd_20240416/index.html";
        const aceStreamLinksUrl = "https://api.jsonbin.io/v3/b/67648144ad19ca34f8ddf91a/latest?meta=true";

        const loadingElement = document.getElementById("loading");
        const errorElement = document.getElementById("error");
        const tableElement = document.getElementById("events-table");
        const eventsBody = document.getElementById("events-body");

        let aceStreamLinks = {};

        function createAceStreamLinks(text) {
            for (const [channel, links] of Object.entries(aceStreamLinks)) {
                if (text.includes(channel)) {
                    const linksHtml = links.map(link =>
                        `<a href="${link.url}" class="acestream-link" target="_blank">[${link.name}]</a>`
                    ).join(' ');
                    return `${text}<span class="acestream-links">${linksHtml}</span>`;
                }
            }
            return text;
        }

        // Cargar los enlaces AceStream desde el JSON
        fetch(aceStreamLinksUrl)
            .then(response => response.json())
            .then(data => {
                aceStreamLinks = data.record; // Asegurarse de usar el contenido correcto del JSON

                // Una vez cargados los enlaces, cargar los eventos
                return fetch(eventsUrl, {
                    referrerPolicy: 'strict-origin-when-cross-origin',
                    body: null,
                    method: 'GET',
                    mode: 'cors',
                    credentials: 'omit',
                    headers: {
                        'accept': '*/*',
                        'accept-language': 'es-ES,es;q=0.9',
                        'cache-control': 'no-cache',
                        'pragma': 'no-cache',
                        'sec-ch-ua': '\'Google Chrome\';v=\'131\', \'Chromium\';v=\'131\', \'Not_A Brand\';v=\'24\'',
                        'sec-ch-ua-mobile': '?0',
                        'sec-ch-ua-platform': '\'Windows\'',
                        'sec-fetch-dest': 'empty',
                        'sec-fetch-mode': 'cors',
                        'sec-fetch-site': 'cross-site',
                        'x-requested-with': 'XMLHttpRequest'
                    }
                });
            })
            .then(response => {
                if (!response.ok) {
                    throw new Error(`HTTP error! Status: ${response.status}`);
                }
                return response.text();
            })
            .then(html => {
                const parser = new DOMParser();
                const doc = parser.parseFromString(html, "text/html");

                const events = [];
                doc.querySelectorAll("h3.text-h4.-rs-style20.box").forEach(dateElement => {
                    const date = dateElement.textContent.trim();
                    const eventGroup = dateElement.nextElementSibling;
                    if (eventGroup && eventGroup.querySelector("strong")) {
                        const eventTitle = eventGroup.querySelector("strong").textContent.trim();
                        const eventDetails = eventGroup.querySelector("p.event-detail").textContent.trim();
                        events.push({ date, event: eventTitle, details: eventDetails });
                    }
                });

                if (events.length > 0) {
                    events.forEach(event => {
                        const row = document.createElement("tr");

                        const dateCell = document.createElement("td");
                        dateCell.textContent = event.date;

                        const eventCell = document.createElement("td");
                        eventCell.textContent = event.event;

                        const detailsCell = document.createElement("td");
                        detailsCell.innerHTML = createAceStreamLinks(event.details);

                        row.appendChild(dateCell);
                        row.appendChild(eventCell);
                        row.appendChild(detailsCell);

                        eventsBody.appendChild(row);
                    });

                    tableElement.style.display = "table";
                } else {
                    errorElement.textContent = "No events found.";
                    errorElement.style.display = "block";
                }
            })
            .catch(error => {
                console.error("Failed to load events:", error);
                errorElement.style.display = "block";
            })
            .finally(() => {
                loadingElement.style.display = "none";
            });
    </script>
</body>

</html>
