(Go: >> BACK << -|- >> HOME <<)

Jump to content

User:Guycn2/sandbox.js: Difference between revisions

From Meta, a Wikimedia project coordination wiki
Content deleted Content added
No edit summary
No edit summary
Line 28: Line 28:
const numOfArticleEdits = await getNumOfArticleEdits( api );
const numOfArticleEdits = await getNumOfArticleEdits( api );
return console.log(numOfArticleEdits);
const findings = {
const findings = {
Line 39: Line 38:
discussionEdits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }?namespace=1`,
discussionEdits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }?namespace=1`,
stats: `https://xtools.wmcloud.org/ec/he.wikipedia.org/${ user }`,
stats: `https://xtools.wmcloud.org/ec/he.wikipedia.org/${ user }`,
registration: await getRegDate(),
registration: await getRegDate( api ),
firstContentVote: await getFirstContentVoteInfo( this.registration ),
firstContentVote: await getFirstContentVoteInfo( this.registration ),
firstPersonalVote: await getFirstPersonalVoteInfo( this.registration ),
firstPersonalVote: await getFirstPersonalVoteInfo( this.registration ),
Line 65: Line 64:
return data.query.usercontribs.length;
return data.query.usercontribs.length;
}
async function getRegDate( api ) {
const apiParams = {
list: 'users',
usprop: 'registration',
ususers: user
};
const data = await api.get( apiParams );
const dateParams = {
timeZone: 'Asia/Tel_Aviv',
dateStyle: 'long',
timeStyle: 'short',
hourCycle: 'h23'
};
let regDate = new Date( data.query.users[ 0 ].registration );
regDate = regDate.toLocaleString( 'he-IL', dateParams ).split( 'בשעה' );
const dateFraction = regDate[ 0 ];
let timeFraction = regDate[ 1 ];
if ( timeFraction.split( ':' )[ 0 ].length === 1 ) {
timeFraction = '0' + revTime;
}
return `${ timeFraction }, ${ dateFraction }`;
}
}

Revision as of 21:55, 24 May 2024

( async () => {
	
	'use strict';
	
	const user = mw.config.get( 'wgRelevantUserName' );
	
	if ( !user ) {
		return;
	}
	
	await $.when( mw.loader.using( 'mediawiki.util' ), $.ready );
	
	const portletLink = mw.util.addPortletLink( 'p-cactions', '#', 'בדיקה' );
	
	if ( portletLink ) {
		portletLink.addEventListener( 'click', scan );
	}
	
	async function scan( e ) {
		
		e.preventDefault();
		
		console.log( 'Scanning...' );
		
		await mw.loader.using( 'mediawiki.api' );
		
		const api = new mw.Api();
		
		const numOfArticleEdits = await getNumOfArticleEdits( api );
		
		const findings = {
			user: user,
			userPage: `https://he.wikipedia.org/wiki/User:${ user }`,
			talk: `https://he.wikipedia.org/wiki/User_talk:${ user }`,
			edits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }`,
			articleEdits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }?namespace=0`,
			voteEdits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }?namespace=4`,
			discussionEdits: `https://he.wikipedia.org/wiki/Special:Contribs/${ user }?namespace=1`,
			stats: `https://xtools.wmcloud.org/ec/he.wikipedia.org/${ user }`,
			registration: await getRegDate( api ),
			firstContentVote: await getFirstContentVoteInfo( this.registration ),
			firstPersonalVote: await getFirstPersonalVoteInfo( this.registration ),
			nullEdits: await getNullEditsInfo( numOfArticleEdits ),
			consecutiveNullEdits: await getConsecutiveNullEditsInfo( numOfArticleEdits ),
			newcomerEdits: await getNewcomerEditsInfo( numOfArticleEdits )
		};
		
		console.log( JSON.stringify( findings, null, 2 ) );
		
	}
	
	async function getNumOfArticleEdits( api ) {
		
		const params = {
			list: 'usercontribs',
			uclimit: 'max',
			ucstart: new Date( 2024, 4, 10 ).toISOString(),
			ucuser: user,
			ucnamespace: '0',
			ucprop: ''
		};
		
		const data = await api.get( params );
		
		return data.query.usercontribs.length;
		
	}
	
	async function getRegDate( api ) {
		
		const apiParams = {
			list: 'users',
			usprop: 'registration',
			ususers: user
		};
		
		const data = await api.get( apiParams );
		
		const dateParams = {
			timeZone: 'Asia/Tel_Aviv',
			dateStyle: 'long',
			timeStyle: 'short',
			hourCycle: 'h23'
		};
		
		let regDate = new Date( data.query.users[ 0 ].registration );
		
		regDate = regDate.toLocaleString( 'he-IL', dateParams ).split( 'בשעה' );
		
		const dateFraction = regDate[ 0 ];
		
		let timeFraction = regDate[ 1 ];
		
		if ( timeFraction.split( ':' )[ 0 ].length === 1 ) {
			timeFraction = '0' + revTime;
		}
		
		return `${ timeFraction }, ${ dateFraction }`;
		
	}
	
	async function getFirstContentVoteInfo( regDate ) {
		return {
			page: '',
			url: '',
			diffUrl: '',
			time: '',
			timeFromRegistration: ''
		};
	}
	
	async function getFirstPersonalVoteInfo( regDate ) {
		return {
			page: '',
			url: '',
			diffUrl: '',
			time: '',
			timeFromRegistration: ''
		};
	}
	
	async function getNullEditsInfo( numOfArticleEdits ) {
		return {
			count: 0,
			percentage: 0
		};
	}
	
	async function getConsecutiveNullEditsInfo( numOfArticleEdits ) {
		return {
			count: 0,
			percentage: 0
		};
	}
	
	async function getNewcomerEditsInfo( numOfArticleEdits ) {
		return {
			count: 0,
			percentage: 0
		};
	}
	
} )();