Usuari:PereBot/robot llista 1000
Aparença
# -*- 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()