# -*- 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()