# -*- coding: utf-8 -*-
# Posa la plantilla Commonscat als articles d'acord amb les llistes de monuments
import sys
sys.path.append('C:\pywikipedia')
import wikipedia,catlib
import re
# Cerca articles sense Commonscat
# L'argument és la pàgina d'una llista de monuments
# Retorna un resum del que fa.
#
def cercacc(page):
resum=u""
text=page.get()
text=text.replace('\n','')
fragments=re.split("\{\{",text)
guia=page.title()
# print "TOTA LA LLISTA JUNTA:"
# print fragments
for el in fragments:
# print "\nUN ELEMENT:"
# print el
if re.search(u"[Ff]ilera IPA|[Ff]ilera MH|[Ff]ilera BI?C",el):
# print u"AIXÒ ÉS UN MONUMENT"
nom = re.sub(u".*(nom ?=.*?)\|.*",ur"\1",el)
# print "NOM:"
# print nom
ccat = re.sub(u".*(commonscat =.*?)[\|\}].*",ur"\1",el)
# print u"CCAT SENSE ESPORGAR: "+ccat
if re.search(u"[Cc]ommonscat",ccat):
ccat=re.sub(u".*?= ?",u"",ccat)
# print u"COMMONSCAT:"+ccat
if re.search(u"[Cc]ultural [Hh]eritage",ccat):
avis= u"Categoria "+ccat+u" ignorada per contenir \'Cultural heritage\'."
print avis
resum=resum+avis+"\n\n"
elif re.search(u"..",ccat):
if re.search(u"\[\[",nom):
# print u"HI HA ENLLAÇ"
nom = re.sub(u".*\[\[",ur"",nom)
nom = re.sub(u"\|.*",ur"",nom)
nom = re.sub(u"\]\].*",ur"",nom)
# print "NOM: "+nom
article=wikipedia.Page(site, nom)
if article.isRedirectPage():
article=article.getRedirectTarget()
if article.exists():
# print u"ARTICLE "+nom+u" EXISTEIX"
plantarticle=article.templates()
# print plantarticle
if u'Commonscat' in plantarticle or u'Projectes germans' in plantarticle or u'Commons' in plantarticle or u'Commonscat-inline' in plantarticle or u'Commons cat' in plantarticle:
res=0 #ordre que no fa res, per mantenir el bloc
# print u"TÉ LA PLANTILLA COMMONSCAT"
else:
avis= u"Posant la plantilla {{tl|commonscat|"+ccat+u"}} a l'article [["+nom+"]]."
# print avis
resum=resum+avis+"\n"
textplantilla=u"{{commonscat|"+ccat+u"}}"
noutext=insertaccat(article,textplantilla)
# desti=wikipedia.Page(site, u"usuari:PereBot/taller")
textvell=article.get()
# desti.put(textvell,u"Article copiat per fer proves")
wikipedia.showDiff(textvell,noutext)
if noutext==textvell:
resum=resum+u"Modificació no detectada. Revisar\n\n"
else:
resum=resum+u"Fet\n\n"
# print noutext
article.put(noutext,u"Robot afegint "+textplantilla+u" a partir de la [["+guia+u"]]")
# else:
# print "ARTICLE "+nom+" NO EXISTEIX"
# else:
# print u"NO HI HA ENLLAÇ"
else:
avis= u"Categoria "+ccat+u" ignorada per no tenir dues lletres."
print avis
resum=resum+avis+"\n\n"
# else:
# print u"NO HI HA PARÀMETRE COMMONSCAT"
# else:
# print u"AIXÒ NO ÉS UN MONUMENT NI RES QUE SE LI ASSEMBLI"
# print
return resum
# Funció que inserta la plantilla Commonscat (o un altre text) en una pàgina.
# Mira de posar-la al principi de la secció d'enllaços externs i sinó a les referències.
# 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).
#
def insertaccat(page,afegit):
if page.isRedirectPage():
page=page.getRedirectTarget()
text=page.get()
if re.search(u"== ?Enllaços externs ?==",text):
text=re.sub(u"(== ?Enllaços externs ?==)",u"== Enllaços externs ==\n"+afegit,text)
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"+afegit,text)
print u"Text afegit a la secció Enllaços (externs)"
elif re.search(u"== ?Bibliografia ?==",text):
text=re.sub(u"== ?Bibliografia ?==",u"== Bibliografia ==\n"+afegit,text)
print u"Text afegit a la secció Bibliografia"
elif re.search(u"== ?Referències ?==",text):
text=re.sub(u"== ?Referències ?==",u"== Referències ==\n"+afegit,text)
print u"Text afegit a la secció Referències"
elif re.search(u"\{\{[Ee]sborrany",text):
text=re.sub(u"\{\{[Ee]sborrany",afegit+u"\n{{Esborrany",text)
print u"Text afegit davant de la plantilla esborrany"
elif re.search(u"\{\{ORDENA",text):
text=re.sub(u"\{\{ORDENA",afegit+u"\n\n{{ORDENA",text)
print u"Text afegit davant de l'ORDENA"
elif re.search(u"\[\[ ?Categoria:",text):
text=re.sub(u"\[\[ ?Categoria:",afegit+u"\n\n[[Categoria:",text,count=1)
print u"Text afegit davant de les categories"
else:
print u"No he trobat on afegir el text a [["+page.title()+u"]]"
return text
# Aquí comença el programa
lloc=u"Llistes de monuments"
site=wikipedia.getSite('ca')
l=catlib.Category(site,lloc).articlesList(recurse=1)
#print l
informe=u""
for pag in l:
titol=pag.title()
print titol
pag=wikipedia.Page(site, titol)
informe=informe+cercacc(pag)
print u"RESUM:"
print informe
registre=wikipedia.Page(site,"usuari:PereBot/commonscat")
registre.put(registre.get()+u"\n==Resum==\n"+lloc+"\n\n"+informe+u"--~~~~",u"Resum edicions a partir de "+lloc)
wikipedia.stopme()