Usuario:Rizome/A.PROYECTOS/Validador de votantes

De Wikipedia, la enciclopedia libre

Esta subpágina lista los votantes[1] de Wikipedia:Votaciones/2009/Para la asignación de una política oficial para los userboxes y páginas de usuario.

Se realiza el listado para poder, al cierre de la votación, comprobar que todos los votos se efectuaron adecuadamente y cumpliendo las normas de 100 ediciones y 30 días (registrados antes del 3 de octubre de 2009).

Fecha de publicación: 09/07/2011 00:00

  1. Listado:
  1. Ezarate [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  2. RoyFocker [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  3. Cratón [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  4. Niplos [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  5. Vitamine [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  6. Mar del Sur [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  7. Lcsrns [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  8. Emiduronte [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  9. Alpertron [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  10. Diegusjaimes [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  11. Farisori [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  12. Banfield [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  13. Miss Manzana [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  14. Baiji [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  15. Mel 23 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  16. Rastrojo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  17. Oscar_. [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  18. Maragm [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  19. Petronas [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  20. Gigabig [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  21. Poco_a_poco [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  22. Taty2007 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  23. Shalbat [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  24. XanaG [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  25. Savh [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  26. Lobo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  27. Fedaro [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  28. Escarlati [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  29. Ensada [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  30. Eligna [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  31. Marinna [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  32. Edmenb [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  33. Pownerus [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  34. Gustronico [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  35. Ecemaml [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  36. Isha [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  37. GMoyano [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  38. Aleposta [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  39. Bedwyr [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  40. Efegé [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  41. Falerístico [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  42. Er Komandante [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  43. Tikin777 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  44. Flores,Alberto [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  45. Raulshc [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  46. NaBUru38 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  47. IrwinSantos [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  48. ProtoplasmaKid [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  49. BuenaGente [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  50. Carrousel [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  51. Obelix83 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  52. Roberto Fiadone [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  53. CASF [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  54. Alhen [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  55. Dorieo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  56. Wikiléptico [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  57. Ecelan [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  58. Halfdrag [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  59. Tirithel [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  60. Ejemplo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  61. Antur [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  62. Ysidoro [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  63. Rickynoram [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  64. Fadesga [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  65. Sergio Andres Segovia [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  66. Leonpolanco [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  67. Wikisilki [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  68. Nachosan [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  69. Racso [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  70. MotherForker [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  71. Linfocito B [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  72. Rubpe19 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  73. Alfredobi [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  74. Lucien leGrey [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  75. Erick1984 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  76. Zeroth [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  77. Dangelin5 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  78. Miguillen [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  79. Tatvs [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  80. OboeCrack [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  81. Juan Mayordomo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  82. DJ Nietzsche [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  83. Siger [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  84. Bucephala [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  85. Mahadeva [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  86. David Perez [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  87. Furado [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  88. Technopat [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  89. Gilwellian [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  90. Xjmos [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  91. Ggenellina [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  92. Rondador [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  93. Rocalpi [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  94. Jduranboger [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  95. Iulius1973 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  96. Nerêo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  97. Cookie [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  98. Metrónomo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  99. Josetxus [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  100. Amanuense [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  101. Imperator-Kaiser [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  102. P.o.l.o. [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  103. Irbian [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  104. Kordas [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  105. Sanbec [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  106. Furti [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  107. Dagane [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  108. AzucenaPop [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  109. Montgomery [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  110. Sayri [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  111. Antón Francho [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  112. Enrique Cordero [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  113. Jkbw [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  114. Góngora [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  115. AldanaN [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  116. MadriCR [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  117. Wilfredor [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  118. Augusto664 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  119. HMcLuhan [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  120. Dodecaedro [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  121. Txo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  122. Yeza [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  123. Moraleh [disc. · EDIT100 · edit100 · gruposcontr. · stats]

UserScript de comprobación[editar]

El siguiente UserScript puede ser usado en esta página con la configuración que se muestra a continuación.
Requisitos:

VERIÓN 2.0

  1. La versión actual, muestra si un usuario cumple con el requisito de antigüedad —>30 días—.
  2. También se comprueba la fecha de su primera edición, y su edición número 100.
  3. Indica si cumple los dos requisitos necesaios para votar —antigüedad y versión nº100—.
  4. Iré actualizando este userscript. Queda:
    1. que genere link un link al usuario.
    2. que indique el grupo del usuario —biblio, reversor, etcétera—.
    3. cambios menores en la apariencia de los datos mostrados
// ==UserScript==
// @name Antigüedad wikipédica
// @namespace Wikipedia
// @description Probador de antigüedad wikipédica.
// @include http://es.wikipedia.org/wiki/Usuario:Rizome/A.PROYECTOS/Validador_de_votantes
// ==/UserScript==


//xPath
var XPFirst = XPathResult.FIRST_ORDERED_NODE_TYPE;
var XPList = XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
function find(xpath,xpres,i)
{var ret=document.evaluate(xpath,document,null,xpres,null);
 return xpres==XPFirst?ret.singleNodeValue:(i?ret.snapshotItem(i):ret);
}

//GEBI
function GEBI(id)
{return document.getElementById(id);}

//GEBIh
function GEBIh(id)
{return GEBI(id).innerHTML;}

//función que pasa de "wiki-mes" a "JavaScript-mes"
function MEStoJS(wiki)
{MES=new Array();
 switch(wiki)
 {case 'ene':MES[0]=0;MES[1]='enero';break;
  case 'feb':MES[0]=1;MES[1]='febrero';break;
  case 'mar':MES[0]=2;MES[1]='marzo';break;
  case 'abr':MES[0]=3;MES[1]='abril';break;
  case 'may':MES[0]=4;MES[1]='mayo';break;
  case 'jun':MES[0]=5;MES[1]='junio';break;
  case 'jul':MES[0]=6;MES[1]='julio';break;
  case 'ago':MES[0]=7;MES[1]='agosto';break;
  case 'sep':MES[0]=8;MES[1]='septiembre';break;
  case 'oct':MES[0]=9;MES[1]='octubre';break;
  case 'nov':MES[0]=10;MES[1]='noviembre';break;
  case 'dic':MES[0]=11;MES[1]='diciembre';break;
 }
return MES;
}


//función que pasa de "wiki-fecha" a "JavaScript-fecha"
function WIKItoJS(wiki,input_format,output_format)
{if(input_format==1)	//23:33 14 oct 2009
	{FECHA=wiki.split(' ');
	 FECHA=new Array(FECHA[3],MEStoJS(FECHA[2])[(output_format==1?0:1)],FECHA[1],FECHA[0].split(':')[0],FECHA[0].split(':')[1]);
	}
    else		//30 sep 2009 a las 23:58
	{FECHA=wiki.split(' ');
	 FECHA=new Array(FECHA[2],MEStoJS(FECHA[1])[(output_format==1?0:1)],FECHA[0],FECHA[5].split(':')[0],FECHA[5].split(':')[1]);	
	}

 return (output_format==1)?
	eval('new Date('+FECHA+')'):							//devuelve un OBJETO de fecha
	FECHA[2]+' de '+FECHA[1]+' de '+FECHA[0]+', a las '+FECHA[3]+':'+FECHA[4];	//devuelve un STRING con la fecha
}

//AJAX
function llamarasincrono(url,container,func)
{//CREA EL OBJETO
 var AJAXobj=false;
 if (window.XMLHttpRequest)
    {AJAXobj=new XMLHttpRequest();}
 else if (window.ActiveXObject)
    {try
      {AJAXobj=new ActiveXObject ("Msxml2.XMLHTTP");}
      catch (e)
      {try
        {AJAXobj=new ActiveXObject ("Microsoft.XMLHTTP");}
	catch (e){}
      }
    }
 else {return false;}


//Verifica que una fecha (dada por "string", en formato "input_format"), sea menor que otra puesta como requisito ("date2"), y escribe el resultado en el elemento xHTML marcado por su "id"
function verify(id,string,input_format,date2,k)
{GEBI(id).innerHTML=WIKItoJS(string,input_format,2);
 REG_date=WIKItoJS(string,input_format,1);
 GEBI(id).setAttribute('style',date2>REG_date?'color:'+(k>0?'black':'green')+';':'color:'+(k>0?'orange':'red')+';');
 GEBI(id).setAttribute('apto' ,date2>REG_date?1:k.toString());
}

 //EJECUTA EL CAMBIO CUANDO ESTÁ LISTO EL OBJETO AJAX
 AJAXobj.onreadystatechange=function()
 {if(AJAXobj.readyState==4 && (AJAXobj.status==200 || window.location.href.indexOf("http")==-1))
  	{if(url.indexOf('Listusers')>0)
		//Obtiene la fecha de registro, y grupos a los que pertenece el usuario [[Especial:Listusers]].
		{if(AJAXobj.responseText.indexOf('registrado desde el ')<0)
			//algunos usuarios no indican su fecha de registro (ej:Eric), esto es porque son muy antíguos.
			{GEBI('res_'+container).innerHTML='''usuario veterano''';
			 GEBI('res_'+container).setAttribute('apto','1');
			 GEBI('res_'+container).setAttribute('style','color:green');
			}
		 else
			{fecha=AJAXobj.responseText.split('registrado desde el ')[1].split(')')[0];
			 verify('res_'+container,
				fecha,2,
				REQ_date,0);
			}
		}
	 else
		//Obtiene la lista de contribuciones del usuario, y la guarda en un <div id="tmp">
		{GEBI('tmp_'+container).firstChild.innerHTML=AJAXobj.responseText;
		 EDITS=document.evaluate('//div[@id="bodyContent"]//td[@id="tmp_'+container+'"]//div[@id="bodyContent"]//ul/li',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);

		 //Obtiene la primera edición
		 if(EDITS.snapshotLength>0)
			{fecha=EDITS.snapshotItem(EDITS.snapshotLength-1).firstChild.innerHTML
			 verify('ed1_'+container,
				fecha,1,
				REQ_date,0.5);
			}

		 //Obtiene la edición nº100
		 if(EDITS.snapshotLength==100)
			{fecha=EDITS.snapshotItem(0).firstChild.innerHTML
			 verify('ed100_'+container,
				fecha,1,
				PUB_date,0);
			}
		 else
			{GEBI('ed100_'+container).innerHTML=EDITS.snapshotLength>0?'El usuario tiene '+EDITS.snapshotLength+' ediciones':'no tiene ediciones';
			 GEBI('ed100_'+container).setAttribute('style','color:red');
			}

		 //Llegado al final, hace las comprobaciones ('apto'). Si todas están "apro=1", el usuario podrá votar.
		 result=eval(GEBI('res_'+container).getAttribute('apto')+'*'+GEBI('ed1_'+container).getAttribute('apto')+'*'+GEBI('ed100_'+container).getAttribute('apto'));
		 GEBI('tmp_'+container).innerHTML=(result>0?(result>0.5?'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/16px-Yes_check.svg.png" width="16" /> Sí':'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Olive_green_check.svg/600px-Olive_green_check.svg.png" width="16" /> -'):'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/16px-X_mark.svg.png" width="16" /> NO');
		}

	 func();
	}
 }

 //Realiza la petición
 AJAXobj.open('GET',url,true);
 AJAXobj.send (null);
}

//Llama a las sucesivas verificaciones.
function next(i)
{
 if(i<OLm.length){llamarasincrono('http://es.wikipedia.org/w/index.php?title=Especial:Listusers&limit=1&username='+OLm[i],i,
				 function()
				 {llamarasincrono('http://es.wikipedia.org/w/index.php?title=Especial:Contribuciones&dir=prev&limit=100&target='+OLm[i],i,function(){next(i+1)})}
				 );

		 }
}

var PUB_date;			//Fecha de publicación de la votación.
var REQ_date;			//Fecha ante la cual se requiere ya estar registrado.
var REQ_time=30*24*60*60*1000;	//Milisegundos antes del inicio de la votación, que se requieren como requisito de antigüedad.

//funcionPrincipal
function funcionPrincipal()
{OL='<table class="wikitable"><tr><td>#</td><td>user:</td><td>registrado el:</td><td>edición nº1 el:</td><td>edición nº100 el:</td><td></td></tr>';
 OLm=new Array();
 LI=find('//div[@id="bodyContent"]//div[@id="listado"]/ol/li/span',XPList,false);
 for(i=0;i<LI.snapshotLength;i++)
 {OLm[i]=LI.snapshotItem(i).firstChild.innerHTML;
  OL+='<tr><td>'+(i+1)+'</td><td>'+OLm[i]+'</td><td id="res_'+i+'"></td><td id="ed1_'+i+'"></td><td id="ed100_'+i+'"></td><td id="tmp_'+i+'"><div style="display:none;">'+i+'</div></td></tr>';
 }
 OL+='</table>';
 find('//div[@id="bodyContent"]//div[@id="listado"]/ol',XPFirst,false).innerHTML=OL;

 PUB_date=GEBI('publicado').innerHTML;
 PUB_date=new Date(PUB_date.split('/')[2].split(' ')[0],parseFloat(PUB_date.split('/')[1])-1,PUB_date.split('/')[0],PUB_date.split(' ')[1].split(':')[0],PUB_date.split(' ')[1].split(':')[1]);
 REQ_date=new Date().setTime(PUB_date.getTime()-REQ_time);
 next(0);

}

// Ordena ejecutar la funcion principal, cuando se ha cargado toda la pagina
window.addEventListener('DOMContentLoaded', funcionPrincipal, false);
if (document.body) funcionPrincipal();