Usuari:PereBot/robot posa viquidites
Aparença
# -*- coding: utf-8 -*-
# Programa per enllaçar amb Viquidites des de la Viquipèdia.
# Es mira els articles de Viquidites que tenen una plantilla
# d'article (Tema, Persona o Autor; cal dir-li quina).
# De cada article, troba l'article a la Viquipèdia i mira
# si està enllaçat a Viquidites. Si no, posa l'enllaç a
# la plantilla projectes germans, si hi és, i si no hi és
# posa la plantilla viquidites.
import re, sys, urllib2
sys.path.append('C:\pywikipedia')
import wikipedia,catlib
# Funció que inserta la plantilla Commonscat (o un altre text) en una pàgina.
# Mira de posar-la davant de la plantilla Viquiespècies i si no hi és va buscant
# més llocs fins que al final la posa davant de les categories.
# Els arguments són la pàgina i el text a afegir (habitualment la plantilla amb
# el seu paràmetre.
# Retorna el text amb la plantilla (o sense, si no ha trobat on posar-la).
# És una adaptació de la del programa ccat monuments (l'argument és l'objecte pàgina i no el text).
#
def insertaccat(page, afegit):
if page.isRedirectPage():
page = page.getRedirectTarget()
text = page.get()
if re.search(u"\{\{([Vv]iquiespècies|[Ww]ikispecies)", text):
text=re.sub(u"\{\{([Vv]iquiespècies|[Ww]ikispecies)", u"%s{{Viquiespècies" % afegit, text)
print u"Text afegit davant de la plantilla esborrany"
if re.search(u"\{\{[Cc]ommons", text):
text=re.sub(u"\{\{[Cc]ommons", u"%s{{Commons" % afegit, text)
print u"Text afegit davant de la plantilla esborrany"
elif re.search(u"== ?Enllaços externs ?==", text): # PER FER: POSAR LA PLANTILLA ABANS DE VIQUILLIBRES O VIQUINOTÍCIES, COM A PRIMERA OPCIÓ
text=re.sub(u"(===? ?Enllaços externs ?===?)", u"== Enllaços externs ==\n%s" % afegit, text, count=1)
print u"Text afegit a la secció Enllaços externs"
elif re.search(u"== ?Enllaços ?==", text):
text=re.sub(u"(== ?Enllaços ?==)", u"== Enllaços externs ==\n%s" % afegit, text, count=1)
print u"Text afegit a la secció Enllaços (externs)"
elif re.search(u"== ?Bibliograf[ií]a ?==", text):
text=re.sub(u"== ?Bibliograf[ií]a ?==", u"== Bibliografia ==\n%s" % afegit, text, count=1)
print u"Text afegit a la secció Bibliograf[ií]a"
elif re.search(u"== ?Refer[eè]ncies ?==", text):
text=re.sub(u"== ?Refer[eè]ncies ?==", u"== Referències ==\n%s" % afegit, text, count=1)
print u"Text afegit a la secció Referències"
elif re.search(u"\{\{[Ee]sborrany", text):
text=re.sub(u"\{\{[Ee]sborrany", u"%s\n{{Esborrany" % afegit, text, count=1)
print u"Text afegit davant de la plantilla esborrany"
elif re.search(u"\{\{ORDENA", text):
text=re.sub(u"\{\{ORDENA", u"%s\n{{ORDENA" % afegit, text, count=1)
print u"Text afegit davant de l'ORDENA"
elif re.search(u"\[\[ ?[Cc]ategoria:", text):
text=re.sub(u"\[\[ ?[Cc]ategoria:", u"%s\n[[Categoria:" % afegit, text, count=1)
print u"Text afegit davant de les categories"
else:
print u"No he trobat on afegir el text a %s" % page.title(asLink=True)
return text
#El programa comença aquí
def principal():
nomplantilla = u'Autor' #Posar-hi una de les plantilles d'article o les seves redireccions: Tema, Persona i Autor
nom = u"Plantilla:%s" % nomplantilla
plantw = wikipedia.Page(dites, nom)
print plantw.title()
llista = plantw.getReferences(onlyTemplateInclusion=True)
print llista
comptacanvio = comptamirats = 0
pagprova = wikipedia.Page(site, u"User:PereBot/prova")
for pag in llista:
comptamirats += 1
print comptamirats, pag
totplant = pag.templatesWithParams() # Comença a buscar la plantilla w i el seu paràmetre
posar = False
redir2 = False # Flag doble redirecció
jaente = False # Flag ja té el paràmetre viquidites a la plantilla projectes germans
vg = False # Flag posem paràmetre viquidites a la plantilla projectes germans
for plant in totplant:
# print plant
if plant[0] == nomplantilla:
print plant[0]
if plant[1] == [] or len(plant[1][0]) < 2:
print u"Sense paràmetre"
elif posar == False:
for par in plant[1]:
if re.search(u"(?:Viquipèdia|Wikipedia) *=",par):
nomarticle = re.split(u"=",par)[1]
nomarticle = nomarticle.strip()
if nomarticle == "{{PAGENAME}}":
nomarticle = pag.title()
print nomarticle
if "#" in nomarticle or len(nomarticle) < 1:
print u"Nom no vàlid"
posar = False
else:
article = wikipedia.Page(site, nomarticle)
print article
if article.isRedirectPage():
article = article.getRedirectTarget()
print "Redirecciona a", article
if article.isRedirectPage():
print "Doble redirecció"
posar = False
redir2 = True
if redir2:
print"Ho deixem córrer per doble redirecció"
else:
titdites = pag.title()
posar = True
else:
print u"Més d'una plantilla {}: no sé quina agafar" % nomplantilla
posar=False
break
if posar:
plantarticle = article.templates()
if u'Projectes germans' in plantarticle or u'Wikimedia' in plantarticle or u'Sisterlinks' in plantarticle:
print article, u"té la plantilla projectes germans o similar"
totplanta = article.templatesWithParams() # Comença a buscar la plantilla w i el seu paràmetre
for planta in totplanta:
# print planta
if re.search(u'(?:[Pp]rojectes germans|[Ww]ikimedia|[Ss]isterlinks)', planta[0]):
print planta[0]
if planta[1] == [] or len(planta[1][0]) < 2:
print u"Sense paràmetre"
else:
for par in planta[1]:
if re.search(u"([Vv]iquidites|q) *=",par):
nomdites = re.split(u"=",par)[1]
nomdites = nomarticle.strip()
if len(nomdites) > 2:
posar = False
jaente = True
print u"Ja té viquidites a projectes germans",par
else:
textvell = article.get()
noutext = re.sub(ur"([Vv]iquidites|q) *=", u"Viquidites = %s" % titdites, textvell)
vg = True
print u"Omplo el camp viquidites de projectes germans, que era en blanc"
break
if vg == False and jaente == False: # Hi ha la plantilla projecte sense viquidites
textvell = article.get()
noutext = re.sub(u'([Pp]rojectes germans|[Ww]ikimedia|[Ss]isterlinks)',u"Projectes germans|Viquidites = "+titdites,textvell)
vg = True
print u"Poso viquidites a projectes germans"
if vg:
ccattxtmsg = u"Viquidites=[[:q:"+titdites+"|"+titdites+"]]}}"
try:
#per proves posar pagprova en comptes d'article
article.put(
noutext,
u"Robot afegint %s a la plantilla {{Projectes germans}}" % ccattxtmsg
)
except wikipedia.LockedPage:
print u"Error: Pàgina blocada"
except wikipedia.MaxTriesExceededError:
print u"Error: Temps excedit"
comptacanvio += 1
elif u'Viquidites' in plantarticle or u'Wikiquote' in plantarticle or u'Quote' in plantarticle:
print article, u"té la plantilla Viquidites o similar"
else:
print article, u"no té la plantilla i s'hi ha de posar"
ccattxt = u"{{Viquidites|%s}}\n" % titdites
ccattxtmsg = u"{{Viquidites|[[:q:{0}|{0}]]}}".format(titdites)
try:
noutext = insertaccat(article, ccattxt)
#per proves posar pagprova en comptes d'article
article.put(noutext, u"Robot afegint %s" %ccattxtmsg)
except wikipedia.NoPage:
print u"L'article no existeix"
except wikipedia.LockedPage:
print u"Error: Pàgina blocada"
except wikipedia.MaxTriesExceededError:
print u"Error: Temps excedit"
comptacanvio=comptacanvio+1
else:
print "No posar (no trobat article)"
# if comptamirats>120 or comptacanvio>5: break #límits per fer proves amb tirades curtes
if __name__ == '__main__':
dites = wikipedia.getSite('ca','wikiquote') #Viquidites
site = wikipedia.getSite('ca') #Viquipèdia
principal()
wikipedia.stopme()