-
Notifications
You must be signed in to change notification settings - Fork 8
/
summary.js
78 lines (69 loc) · 2.01 KB
/
summary.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
const readline = require('readline');
const lineReader = readline.createInterface({
input: process.stdin,
});
const results = {
crawled: 0,
}
const cmps = {};
const errors = [];
const hidden = {};
const recHidden = {};
const noAction = new Set();
lineReader.on('line', (line) => {
const res = JSON.parse(line);
if (res.error) {
errors.push(res);
return;
}
if (res.reconsentHidden && res.reconsentHidden.length > 0) {
res.reconsentHidden.forEach((rule) => {
if (!hidden[rule]) {
hidden[rule] = 0;
}
hidden[rule] += 1;
});
} else if (res.fanboyHidden && res.fanboyHidden.length > 0 && !res.reconsent) {
res.fanboyHidden.forEach((rule) => {
if (!recHidden[rule]) {
recHidden[rule] = 0;
}
recHidden[rule] += 1;
});
}
results.crawled += 1;
const key = res.reconsent || 'none';
if (!cmps[key]) {
cmps[key] = [];
}
cmps[key].push(res);
if (!res.reconsent && (!res.reconsentHidden || res.reconsentHidden.length == 0)) {
noAction.add(res.site);
}
});
lineReader.on('close', () => {
const { crawled } = results;
console.log(`=== Crawled ${crawled} pages. ${errors.length} failures. ${noAction.size} broken ===`);
console.log('No action:');
noAction.forEach((site) => {
console.log(` - ${site}`)
})
console.log();
console.log('CMPs:')
Object.keys(cmps).forEach((cmp) => {
const nSites = new Set(cmps[cmp].map(r => r.site)).size
const cmpShown = cmps[cmp].filter(r => r.reconsentCMPShown).length;
const cmpPass = cmps[cmp].filter(r => r.reconsentTest).length;
console.log(` - ${cmp}: ${nSites}/${cmpShown}/${cmpPass}`);
});
console.log();
console.log('Cosmetics:');
Object.keys(hidden).sort((a, b) => hidden[b] - hidden[a]).forEach((rule) => {
console.log(` - ${rule} : ${hidden[rule]}`)
});
console.log();
console.log('New Cosmetics:');
Object.keys(recHidden).sort((a, b) => recHidden[b] - recHidden[a]).forEach((rule) => {
console.log(` - ${rule} : ${recHidden[rule]}`)
});
});