This repository has been archived by the owner on Oct 22, 2021. It is now read-only.
forked from AgustinSRG/Pokemon-Showdown-Node-Bot
-
Notifications
You must be signed in to change notification settings - Fork 1
/
data-downloader.js
121 lines (108 loc) · 2.82 KB
/
data-downloader.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
Data Downloader
*/
var datenow = Date.now();
var data = exports.data = [
{
url: "https://raw.githubusercontent.com/Zarel/Pokemon-Showdown/master/config/formats.js",
file: "formats.js"
},
{
url: "https://raw.githubusercontent.com/Zarel/Pokemon-Showdown/master/data/formats-data.js",
file: "formats-data.js"
},
{
url: "https://play.pokemonshowdown.com/data/pokedex.js?" + datenow,
file: "pokedex.js"
},
{
url: "https://play.pokemonshowdown.com/data/moves.js?" + datenow,
file: "moves.js"
},
{
url: "https://play.pokemonshowdown.com/data/abilities.js?" + datenow,
file: "abilities.js"
},
{
url: "https://play.pokemonshowdown.com/data/items.js?" + datenow,
file: "items.js"
},
{
url: "https://play.pokemonshowdown.com/data/learnsets-g6.js?" + datenow,
file: "learnsets-g6.js"
},
{
url: "https://play.pokemonshowdown.com/data/aliases.js?" + datenow,
file: "aliases.js"
}
];
var httpsGet = function (url, callback) {
if (typeof callback !== "function") return;
var https = require("https");
https.get(url, function (res) {
var data = '';
res.on('data', function (part) {
data += part;
});
res.on('end', function () {
callback(data);
});
res.on('error', function (e) {
callback(null, e);
});
}).on('error', function (e) {
callback(null, e);
});
};
var downloadFile = exports.downloadFile = function (url, file, callback) {
httpsGet(url, function (data, err) {
if (err) {
if (typeof callback === "function") callback(false, err);
return;
}
fs.writeFile('./data/' + file, data, function (err2) {
if (err2) {
if (typeof callback === "function") callback(false, err2);
return;
}
try {
Tools.uncacheTree('./data/' + file);
} catch (e) {}
debug('Downloaded data file: ' + './data/' + file);
if (typeof callback === "function") callback(true);
});
});
};
var download = exports.download = function () {
for (var i = 0; i < data.length; i++) {
downloadFile(data[i].url, data[i].file, function (s, err) {
if (s) return;
error("Data download failed: " + data[i].file + "\n" + err.message);
errlog(err.stack);
});
}
};
exports.getPokedex = function () {
return require("./data/pokedex.js").BattlePokedex;
};
exports.getMovedex = function () {
return require("./data/moves.js").BattleMovedex;
};
exports.getAbilities = function () {
return require("./data/abilities.js").BattleAbilities;
};
exports.getItems = function () {
return require("./data/items.js").BattleItems;
};
exports.getAliases = function () {
return require("./data/aliases.js").BattleAliases;
};
exports.getFormats = function () {
return require("./data/formats.js").Formats;
};
exports.getFormatsData = function () {
return require("./data/formats-data.js").BattleFormatsData;
};
exports.getLearnsets = function () {
return require("./data/learnsets-g6.js").BattleLearnsets;
};