mirror of
https://github.com/clarencechaan/ufc-cal.git
synced 2026-10-19 00:38:30 -07:00
switch from Tapology to UFC
This commit is contained in:
1 parent
cdb70eed9b
commit
3fd0988a82
1 file changed
+7
-78
@@ -1,87 +1,16 @@
|
|||||||
import { parse } from "node-html-parser";
|
import { parse } from "node-html-parser";
|
||||||
import { decode } from "html-entities";
|
|
||||||
|
|
||||||
async function searchEvents() {
|
async function getEventLinks() {
|
||||||
let url = `https://www.tapology.com/search?term=ufc&commit=Submit&model%5Bevents%5D=eventsSearch`;
|
let url = `https://www.ufc.com/events`;
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
const text = await response.text();
|
const text = await response.text();
|
||||||
const root = parse(text);
|
const root = parse(text);
|
||||||
let rows = root.querySelectorAll(".fcLeaderboard tr");
|
let links = root.querySelectorAll(
|
||||||
let relevantEvents = [];
|
"#events-list-upcoming h3.c-card-event--result__headline"
|
||||||
let now = Date.now();
|
);
|
||||||
for (let row of rows) {
|
links = links.map((html) => html.firstChild.getAttribute("href"));
|
||||||
let bouts = parseInt(row.querySelector(".altB")?.innerText);
|
return links;
|
||||||
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;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user