Usator:Ricordisamoa/SamoaBot.js

De Wikipedia, le encyclopedia libere

Nota: Post publicar, il pote esser necessari refrescar le cache de tu navigator pro vider le cambiamentos.

  • Firefox / Safari: Tenente Shift clicca Reload (Recargar), o preme Ctrl-F5 o Ctrl-R (⌘-R sur Mac)
  • Google Chrome: Preme Ctrl-Shift-R (⌘-Shift-R sur Mac)
  • Internet Explorer / Edge: Tenente Ctrl clicca Refresh (Refrescar), o preme Ctrl-F5
  • Opera: Preme Ctrl-F5.
/* <nowiki>
 *
 * WikidataHelper.bot.js by [[User:Ricordisamoa]]
 * inspired by [[d:User:Tpt/slurpInterwiki.js]]
 * optimized to run in a bot
 *
*/
function remove(page,newD,ii,q){
	$.post(
		mw.util.wikiScript("api"),
		{
			action:"edit",
			text:newD,
			title:page,
			summary:"Bot: interwikik eltávolítása ([[d:"+q+"|Wikidata]])",
			minor:true,
			bot:true,
			token:mw.user.tokens.get("editToken")
		}
	)
	.done(function(data){
		if(data&&data.error&&data.error.info){
			console.warn("Error! on  "+page+": "+data.error.info);
		}
		else{
			console.groupCollapsed((data===newD?"uguale  ":"")+ii+"  |  "+page);
			console.log(data);
			console.log(newD);
			console.groupEnd();
		}
	})
	.fail(stopBot);
}
function interlinks(page,ii){
	$.getJSON(mw.util.wikiScript("api"),
	{
		action:"query",
		titles:page,
		prop:"templates",
		tltemplates:"Template:Nobots",
		format:"json"
	},
	function(t){
		if(typeof(t.query.pages[Object.keys(t.query.pages)[0]].templates)=="undefined"){
			var lang=wgServer.split(/(\/\/|\.)/)[2];
			$.ajax({
				url:"http://wikidata.org/w/api.php",
				data:{
					format:"json",
					action:"wbgetentities",
					titles:page,
					sites:lang.replace(/-/g,"_")+"wiki"
				},
				dataType:"jsonp"
			})
			.done(function(data){
				if(data.success&&data.entities[Object.keys(data.entities)[0]]){
					var q=$.ucFirst(Object.keys(data.entities)[0]);
					var sl=$($.map(data.entities[Object.keys(data.entities)[0]].sitelinks,function(e){
						return [e.site.replace(/_/g,"-").replace(/wiki$/g,"")+":"+e.title];
					})).not([lang+":"+page]);
					$.get(
						mw.util.wikiScript("index"),
						{title:page,action:"raw"}
					)
					.done(function(d){
						var regex=/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):([^\[\]\n\r]+)\]\]/g;
						if(d.match(regex)!=null){
							var ll=$.map(d.match(regex),function(e){
								return [(e.match(/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):/)[1]+":"+e.match(/:([^\[\]\n\r]+)\]\]/)[1].trim()).replace(/_/g," ")];
							});
							ll_not_sl=$(ll).not(sl);// langlinks that are not in sitelinks (can be imported into Wikidata)
							var newD=d.replace(/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):[^\[\]\n\r]+\]\](\n\r?)?/g,"").replace(/\n\n$/,"\n");
							if($.compareArray(sl,ll)||ll_not_sl.length==0){
								remove(page,newD,ii,q);
							} else {
								console.log(ii+"    "+page+"    "+ll_not_sl.get());
								$.each(ll_not_sl,function(i,e){
									//console.log(e);
									/*
									$.post(
										"http://wikidata.org/w/api.php",
										{
											format:"json",
											site:lang.replace(/-/g,"_")+"wiki",
											title:page,
											linksite:e.split(":")[0].replace(/-/g,"_")+"wiki",
											linktitle:e.split(":").slice(1).join(":"),
											bot:true,
											summary:"Bot: importing interwikis from "+lang+".wiki",
											token:mw.user.tokens.get("editToken")
										}
									)
									.done(function(data){
										if(data.error&&data.error.info){
											console.warn("Error importing interwikis: "+data.error.info);
											document.location.reload();
											return;
										}
										else if(i===ll_not_sl.length-1) remove(page,newD,ii);
									})
									.fail(function(){
										console.warn("Error importing interwikis");
										document.location.reload();
										return;
									});*/
								});
							}
						}
					});
				}
			});
		} else stopBot();
	})
	.fail(stopBot);
}
function startTask(start,length,delay){
	if(typeof(delay)==="undefined") var delay=60;
	$.getJSON(
		mw.util.wikiScript("api"),
		{
			action:"query",
			format:"json",
			apfrom:start,
			aplimit:length,
			list:"allpages",
			apfilterredir:"nonredirects"
		},
		function(data){
			if(data.query.allpages&&typeof(data.query.allpages)!="undefined"&&data.query.allpages.length>0){
				var titles=$.map(data.query.allpages,function(e){
					return [e.title];
				});
				var apstart=data["query-continue"].allpages.apcontinue;
				console.log(titles);
				console.log(apstart);
				var ii=0;
				var interval=setInterval(function(){
					if(ii<length){
						interlinks(titles[ii],ii);
						ii+=1;
					}
					else return;
				},delay*1000);
			}
			else console.warn("no query result!");
		}
	);
}
function startCat(cat,length,delay){
	if(typeof(delay)==="undefined") var delay=60;
	$.getJSON(
		mw.util.wikiScript("api"),
		{
			action:"query",
			format:"json",
			cmlimit:length,
			list:"categorymembers",
			cmtitle:"Category:"+cat,
			cmprop:"title",
			cmtype:"page"
		},
		function(data){
			if(data.query.categorymembers){
				var titles=$.map(data.query.categorymembers,function(e){
					return [e.title];
				});
				var ii=0;
				var interval=setInterval(function(){
					if(ii<length){
						interlinks(titles[ii],ii);
						ii+=1;
					}
					else return;
				},delay*1000);
			}
		}
	);
}
function stopBot(){
	window.isBotStopped=true;
	console.log("Bot Stopped!");
	document.location.reload();
}