View difference between Paste ID: cF0abyg9 and H5KVUEAx
SHOW: | | - or go back to the newest paste.
1
const results = {
2
	pages: []
3
};
4
5
const promises = [];
6
7
const defaultParams = {
8
	action: "query",
9
	format: "json",
10
};
11
12
// Object.keys(mw.config.values.wgFormattedNamespaces).forEach((key) => {
13
14
const namespaces = [0,1,2,3,4,5,6,7,8,9];
15
16
namespaces.forEach((key) => {
17
	const queryParams = {
18
		generator: "allpages",
19
		gaplimit: 5000,
20
		gapfilterredir: "nonredirects",
21
		prop: "info|pageprops",
22
		gapnamespace: key,
23
		...defaultParams,
24
	};
25
	promises.push(getInfo('pages', queryParams));
26
});
27
28
29
Promise.all(promises).then((values) => {
30
	console.log("Done, the file will be downloaded");
31
32
	download("results.txt", JSON.stringify(results, null, 2));
33
});
34
35
function getInfo(key, queryParams) {
36
	return new Promise((resolve) => {
37
		const api = new mw.Api();
38
39
		api.post(queryParams).done((data) => {
40
			if (data.continue) {
41
				const [next] = Object.entries(data.continue);
42
				const [continueKey, continueValue] = next;
43
				queryParams[continueKey] = continueValue;
44
45
				resolve(getInfo(key, queryParams));
46
			} else {
47
				resolve();
48
			}
49
			console.log("fetching data ...");
50
			results[key].push(data.query);
51
		});
52
	});
53
}
54
55
function download(filename, text) {
56
	var element = document.createElement("a");
57
	element.setAttribute(
58
		"href",
59
		"data:text/plain;charset=utf-8," + encodeURIComponent(text)
60
	);
61
	element.setAttribute("download", filename);
62
63
	element.style.display = "none";
64
	document.body.appendChild(element);
65
66
	element.click();
67
68
	document.body.removeChild(element);
69
}