diff --git a/scrape.js b/scrape.js index 759a3458..8adbd87d 100644 --- a/scrape.js +++ b/scrape.js @@ -1,87 +1,16 @@ import { parse } from "node-html-parser"; -import { decode } from "html-entities"; -async function searchEvents() { - let url = `https://www.tapology.com/search?term=ufc&commit=Submit&model%5Bevents%5D=eventsSearch`; +async function getEventLinks() { + let url = `https://www.ufc.com/events`; try { const response = await fetch(url); const text = await response.text(); const root = parse(text); - let rows = root.querySelectorAll(".fcLeaderboard tr"); - let relevantEvents = []; - let now = Date.now(); - for (let row of rows) { - let bouts = parseInt(row.querySelector(".altB")?.innerText); - if (!bouts) continue; - let date = new Date(row.childNodes[5]?.innerText); - if (date < now) break; - let name = row.childNodes[1].innerText - .replaceAll("\n", "") - .replace("|", ":"); - if (!name.includes("UFC")) continue; - let link = - "https://www.tapology.com" + - row.querySelector("a")?.getAttribute("href"); - relevantEvents.push({ name, link }); - } - return relevantEvents; - } catch (error) { - console.error(error); - } -} - -async function getDetails(event) { - function convertDateString(input) { - let [, dateStr, , time, ampm] = input.split(" "); - let date = new Date(dateStr + " " + time); - if (ampm === "PM") date = new Date(date.getTime() + 1000 * 60 * 60 * 12); - return date; - } - - let { name, link: url } = event; - try { - const response = await fetch(url); - const text = await response.text(); - const root = parse(text); - - // Get event date, venue, location - let details = root - .querySelector(".right > .clearfix") - .innerText.split("\n") - .filter((str) => str); - let date = convertDateString(details[0]); - let venue; - let location; - for (let i = 0; i < details.length; i++) - if (details[i] === "Venue:") venue = details[i + 1]; - else if (details[i] === "Location:") location = details[i + 1]; - - // Get fights - let quickCard = root.querySelectorAll(".eventQuickCardSidebar li"); - let fights = []; - - for (const li of quickCard) { - let innerText = li.innerText.split("\n"); - let fight = - innerText[2] + " vs. " + innerText[4] + " (" + innerText[7] + ")"; - fight = decode(fight); - fights.push(fight); - } - - [name, venue, location] = [decode(name), decode(venue), decode(location)]; - return { name, link: url, date, venue, location, fights }; - } catch (error) { - console.error(error); - } -} - -async function getDetailedEvents() { - let events = []; - try { - events = await searchEvents(); - events = events.map((event) => getDetails(event)); - events = await Promise.all(events); - return events; + let links = root.querySelectorAll( + "#events-list-upcoming h3.c-card-event--result__headline" + ); + links = links.map((html) => html.firstChild.getAttribute("href")); + return links; } catch (error) { console.error(error); }