@benbakhar/sls
Version:
Nike SLS API
40 lines (39 loc) • 1.63 kB
JavaScript
;
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;