-
Notifications
You must be signed in to change notification settings - Fork 1
/
nw-status-scraper.js
61 lines (44 loc) · 2.19 KB
/
nw-status-scraper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
const axios = require('axios');
const cheerio = require('cheerio');
const formatDate = (rawData) => {
let formatedDate;
rawDateSplitted = rawData.split(":")[1] // Última atualização: 24 de Julho de 2021 16h30min39s PDT -> 24 de Julho de 2021 16h30min39s PDT
rawDateCleaned = rawDateSplitted.replace("PDT", "").trim()
rawDateHour = rawDateCleaned.split(" ").slice(-1);
rawDateDay = rawDateCleaned.split(" ").slice(0, -1);
console.log(rawDateCleaned)
return rawDateCleaned;
}
const getServerStatusFromClass = (classInput) => {
if (classInput.includes("up")) return "UP"
return "DOWN"
}
async function GetServerStatus() {
const newWorldStatusReport = [];
const regions = [];
try {
const { data } = await axios.get('https://www.newworld.com/pt-br/support/server-status');
const $ = cheerio.load(data);
latestUpdateServersStatus = formatDate($(".ags-ServerStatus-content-lastUpdated").text());
$(".ags-ServerStatus-content-tabs").each((_idx, el) => {
$(el).find(".ags-ServerStatus-content-tabs-tabHeading-label").each((i, regionDiv) => {
newWorldStatusReport.push({ "region": $(regionDiv).text().trim(), "servers": [] });
});
});
$(".ags-ServerStatus-content-responses-response.ags-ServerStatus-content-responses-response--centered").each((regionIndex, regionServers) => {
$(regionServers).find(".ags-ServerStatus-content-responses-response-server").each((serverIndex, serversTable) => {
serverClassStatus = $(serversTable).find(".ags-ServerStatus-content-responses-response-server-status").attr('class');
serverName = $(serversTable).find(".ags-ServerStatus-content-responses-response-server-name").text().trim();
serverStatus = getServerStatusFromClass(serverClassStatus);
newWorldStatusReport[regionIndex].servers.push({ "name": serverName, "status": serverStatus });
});
});
console.log("finish scrapping server status...");
return newWorldStatusReport;
}
catch(err) {
console.error(err)
return err;
}
}
module.exports = { GetServerStatus }