Wikipedia discusión:Ranking de visitas (Principal)

Contenido de la página no disponible en otros idiomas.
De Wikipedia, la enciclopedia libre

Código[editar]

  • Licencia GPL
  • Autor emijrp
import wikipedia, gzip, os, re, datetime

os.system('rm pagecounts*.gz') #limpiamos antes de empezar

os.system('wget http://dammit.lt/wikistats/ -O tmpweb.html')
file=open('tmpweb.html', 'r')
wget=file.read()
ayer=datetime.date.today()-datetime.timedelta(days=1)
ayerano=str(ayer.year)
ayermes=str(ayer.month)
if len(ayermes)==1:
	ayermes='0%s' % ayermes
ayerdia=str(ayer.day)
if len(ayerdia)==1:
	ayerdia='0%s' % ayerdia
m=re.compile(ur'(?i)\"(pagecounts\-%s%s%s\-\d{6}\.gz)\"' % (ayerano, ayermes, ayerdia)).finditer(wget)
gzs=[]
for i in m:
	print i.group(1)
	gzs.append(i.group(1))

pagesdic={u'Principal':{}, u'Usuario':{}, u'Wikipedia':{}, u'Imagen':{}, u'Plantilla':{}, u'Ayuda':{}, u'Categoría':{}, u'Portal':{}, u'Wikiproyecto':{}, u'Anexo':{}}
r={'Usuario':re.compile(ur'(?m)^es Usuario:'),
'Wikipedia':re.compile(ur'(?m)^es Wikipedia:'),
'Imagen':re.compile(ur'(?m)^es Imagen:'),
'Plantilla':re.compile(ur'(?m)^es Plantilla:'),
'Ayuda':re.compile(ur'(?m)^es Ayuda'),
'Categoría':re.compile(ur'(?m)^es Categor%C3%ADa:'),
'Portal':re.compile(ur'(?m)^es Portal:'),
'Wikiproyecto':re.compile(ur'(?m)^es Wikiproyecto:'),
'Anexo':re.compile(ur'(?m)^es Anexo:'),
}

for gz in gzs:
	os.system('wget http://dammit.lt/wikistats/%s' % gz)
	f=gzip.open(gz, 'r')
	
	regex=re.compile(ur'(?im)^es (.*) (\d{1,}) (\d{1,})$')
	
	line=f.readline()
	c=0
	while line:
		c+=1
		if c % 250000 == 0:
			print "Analizadas %d de lineas" % c
		m=regex.finditer(line)
		for i in m:
			page=i.group(1)
			times=int(i.group(2))
			
			nm=u'Principal'
			if re.search(r['Usuario'], line):
				nm=u'Usuario'
			elif re.search(r['Wikipedia'], line):
				nm=u'Wikipedia'
			elif re.search(r['Imagen'], line):
				nm=u'Imagen'
				continue #saltamos
			elif re.search(r['Plantilla'], line):
				nm=u'Plantilla'
			elif re.search(r['Ayuda'], line):
				nm=u'Ayuda'
			elif re.search(r['Categoría'], line):
				nm=u'Categoría'
			elif re.search(r['Portal'], line):
				nm=u'Portal'
			elif re.search(r['Wikiproyecto'], line):
				nm=u'Wikiproyecto'
			elif re.search(r['Anexo'], line):
				nm=u'Anexo'
			
			if pagesdic[nm].has_key(page):
				pagesdic[nm][page]+=times
			else:
				pagesdic[nm][page]=times
		line=f.readline()
	
	f.close()

pageslist={}
for k, v in pagesdic.items():
	pageslist[k] = [(v2, k2) for k2, v2 in v.items()]
	pageslist[k].sort()
	pageslist[k].reverse()
	pageslist[k] = [(k2, v2) for v2, k2 in pageslist[k]]

visitas={u'Total':0, u'Principal':0, u'Usuario':0, u'Wikipedia':0, u'Imagen':0, u'Plantilla':0, u'Ayuda':0, u'Categoría':0, u'Portal':0, u'Wikiproyecto':0, u'Anexo':0}
for k, v in pageslist.items():
	for k2, v2 in v:
		visitas[k]+=v2
		visitas[u'Total']+=v2

