Vés al contingut

Usuari:PereBot/robot llista 1000

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding: utf-8 -*-
# Tradueix els enllaços de la pàgina
# "Viquiprojecte:Els 1000 Articles sobre la cultura catalana que tota viquipèdia hauria de tenir"
# fent servir els interviquis, i en fa tres informes:
# - la pàgina amb els enllaços traduïts,
# - la llista de tots els enllaços
# - la llista dels enllaços que no tenen iw en la llengua de destinació
# A més, a cada enllaç hi afegeix el nombre d'iw i l'enllaç a wikidata

import sys
sys.path.append('C:\pywikipedia')
import wikipedia, catlib, urllib2, re

# Torna un interviqui de viquidata, amb el nombre d'iws i la pàgina de viquidata.
# L'argument és un objecte pàgina i
# i el nom d'un viqui (per ex. u'enwiki').
# Torna el nom de l'article com a cadena de text.
def interviquitot(art, viqui):
    data = wikipedia.DataPage(art)
    try:
        cont = data.get()
        iws = cont[u'links']
        num = len(iws)
        tit = data.title()
        return iws[viqui][u'name'], num, tit
    except KeyError:
        print u"Error: no hi ha iw a",viqui
        return u"", num, tit
    except wikipedia.NoPage:
        print u"Error: no hi ha pàgina a wikidata"
        return "", 0, ""
    except wikipedia.MaxTriesExceededError:
        print "Error: Temps excedit"
        return "", 0, ""
    except urllib2.HTTPError:
        print "Error HTTP (no deu funcionar el web)"
        return "", 0, ""

#El programa comença aquí    
def principal():
    ew = u'enwiki'
    origen = u"Viquiprojecte:Els 1000 Articles sobre la cultura catalana que tota viquipèdia hauria de tenir"
    destillista =  u"User:PereBot/1000/raw"
    destipag = u"User:PereBot/1000/list"
    destimis = u"User:PereBot/1000/missing"
    infllista = infmis = u""
    mislin = [""]*200
    pagdestillista = wikipedia.Page(enwiki, destillista)
    pagdestipag = wikipedia.Page(enwiki, destipag)
    pagdestimis = wikipedia.Page(enwiki,destimis)
    pagorigen = wikipedia.Page(cawiki,origen)
    textorigen = pagorigen.get()
    textnou = textorigen
    fragments = re.split(u"\[\[", textorigen)
    if not u"[[" in fragments[0]:
        fragments = fragments[1:]
    #print fragments
    comptador = 0
    for tros0 in fragments:
        comptador += 1
        noen = False
    #   print tros
        tros = re.split(u"\]\]",tros0)[0]
        print comptador, tros
        titcat = re.split(u"\|",tros)[0]
        artcat = wikipedia.Page(cawiki, titcat)
        redir2 = False
        if artcat.isRedirectPage():
            artcat = artcat.getRedirectTarget()
            print "Redirecciona a", artcat
            titcat = artcat.title()
            if artcat.isRedirectPage():
                print u"Doble redirecció"
                redir2 = True
        print artcat
        (titen, numiw, titdata) = interviquitot(artcat, ew)
        snumiw = '{}'.format(numiw)
        print titen
        if titen == "":
            noen = True
            titen = titcat
        liniallista = u"# [[{}]] ([[{}]], [[:d:{}|{} iw]])\n".format(titen, titcat, titdata, snumiw)
        print liniallista
        infllista = infllista + liniallista
        if noen:
            mislin[numiw] = mislin[numiw] + liniallista
        treure = u"[[{}]]".format(tros)
        afegir = u"[[{}]] ([[{}]], [[:d:{}|{} iw]])".format(titen, titcat, titdata, snumiw)
        textnou = textnou.replace(treure, afegir)
    #    if comptador > 40:   # Posar per fer proves
    #        break          # Posar per fer proves
    pagdestillista.put(infllista, "Updating raw list")
    pagdestipag.put(textnou, "Updating translated list")
    mislin.reverse()
    for lin in mislin:
        infmis += lin
    pagdestimis.put(infmis, u"Updating missing list")

if __name__ == "__main__":
    cawiki = wikipedia.getSite('ca')
    enwiki = wikipedia.getSite('en')
    principal()
    wikipedia.stopme()