User:RillkeBot/upWizCleanUp.js

Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
mw.loader.using(['ext.gadget.libCat', 'ext.gadget.SettingsManager'], function() {
	mw.libs.commons.api.maxSimultaneousReq = 1;
	mw.libs.settingsManager.fetchGadgetSetting('rbot-upwizcleanup').done(function(prefName, settingValue) {
		settingValue = settingValue || {};
		var startValue = settingValue.ts || '2013-07-29T22:00:00Z',
			toWorkOn = [];
		
		
		var workOnTitles = function () {
			var params = {
				remove: [], // Array or string containing categories to be removed
				add: ['Uploaded with UploadWizard'],
				titles: toWorkOn, // Array of titles to work on or a string of page separated by a pipe (|) character
				summary: '[[Commons:Bots/Requests/RillkeBot|Cleaning-up UploadWizard uploads]]. Removing 0-location templates.', // String -- Reason for doing so
				beforeSave: function (txt) {
					var nwe1 = mw.libs.wikiDOM.nowikiEscaper(txt);
					return nwe1.secureReplace('\n{{Location dec|0|0}}', '').getText();
				}
			};
			new mw.libs.Cat({ editArgs: { bot: true } }).batchEdit(params).progress(function () {
				console.log.apply(console.log, Array.prototype.slice.call(arguments));
			}).done(function () {
				toWorkOn = [];
				console.log('BATCH DONE!');
				fetchList();
			});
		};
		
		var fetchList = function() {
			mw.libs.settingsManager.switchGadgetPref('rbot-upwizcleanup', { ts: startValue });
			mw.libs.commons.api.$query({
				action: 'query',
				list: 'allimages',
				rawcontinue: 1,
				aisort: 'timestamp',
				aidir: 'older',
				aiprop: 'comment',
				aistart: startValue,
				ailimit: 500
			}).done(function(r) {
				startValue = r['query-continue'].allimages.aistart;
				$.each(r.query.allimages, function(i, img) {
					if (img.comment === 'User created page with UploadWizard') toWorkOn.push(img.title);
				});
				workOnTitles();
			});
		};
		fetchList();
	});
});