limite=100
for k2, v2 in pageslist.items():
	if k2==u'Imagen':
		continue #saltamos
	salida=u"La siguiente tabla muestra las '''%d páginas más visitadas''' (en el espacio de nombres '%s') de [[Wikipedia en español]] en el día de ayer (de 00:00 UTC a 23:59 UTC). Ayer hubo un total de {{subst:formatnum:%d}} visitas para este espacio de nombres, %.1f%s del total ({{subst:formatnum:%d}}).\n<center>[[Wikipedia:Ranking de visitas (Principal)|Principal]] · [[Wikipedia:Ranking de visitas (Usuario)|Usuario]] · [[Wikipedia:Ranking de visitas (Wikipedia)|Wikipedia]] · [[Wikipedia:Ranking de visitas (Plantilla)|Plantilla]] · [[Wikipedia:Ranking de visitas (Ayuda)|Ayuda]] · [[Wikipedia:Ranking de visitas (Categoría)|Categoría]] · [[Wikipedia:Ranking de visitas (Portal)|Portal]] · [[Wikipedia:Ranking de visitas (Wikiproyecto)|Wikiproyecto]] · [[Wikipedia:Ranking de visitas (Anexo)|Anexo]]</center>\n\n<center>\n{| class='wikitable sortable' style='text-align:center;'\n! #\n! Página\n! Visitas" % (limite, k2, visitas[k2], visitas[k2]/(visitas[u'Total']/100.0), u'%', visitas[u'Total'])
	
	c=0
	for k, v in pageslist[k2]:
		try:
			if re.search(ur'Especial\:|Special\:|sort_down\.gif|sort_up\.gif|sort_none\.gif', k):
				continue
			tmp=wikipedia.Page(wikipedia.Site('es', 'wikipedia'), k)
			detalles=u''
			if tmp.exists():
				if tmp.isRedirectPage():
					detalles+=u'(Redirección a [[%s]])' % (tmp.getRedirectTarget())
				elif tmp.isDisambig():
					detalles+=u'(Desambiguación)'
				else:
					tmpget=tmp.get()
					if re.search(ur'(?i)\{\{ *Artículo bueno', tmpget):
						detalles+=u'[[Imagen:Artículo bueno.svg|14px|Artículo bueno]]'
					if re.search(ur'(?i)\{\{ *Artículo destacado', tmpget):
						detalles+=u'[[Imagen:Cscr-featured.svg|14px|Artículo destacado]]'
					if re.search(ur'(?i)\{\{ *(Semiprotegida2?|Semiprotegido|Pp-semi-template)', tmpget):
						detalles+=u'[[Imagen:Padlock-silver-medium.svg|20px|Semiprotegida]]'
					if re.search(ur'(?i)\{\{ *(Protegida|Protegido|Pp-template)', tmpget):
						detalles+=u'[[Imagen:Padlock.svg|20px|Protegida]]'
					
			k=re.sub(ur'(?i)(Imagen?\:)', ur':\1', k)
			k=re.sub(ur'(?i)(Category\:|Categor%C3%ADa\:)', ur':\1', k)
			k=re.sub('_', ' ', k)
			c+=1
			salida+=u"\n|-\n| %d || [[%s]] %s || %s " % (c, k, detalles, v)
			if c>=limite:
				break
		except:
			wikipedia.output(u'Error al generar item en lista de %s' % k2)
	
	salida+=u"\n|}\n</center>\n\n== Véase también ==\n*[[Wikipedia:Ranking de ediciones]]\n*[[Wikipedia:Ranking de ediciones (incluye bots)]]\n*[[Wikipedia:Ranking de ediciones anónimas por país]]\n*[[Wikipedia:Ranking de wikiproyectos]]\n\n[[Categoría:Wikipedia:Estadísticas|Ranking]]"
	
	wiii=wikipedia.Page(wikipedia.Site('es', 'wikipedia'), u'Wikipedia:Ranking de visitas (%s)' % k2)
	wiii.put(salida, u'BOT - Actualizando lista de páginas más visitadas (%s)' % k2)

os.system('rm pagecounts*.gz')