-
Notifications
You must be signed in to change notification settings - Fork 0
/
edit-Commons-filename.js
47 lines (40 loc) · 1.84 KB
/
edit-Commons-filename.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
// PURPOSE: Script renames targets following hand-coded patters.
const Wikiapi= require('wikiapi');
const logins = require('./logins-ShufaBot.js');
// Login credentials from .login*.js
var USER = logins.commons.user,
PASS = logins.commons.pass,
API = logins.commons.api;
(async () => {
// Connect
const targetWiki = new Wikiapi;
await targetWiki.login(USER, PASS, API);
console.log(`Username ${USER} is connected !`);
// List of targets
const list = await targetWiki.categorymembers('ShufaBot test: upload');
// Loop on targets
for(i=0;i<list.length;i++){
console.log(list[i]);
var currPage = list[i]; // target page's page_data
// Page exist ?
let pageData = await targetWiki.page(currPage.title, {});
if(pageData.wikitext!=='') {
//Edit filename and move (twice):
var initialTitle=currPage.title,
newTitle=initialTitle.replace(/toto/gi,''), // <------- regex match and replacement to change name via pattern
reason='ShufaBot test: renaming file.',
revertReason='ShufaBot test: renaming file, revert.';
console.log(initialTitle,newTitle);
try{
// Rename with method `.move_page(curr,new, {options})`
result = await targetWiki.move_page(initialTitle, newTitle, { reason: reason, noredirect: true, movetalk: true });
}catch(e){console.error(e);}
try{
// Revert rename with method `.move_to(newname, {options})`
await targetWiki.page(newTitle);
result = await targetWiki.move_to(initialTitle, { reason: revertReason, noredirect: true, movetalk: true });
}catch(e){ console.error(e); } // catch error message if any
console.log('Done.');
}
}
})();