Usuario:Er Komandante/Destacadosen.py

# -*- coding: utf-8  -*-
import wikipedia
import pagegenerators
import catlib
import re

category='en:Category:Wikipedia featured articles'
result=u'Usuario:Er Komandante/Destacados-en'
comment=u'Robot: listado de artículos destacados en w:en y sus equivalentes en w:es'

pgnum=50
longpg=500
i=0

lista= u'{|class=\"sortable wikitable\"\n|-\n! Título !! Tamaño !! ¿w:es? !! Tam @ w:es !! Diferencia\n|-\n'

cat = catlib.Category(wikipedia.getSite(), category)
gen = pagegenerators.CategorizedPageGenerator(cat)
gen = pagegenerators.PreloadingGenerator(gen, pageNumber = pgnum)

for pag in gen:
	i=i+1
	status=-1
	
	# título en inglés
	tit=pag.title()
	if pag.namespace() == 1:
	
		tit=tit[5:]
		tit=u'en:'+tit # enlace interwiki
	
		# lee y encuentra el interwiki
		page=wikipedia.Page(wikipedia.getSite(), tit)
		texto=page.get()
		leng=len(texto)
		esp=texto.split ('[[es:')

		try:
			# Título del artículo equivalente en español
			tituloesp=esp[1].split(']]')
			pg=wikipedia.Page(wikipedia.getSite(), tituloesp[0])
			txt=pg.get()
			diff=leng-len(txt)

			# ¿Es artículo deatacado o artículo bueno?
			if u'rtículo destacado}}' in txt:
			    status=2
			if u'rtículo bueno}}' in txt:
			    status=1
	
			print i,". ", tit," (", len(texto), " bytes) /// ",tituloesp[0]," (", len(txt)," bytes). Status=", status
			line = u'| [[:'
			line = line + tit
			line = line + u']] || '
			line = line + str(leng)
			line = line + u'||'
			if status==1:
			    line = line + u'[[Imagen:Artículo bueno.svg|14px]] '
			elif status==2:
			    line = line + u'[[Image:Cscr-featured.svg|14px]] '
			line = line+' [['
			line = line + unicode (tituloesp[0])
			line = line + u']] || '
			line = line + str(len(txt))
			line = line + u'|| '
			line = line + str(diff)
			line = line + u'\n|-\n'
		except wikipedia.NoPage:
			print 'Página no encontrada.'
		except wikipedia.IsRedirectPage:
			print 'Encontrada redirección en lugar de página.'

		except:
			print i,". ", tit , " (", len(texto), " bytes) XXXXXXXXXXXXXXXXXXxx"
			line =  u'| [[:'
			line = line + tit
			line = line + u']] || '
			line = line + str(leng)
			line = line + u' ||   || 0 || '
			line = line + str(leng)
			line = line + ' \n|-\n'

		lista = lista + line
		#print lista

	else:
		print "Página fuera de rango, namespace no válido!"

# creando en el wikcionario la lista de definiciones importadas
ap=wikipedia.Page(wikipedia.getSite(), result)
ap.put(lista, comment) 

#parando el programa
wikipedia.stopme()