98 lines
4.2 KiB
JavaScript
98 lines
4.2 KiB
JavaScript
const Nightmare = require('nightmare')
|
|
const nightmare = Nightmare({ show: true })
|
|
|
|
var hltv_url = "https://hltv.org";
|
|
|
|
nightmare
|
|
.goto(hltv_url)
|
|
.wait("span[data-livescore-current-map-score='']")
|
|
.wait(2000)
|
|
.evaluate(function(hltv_url) {
|
|
var match_rows = document.querySelectorAll("div.teamrows");
|
|
var matches = [];
|
|
for(var i = 0; i < match_rows.length; i++) {
|
|
var match_row = match_rows[i];
|
|
var team_rows = match_row.children;
|
|
var parent = match_row.parentElement;
|
|
var grandparent = match_row.parentElement.parentElement;
|
|
var sibling = match_row.nextElementSibling;
|
|
// if (grandparent.className === "col-box a-reset") { continue; }
|
|
|
|
// since the VOD boxes are always at the end we can just break
|
|
if (grandparent.className === "col-box a-reset") { break; }
|
|
|
|
var event_name;
|
|
var start_time;
|
|
var link;
|
|
var stars;
|
|
var lan;
|
|
var team_names = [];
|
|
var team_countries = [];
|
|
var current_scores = [];
|
|
var maps_won = [];
|
|
|
|
|
|
for (var j = 0; j < team_rows.length; j++){
|
|
var team_row = team_rows[j];
|
|
if (team_row.className.includes("teamrow")) {
|
|
var flag_el = team_row.getElementsByClassName("flag")[0];
|
|
var team_el = team_row.getElementsByClassName("team")[0];
|
|
team_countries.push(flag_el.getAttribute("title"));
|
|
team_names.push(team_el.innerText);
|
|
}
|
|
}
|
|
|
|
if (grandparent.className.includes("hotmatch-box")) {
|
|
stars = parent.getAttribute("stars");
|
|
lan = parent.getAttribute("lan");
|
|
link = grandparent.getAttribute("href");
|
|
event_name = grandparent.getAttribute("title")
|
|
start_time = "LIVE"
|
|
} else if (grandparent.className.includes("col-box-con result-box")) {
|
|
stars = grandparent.getAttribute("stars");
|
|
lan = grandparent.getAttribute("lan");
|
|
link = grandparent.getAttribute("href");
|
|
event_name = parent.previousElementSibling.getAttribute("title");
|
|
start_time = "OVER"
|
|
}
|
|
|
|
if (sibling.className === "twoRowExtra") {
|
|
score_rows = sibling.children;
|
|
for (var j = 0; j < score_rows.length; j++) {
|
|
var score_row = score_rows[j];
|
|
if (score_row.className === "livescore twoRowExtraRow") {
|
|
var score_el = score_row.querySelector("[data-livescore-current-map-score='']");
|
|
var maps_won_el = score_row.querySelector("[data-livescore-maps-won-for='']");
|
|
current_scores.push(score_el.innerText);
|
|
maps_won.push(maps_won_el.innerText);
|
|
} else if (score_row.className.includes("twoRowExtraRow won")
|
|
|| score_row.className.includes("twoRowExtraRow lost")) {
|
|
maps_won.push(score_row.innerText);
|
|
}
|
|
}
|
|
} else if (sibling.className === "middleExtra") {
|
|
start_time = sibling.getAttribute("data-unix");
|
|
}
|
|
|
|
link = hltv_url + link;
|
|
|
|
matches.push({"event_name": event_name,
|
|
"start_time": start_time,
|
|
"link": link,
|
|
"stars": stars,
|
|
"lan": lan,
|
|
"team_names": team_names,
|
|
"team_countries": team_countries,
|
|
"current_scores": current_scores,
|
|
"maps_won": maps_won});
|
|
|
|
}
|
|
return JSON.stringify(matches);
|
|
}, hltv_url)
|
|
.end()
|
|
.then(m => console.log(m))
|
|
.then(nightmare.end())
|
|
.catch(error => {
|
|
console.error(error)
|
|
});
|