Usuario:Emijrp/Interwikis-mágicos
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