UNPKG

@benbakhar/sls

Version:

Nike SLS API

40 lines (39 loc) 1.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const cheerio_1 = __importDefault(require("cheerio")); const fetch_page_1 = __importDefault(require("../../shared/fetch-page")); const filters_1 = require("./filters"); const PAGE_URL = "https://streetleague.com/the-9-club/"; const parsePage = (html) => { const result = {}; const highestScore = cheerio_1.default(".page-body >.nine_club_header", html).text().trim(); cheerio_1.default(".page-body #accordion .clubHead", html).map((_, partial) => { const score = cheerio_1.default(partial).prevAll(".nine_club_header").slice(0, 1).text().trim() || highestScore; const skater = cheerio_1.default(partial).children("h4").text(); const trick = cheerio_1.default(partial).children(".trick").text(); const videoId = cheerio_1.default(partial).next(".accordion-content").children(".uid").text(); const videoUrl = `https://www.youtube.com/${videoId}`; result[score] = result[score] || []; result[score].push({ skater, trick, videoUrl, }); }); return result; }; async function get(query = {}) { const html = await fetch_page_1.default(PAGE_URL); let json = parsePage(html); if (query.skater) { json = filters_1.filterBySkater(json, query.skater); } if (query.limit > 0) { json = filters_1.filterTopScores(json, query.limit); } return json; } exports.get = get;