Usuari:PereBot/robot posa commonscat

De la Viquipèdia, l'enciclopèdia lliure
# -*- 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()