forked from MrEliasen/twitch-bot-list
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse.js
68 lines (57 loc) · 2.04 KB
/
parse.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
const fetch = require('node-fetch')
const fs = require('fs')
class UpdateBotList {
constructor() {
this.channelMinimum = 150;
this.daysMinimum = 30;
this.lastOnline = Math.floor(Date.now() / 1000) - this.daysMinimum * 24 * 60 * 60;
this.whitelist = JSON.parse(fs.readFileSync('./whitelist.json'));
this.greylist = JSON.parse(fs.readFileSync('./greylist.json'));
this.fetchList();
}
async fetchList() {
console.log('Fetching botlist, this will take a moment..');
fetch('https://api.twitchinsights.net/v1/bots/all', {
method: 'get',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'MrEliasen/twitch-bot-list',
},
})
.then((res) => res.json())
.then((json) => {
console.log('Received list of ' + json.bots.length + ' names.');
this.filterList(json.bots)
});
}
filterList(bots) {
console.log('Filtering list..');
console.log('Minimum Channels the bot needs to be in: ' + this.channelMinimum);
console.log('Last Online within: ' + this.daysMinimum + ' days');
var filteredBots = [];
for (var i = 0; i < bots.length; i++) {
var bot = bots[i];
var name = bot[0];
// check channel count
if (bot[1] < this.channelMinimum) {
continue;
}
// check last activity
if (bot[2] < this.lastOnline) {
continue;
}
// check whitelist
if (this.whitelist.includes(name)) {
continue;
}
// check greylist
if (this.greylist.includes(name)) {
continue;
}
filteredBots.push(name);
}
fs.writeFileSync('list.json', JSON.stringify(filteredBots, null, 2), 'utf8');
console.log('The list.json now contains ' + filteredBots.length + ' usernames.');
}
}
new UpdateBotList();