Usuario:Emijrp/Interwikis-mágicos

De Wikipedia, la enciclopedia libre

Busca articulos que tienen el mismo titulo en la en: y aquí, luego extrae los enlaces azules del español, y busca sus interwikis, y los colisiona con los enlaces azules del articulo inglés. Si coinciden el 50% o más, con mucha posibilidad el articulo esta hablando del mismo tema.

licencia gpl

autor emijrp

def hilo(page, idioma):
	wtext=page.get()
	wtitle=page.title()
	
	p=wikipedia.Page(wikipedia.Site(idioma, "wikipedia"), "%s" % wtitle)
	
	if p.exists() and not p.isRedirectPage() and not p.isDisambig():
		wikipedia.output(u"----------------------------------------------------------")
		wikipedia.output(u"Analizando: %s en %s" % (wtitle, idioma))
		
		#descartamos articulos ingleses con interwikis a la española
		iws=p.interwiki()
		salimos=0
		for i in iws:
			site=u"%s" % i.site()
			if site==u"wikipedia:es":
				wikipedia.output(u"El articulo %s tiene iw espanol, descartamos" % idioma)
				salimos=1
		
		if salimos:
			return 0
		
		linked=page.linkedPages()
		linkeden=p.linkedPages()
		
		aux=[]
		for i in linkeden:
			aux.append(i.title())
			#wikipedia.output(u"%s" % i.title())
		linkeden=aux
		
		cont=0
		total=0
		for i in linked:
			if i.exists() and not i.isRedirectPage() and not i.isDisambig():
				#wikipedia.output(u"%s" % i.title())
				iws=i.interwiki()
				for j in iws:
					site=u"%s" % j.site()
					title=u"%s" % j.title()
					if site==u"wikipedia:%s" % idioma:
						total+=1
						if linkeden.count(title)!=0:
							wikipedia.output(u"%s" % j.title())
							cont+=1
		wikipedia.output(u"Total=%s | Contador=%s" % (str(total), str(cont)))
		
		if cont>=total/2 and cont>0: #50% de margen
			iws=p.interwiki()
			iws.append(p)
			iws.sort()
			nuevo=u"%s\n" % wtext
			for i in iws:
				nuevo+=u"\n%s" % i
			if nuevo!=wtext:
				wikipedia.showDiff(wtext, nuevo)
				page.put(nuevo, u"BOT: [[Usuario:Emijrp/Interwikis-mágicos|Interwikis mágicos]] (los traemos de [[%s:%s]])" % (idioma, wtitle))
				return 0

	if idioma=="en":
		hilo(page, "de")
	elif idioma=="de":
		hilo(page, "fr")

class IwCat:
	def __init__(self, generator, acceptall = False):
		self.generator = generator
		self.acceptall = acceptall
	
	def run(self):
		for page in self.generator:
			try:
			 if page.isRedirectPage() or page.isDisambig() or page.interwiki():
				#wikipedia.output( u"==== %s ====\nRedireccion" % page.title())
				iiii=0
			 else:
				thread.start_new_thread(hilo, (page, "en"))
				time.sleep(0.5)
				
			except:
			 pass