Ir al contenido

Usuario:Emijrp/Commonslista

De Wikipedia, la enciclopedia libre

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