-
Notifications
You must be signed in to change notification settings - Fork 0
/
node_helper.js
58 lines (50 loc) · 1.64 KB
/
node_helper.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
const NodeHelper = require("node_helper");
const axios = require("axios");
const cheerio = require("cheerio");
module.exports = NodeHelper.create({
start: function () {
console.log("Starting module: " + this.name);
this.fact = null;
this.factsLength = null;
this.facts = [];
this.factsFake = [];
},
socketNotificationReceived: function (notification, payload) {
this.config = payload;
if (notification === "GET_FACT") {
if (this.fact === null) {
this.fetchFacts();
} else this.sendSocketNotification("FACT", this.fact);
}
},
fetchFacts: async function () {
try {
const response = await axios.get(`https://cs.wikipedia.org/wiki/Wikipedie:Zaj%C3%ADmavosti/N%C3%A1vrhy`);
const html = await response.data;
var $ = cheerio.load(html);
} catch (error) {
this.sendSocketNotification("ERROR");
console.log("Error due fetch process - ", error);
}
const regex = /^\…([^?]*\?)([\s\S])*/;
$("li").each((index, element) => {
if (regex.test($(element).text())) {
var elementValue = $(element).text().replace(regex, "$1").trim();
this.facts.push(elementValue.charAt(0).toUpperCase() + elementValue.slice(1));
}
});
this.factsLength = this.facts.length;
if (this.facts.length > 0) {
console.log(this.factsLength + " facts fetch was successful");
this.updateFact();
setInterval(this.updateFact.bind(this), this.config.updateInterval);
} else {
this.sendSocketNotification("ERROR");
console.log("Error due fetch process - no quote");
}
},
updateFact: function () {
this.fact = this.facts[Math.floor(Math.random() * this.factsLength)];
this.sendSocketNotification("FACT", this.fact);
}
});