-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparser.js
100 lines (87 loc) · 2.87 KB
/
parser.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
const cheerio = require('cheerio');
const request = require("request");
const nodemailer = require('nodemailer');
const fs = require('fs');
let recipients = [];
if (fs.existsSync('recipients.json')) {
recipients = JSON.parse(fs.readFileSync('recipients.json'));
}
let email_settings = {};
if (fs.existsSync('email_settings.json')) {
email_settings = JSON.parse(fs.readFileSync('email_settings.json'));
}
let transport = nodemailer.createTransport(email_settings);
let configs = {};
if (fs.existsSync('configs.json')) {
configs = JSON.parse(fs.readFileSync('configs.json'));
}
let saved_comunicados = [];
if (fs.existsSync('comunicados.json')) {
saved_comunicados = JSON.parse(fs.readFileSync('comunicados.json'));
}
function isNew(comunicado) {
let found = false;
saved_comunicados.forEach(element => {
if (element.name == comunicado.name) {
found = true;
}
});
return !found;
}
function parseMyAwesomeHtml(html) {
let new_comunicados = [];
const $ = cheerio.load(html);
const json = [];
$(".register").each(function (i, elem) {
let name = $(this).children('.register-title').text().trim();
let pdf = 'https://www.dgs.pt/' + ($(this).children('.register-texts').children('.register-doc').children('a').attr('href'));
let comunicado = {
name: name,
pdf: pdf
};
if (isNew(comunicado)) {
new_comunicados.push(comunicado);
saved_comunicados.push(comunicado);
}
});
fs.writeFileSync('comunicados.json', JSON.stringify(saved_comunicados));
new_comunicados.forEach(comunicado => {
const message = {
from: configs.from, // Sender address
to: recipients, // List of recipients
subject: "COMUNICADO DGS: " + comunicado.name, // Subject line
replyTo: configs.replyTo,
text: 'LINK: ' + comunicado.pdf // Plain text body
};
transport.sendMail(message, function (err, info) {
if (err) {
console.log(err)
} else {
console.log("Email sent");
}
});
request.post(
configs.discord_webhook,
{ json: { content: 'Novo Comunicado DGS. Nome: ' + comunicado.name + ". Link para o PDF: " + comunicado.pdf } },
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
);
});
}
function loop() {
request("https://www.dgs.pt/publicacoes/comunicados-e-despachos-do-diretor-geral.aspx", function (error, response, body) {
if (!error) {
parseMyAwesomeHtml(body);
} else {
console.log(error);
}
});
}
function main() {
loop();
setInterval(loop, 300000); //every 5 minutes
}
main();