-
Notifications
You must be signed in to change notification settings - Fork 1
/
commonsForCategory.js
executable file
·69 lines (54 loc) · 1.77 KB
/
commonsForCategory.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
#!/usr/bin/env node
/**
* Skrypt importujący obrazki z Commons dla podanej kategorii
*/
var bot = require('nodemw'),
client = new bot('config.js'),
commons = new bot({
server: 'commons.wikimedia.org',
path: '/w'
});
var CATEGORY = process.argv[2] || 'Linie autobusowe',
SUMMARY = 'Import pliku z Wikimedia Commons';
client.log('Wyszukiwanie plików z Wikimedia Commons do importu w kategorii "%s"', CATEGORY);
client.logIn(function(err) {
client.getPagesInCategory(CATEGORY, function(err, pages) {
pages.forEach(function(page) {
if (page.ns !== 0) return;
// @see http://poznan.wikia.com/api.php?action=query&generator=images&titles=Linia_autobusowa_nr_62%7CLinia_autobusowa_nr_237&prop=info
client.api.call({
action: 'query',
generator: 'images',
titles: page.title
}, function(err, res) {
var images = res && res.pages;
if (!images || images.length === 0) return;
Object.keys(images).forEach(function(id) {
var image = images[id],
imageTitle = '';
if (typeof image.missing !== 'undefined') {
imageTitle = image.title.split(':').slice(1).join(':'); // usun prefix z namespacem
client.log('%s: "%s"', page.title, imageTitle);
// pobierz URL do "pełnej" wersji obrazka
commons.getImageInfo("File:" + imageTitle, function(err, res) {
if (!res) return;
var url = res.url,
params;
params = {
comment: SUMMARY,
text: '{{Wikimedia}}'
};
client.log('Import pliku <%s> z Wikimedia Commons...', imageTitle);
// dodaj zdjęcia
client.uploadByUrl(imageTitle, url, params, function(err, res) {
if (!err) {
client.log('Upload pliku <%s> zakończony', imageTitle);
}
});
});
}
});
});
});
});
});