Jump to content

User:DannyS712 test/sandbox.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by DannyS712 test (talk | contribs) at 18:46, 16 June 2019 (remove offset checks). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//<nowiki>
$(function (){
var redirects_config = {
	name: '[[User:DannyS712/getRedirects|getRedirects.js]] - TESTING',
	debug: false
};
importScript( 'User:DannyS712 test/JSON.js' );

mw.loader.using( 'mediawiki.util', function () {
    $(document).ready( function () { 
    	mw.util.addPortletLink ( 'p-cactions', 'javascript:void(0)', 'Get testing redirects', 'ca-getTestRedirects');
    	$('#ca-getTestRedirects').on('click', function() {
        	getTestRedirects();
    	} );
    } );
} );
async function getTestRedirects(){
	var initial = await getFiltered();
	var pre = [{
		notes: {
			script: redirects_config.name,
			time: parseInt(initial.offset),
			listBuild: parseInt(new Date().toISOString().replace(/[\-T:]|\.\d{3}Z/g, '')),
		}
	}];
	var data = pre.concat( initial.data );
	var offset = initial.offset;
	var iter = {};
	var shouldRun = true;
	var end = getEnd();
	while ( shouldRun ){
		iter = await getFiltered( offset );
		console.log( iter );
		data = data.concat( iter.data );
		offset = parseInt(iter.offset);
		if (data.length > 400) {
			console.log( "Batch complete" );
			shouldRun = false;
		}
		if (!iter.offset) {
			console.log( "Done" );
			shouldRun = false;
		}
	}
	if (redirects_config.debug) console.log( data );
	var stringy = JSON.stringify( data, null, 2 );
	console.log( stringy );
	set_JSON ( 'User:DannyS712 test/sandbox.json', stringy, 'Candidates to patrol - testing');
}
function getFiltered( offset ){
return new Promise((resolve) => {
	var to_send = {
		action: 'pagetriagelist',
		showunreviewed: true,
		showredirs: true,
		limit: 200,
		format: 'json',
	};
	if (offset || false ) to_send.offset = offset;
	if (redirects_config.debug) console.log( to_send );
	$.post( mw.config.get( 'wgScriptPath' ) + '/api.php', to_send, function( full_data ){ 
		if (redirects_config.debug) console.log( full_data );
		var pages = full_data.pagetriagelist.pages;
		if (redirects_config.debug) console.log( pages );
		var data = [];
		var page;
		for (var iii = 0; iii < pages.length; iii++){
			page = pages[iii];
			if (shouldPatrol( page )) {
			data.push( {
				pageid: parseInt(page.pageid),
				title: page.title,
				snippet: page.snippet,
			});
			}
		}
		console.log( data );
		var next_offset = false;
		if (pages && pages[pages.length-1] && pages[pages.length-1].creation_date) next_offset = parseInt(pages[pages.length-1].creation_date);
		var to_return = {
			data: data,
			offset: next_offset
		};
		resolve(to_return);
	});
});
}
function shouldPatrol( page ){
	var target = page.snippet.replace( /REDIRECT /i, '');
	var title = page.title;
	///*
	if (comparePages( target, title )) return false;
	if (comparePages( target.replace( /The /g, '' ), title.replace( /The /g, '' ) ) ) return true;
	//*/
	return false;
}
function comparePages( target, title ){
	var comparison = target.localeCompare( title, 'en', {sensitivity: 'base'} );
	if (comparison === 0) return true;
	return false;
}
function patrolRedirects(){
	var list = get_JSON('User:DannyS712 test/redirects.json');
	if (redirects_config.debug) console.log( list );
	for (var iii = 1; iii < list.length; iii++){ // Start from 1 because 0 is notes
		doPatrolFromId( list[iii].pageid);
	}
}
function doPatrolFromId( id ){
	var to_send = {
		action: 'pagetriageaction',
		pageid: id,
		reviewed: 1,
		token: mw.user.tokens.get( 'editToken' ),
		format: 'json'
	};
	if (redirects_config.debug) console.log( to_send );
	$.post( mw.config.get( 'wgScriptPath' ) + '/api.php', to_send, function( response ){ 
		console.log( response );
	} );
}
function getEnd(){
	var list = get_JSON('User:DannyS712 test/redirects.json');
	//console.log( list );
	var end = 0;
	if (list && list[0] && list[0].notes && list[0].notes.time) end = parseInt(list[0].notes.time);
	console.log( end );
	return end;
}
});
//</nowiki>