Usuario:Emijrp/Commonslista
Apariencia
En la discusión de esta página hay una versión con hilos por yrithinnd que funciona mucho más rápido.
# -*- coding: utf-8 -*-
from __future__ import generators
import sys, re
import wikipedia, pagegenerators,catlib, config
import random
def resumen(total, invalida, cont, tenian):
wikipedia.output(u"Total [%s]" % str(total))
analizadas=total-(invalida[0]+invalida[1]+invalida[2]+invalida[3])
wikipedia.output(u"Analizadas [%s]" % str(analizadas))
wikipedia.output(u"Invalidas: No existen [%s] - Redirects [%s] - Desamb [%s] - Namespace!=0 [%s]" % (str(invalida[0]), str(invalida[1]), str(invalida[2]), str(invalida[3])))
wikipedia.output(u"Imagen: Tenian [%s] - NO tenian [%s]" % (str(tenian[0]), str(tenian[1])))
if cont>0:
ratio=analizadas / cont
wikipedia.output(u"Bingos [%s], 1 de cada %s, Prediccion: %s" % (str(cont), str(ratio), str(280000/ratio)))
class ReplaceRobot:
def __init__(self, generator, acceptall = False):
self.generator = generator
self.acceptall = acceptall
def run(self):
salida=u"\n\n==%s==\n" % random.randint(1000,5000)
cont=0
total=0
invalida=[0,0,0,0]
tenian=[0,0]
for page in self.generator:
total+=1
wtitle=page.title()
print "\n"*5
wikipedia.output(u"--------------------------------------------------------")
wikipedia.output(u"Analizando [%s]" % wtitle)
if not page.exists():
wikipedia.output(u"Invalida: No existe")
invalida[0]+=1
resumen(total, invalida, cont, tenian)
continue
if page.isRedirectPage():
wikipedia.output(u"Invalida: Redirect")
invalida[1]+=1
resumen(total, invalida, cont, tenian)
continue
if page.isDisambig():
wikipedia.output(u"Invalida: Desambiguación")
invalida[2]+=1
resumen(total, invalida, cont, tenian)
continue
if page.namespace()!=0:
wikipedia.output(u"Invalida: No está en el namespace principal")
invalida[3]+=1
resumen(total, invalida, cont, tenian)
continue
wtext=page.get()
images=page.imagelinks()
if re.search(ur"(?i)\.(jpe?g|gif|bmp|svg|pne?g)", wtext) or images:
wikipedia.output(u"El articulo tiene imagenes, a otra cosa mariposa")
tenian[0]+=1
resumen(total, invalida, cont, tenian)
continue
else:
resumen(total, invalida, cont, tenian)
tenian[1]+=1
interwikis=page.interwiki()
salida1=u"#[[%s]]" % wtitle
temp=salida1
for iw in interwikis:
if iw.site().lang=="en" or iw.site().lang=="de" or iw.site().lang=="es":
try:
if iw.exists() and not iw.isRedirectPage() and not iw.isDisambig() and iw.namespace()==0:
iw_images=iw.imagelinks()
for iw_image in iw_images:
try:
if iw_image.fileIsOnCommons():
iw_image_title=iw_image.title()
trozos=iw_image_title.split(":")
iw_image_title=trozos[1]
if re.search(ur"(?i)jersey|med|escudo|flag|bandera|coat|arms|blass?on|\.svg|\.png", iw_image_title):
continue
else:
if not re.search(ur"(?i)%s" % iw_image_title, salida1):
#evitamos duplicados
salida1+=" - [[commons:Image:%s|Image]]" % iw_image_title
except:
iiiii=0
except:
iiiii=0
if temp!=salida1:
salida+=salida1+"\n"
cont+=1
resumen(total, invalida, cont, tenian)
else:
wikipedia.output(u"No hemos encontrado imágenes útiles")
resumen(total, invalida, cont, tenian)
continue
limite=30
if cont % limite == 0:
subpagina=wikipedia.Page(wikipedia.Site("fr", "wikipedia"), u"User:Emijrp/Commons")
subpagina.put(subpagina.get()+salida,u"%s más" % str(limite))
salida=u"\n\n==%s==\n" % random.randint(1000,5000)
for arg in wikipedia.handleArgs():
if arg.startswith('-file'):
if len(arg) >= 6:
textfilename = arg[6:]
gen = pagegenerators.TextfilePageGenerator(textfilename)
elif arg.startswith('-start'):
if len(arg) == 6:
firstPageTitle = wikipedia.input(u'Which page do you want to chage?')
else:
firstPageTitle = arg[7:]
namespace = wikipedia.Page(wikipedia.getSite(), firstPageTitle).namespace()
firstPageTitle = wikipedia.Page(wikipedia.getSite(), firstPageTitle).titleWithoutNamespace()
gen = pagegenerators.AllpagesPageGenerator(firstPageTitle, namespace)
preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 250)
bot = ReplaceRobot(preloadingGen)
bot.run()