From d8bd0cd6b24bb47ba864e4cfb7196cc3e137c6e4 Mon Sep 17 00:00:00 2001 From: YellowFoxH4XOR Date: Tue, 6 Apr 2021 08:37:40 +0530 Subject: [PATCH] Fixed Codechef Parser --- src/parsers/codechef.js | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/parsers/codechef.js b/src/parsers/codechef.js index 22bbac0..5f3fd18 100644 --- a/src/parsers/codechef.js +++ b/src/parsers/codechef.js @@ -1,37 +1,31 @@ const axios = require('axios'); const cheerio = require('cheerio'); -function parseContestDetails($, contestRow) { - const details = $(contestRow).find('td'); - const startTime = new Date(details.eq(2).attr("data-starttime")).getTime() / 1000; - const endTime = new Date(details.eq(3).attr("data-endtime")).getTime() / 1000; +function parseContestDetails(object) { + const cname = object.contest_name; + const code = object.contest_code; + const startTime = object.contest_start_date; + const endTime = object.contest_end_date; return { - name: details.eq(1).text(), - url: `http://www.codechef.com${details.eq(1).find('a').attr('href')}`, + name: cname, + url: `https://www.codechef.com/${code}?itm_campaign=contest_listing`, platform: 'codechef', startTime, endTime, }; } -const codechef = () => axios.get('http://www.codechef.com/contests', { timeout: 30000 }) +const codechef = () => axios.get('https://www.codechef.com/api/list/contests/all?sort_by=END&sorting_order=desc&offset=0', { timeout: 30000 }) .then((response) => { - const $ = cheerio.load(response.data); - const statusdiv = $('table .dataTable'); - const headings = $('h2'); const contestTables = { 'Upcoming Coding Contests': [], 'Present Coding Contests': [] }; - - for (let i = 0; i < headings.length; i++) { - if (headings.eq(i).text() !== 'Past Coding Contests') { - contestTables[headings.eq(i).text()] = statusdiv.eq(i).find('tr').slice(1); - } - } - let contests = contestTables['Present Coding Contests'].map((i, elem) => parseContestDetails($, elem)).get(); - - contests = contests.concat(contestTables['Upcoming Coding Contests'].map((i, elem) => parseContestDetails($, elem)).get()); - - return contests; + response.data.present_contests.forEach(element => { + contestTables['Present Coding Contests'].push(parseContestDetails(element)); + }); + response.data.future_contests.forEach(element => { + contestTables['Upcoming Coding Contests'].push(parseContestDetails(element)); + }); + return contestTables; }) .catch((error) => { console.log('Codechef: ', error.toString()); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy