Usuari:PereBot/robot copia coordenades

# -*- coding: utf-8 -*-
# Programa per posar coordenades a partir dels interviquis.
# Intenta descartar primer els articles que no necessiten coordenades (biografies, llistes, etc)
# El programa agafa la plantilla coord dels interviquis.
# Només agafa plantilles coord que tinguin "title" i sempre treu "inline"
# Si hi és, l'agafa d'enwiki.
# Si no hi ha plantilla coord a enwiki, agafa la més llarga (comptant paràmetres).
# Si no ha trobat la plantilla coord en cap interviqui, aleshores expandeix totes
# les plantilles i busca els enllaços geohack al toolserver.
# Aleshores prefereix l'alemanya abans que l'anglesa.

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

#Torna un conjunt de plantilles que es troben en articles que no necessiten coordenades (principalment biografies)
def plantillesnocoord():
    llista = [u'Infotaula de persones', u'Infocaixa persona', u'Infobox Person', ]
    llista = llista+[u'Infotaula Personalitat', u'Infotaula Persona', u'Infobox person', u'Infotaula escriptor', u"Director d'orquestra", ]
    llista = llista+[u'Fitxa de persona', u'Infotaula de persona', u'Persona', u'Falta foto persona', u'Infotaula personatge', ]
    llista = llista+[u'Infobox Football biography 2', u'Futbolista', u'Futbolistes', ]
    llista = llista+[u'Infotaula persona', u'Infobox Biografia (pàgina redirigida)', u'Biografia Info (pàgina redirigida)', u'Infobox Biography ', ]
    llista = llista+[u'Taula tennista', u'Infotaula escriptor', u'Infotaula artista musical', u'Infobox biografia',]
    llista = llista+[u'Compositor cinema', u'Actor', u"Infotaula d'artista", u"Infotaula artista", u"Infobox artista",]
    llista = llista+[u'Persona viva', u'Data naixement i edat', u'Data naixement', u'Birth date', u'Data defunció i edat', u'Death date and age', ]
    llista = llista+[u'1000 Biografies', ]
    llista = llista+[u'Taulaciclista', u'Esportistes', u'Infotaula jugador NBA', ]
    llista = llista+[u'Polític', u'Infotaula President', u"Infotaula Monarca", u"Monarca", ]
    llista = llista+[u'Infotaula Sants', u'Sant', u'Sants', u'Plantilla:Sant', ]
    llista = llista+[u'Infotaula pel·lícula', u'Fitxa de pel·lícula', u'Infobox film', ]
    llista = llista+[u'Wikispecies', u'Viquiespècies', u'Clade', ]
    llista = llista+[u'Taxocaixa ocell', u'Taxocaixa mamífer', u'Taxocaixa equinoderm', ]
    llista = llista+[u'Taxocaixa peix', u'Taxocaixa planta', ]
    llista = llista+[u'Llengua', u'Nobots', ]
    return set(llista)

#Paraules amb les que comencen categories que tenen les pàgines que no necessiten coordenades (principalment biografies)
#PER FER: SEPARAR LES CATEGORIES ON NO BUSCAR ARTICLES DE LES CATEGORIES ON NO POSAR COORDENADES
def catsnocoord():
    cadena = u"Persones|Polítics|Escriptors|Pintors|Dibuixants"
    cadena = cadena+u"|Poetes|Dramaturgs|Novel·listes|Autors|Traductors"
    cadena = cadena+u"|Escultors|Arquitectes|Músics|Cantants|Ballarins|Actors|Compositors"
    cadena = cadena+u"|Artistes|Cuiners|Bandolers"
    cadena = cadena+u"|Esportistes|Jugadors|Entrenadors"
    cadena = cadena+u"|Futbolistes|Ciclistes|Nedadors|Tennistes|Golfistes|Pilotaires"
    cadena = cadena+u"|Medallistes|Campions|Guanyadors"
    cadena = cadena+u"|Emperadors|Reis|Ducs|Grans ducs|Comtes|Vescomtes|Virreis|Nobles"
    cadena = cadena+u"|Tsars|Electors|Prínceps|Infants|Barons|Diàdocs|Khans|Califes"
    cadena = cadena+u"|Reines|Consorts|Emperadrius|Primeres dames"
    cadena = cadena+u"|Cònsols|Tribuns|Pretors|Sàtrapes|Faraons|Tirans"
    cadena = cadena+u"|Governadors|Senyors|Marcgravis|Majordoms|Sobirans"
    cadena = cadena+u"|Exiliats|Militars|Comandants|Militars|Pilots"
    cadena = cadena+u"|Socialistes|Comunistes|Feministes|Militants|Feixistes|Nazis"
    cadena = cadena+u"|Activistes|Caps d'estat|Presidents|Ministres|Primers ministres"
    cadena = cadena+u"|Alcaldes|Consellers|Regidors|Diputats|Senadors"
    cadena = cadena+u"|Governants|Diplomàtics|Empresaris|Dirigents"
    cadena = cadena+u"|Periodistes|Directors|Advocats|Juristes"
    cadena = cadena+u"|Científics|Economistes|Físics|Químics|Matemàtics|Biòlegs"
    cadena = cadena+u"|Filòsofs|Filòlegs|Historiadors|Arqueòlegs|Geògrafs|Cartògrafs|Exploradors"
    cadena = cadena+u"|Alumnes|Professors|Pedagogs|Mestres"
    cadena = cadena+u"|Papes|Religiosos|Bisbes|Monjos|Frares|Abats|Canonges|Sacerdots"
    cadena = cadena+u"|Sants|Heretges|Beats|Déus|Herois"
    cadena = cadena+u"|Jesuïtes|Benedictins|Dominics"
    cadena = cadena+u"|Catalans|Barcelonins|Barcelonesos"
    cadena = cadena+u"|Vallesans|Sabadellencs|Terrassencs"
    cadena = cadena+u"|Gironins|Selvatans"
    cadena = cadena+u"|Valencians|Anglesos|Escocesos|Gal·lesos"
    cadena = cadena+u"|Víkings|Alemanys|Bavaresos|Prussians|Suïssos|Novaiorquesos"
    cadena = cadena+u"|Andalusins|Àrabs|Algerians|Egipcis"
    cadena = cadena+u"|Atenencs|Alexandrins"
    cadena = cadena+u"|Imams|Musulmans|Emirs|Sultans|Soldans|Companys"
    cadena = cadena+u"|Plats|Quadres|Discs|Cançons|Grups de música"
    cadena = cadena+u"|Pel·lícules|Canals de televisió|Programes"
    cadena = cadena+u"|Obres literàries|Obres de literatura|Obres teatrals"
    cadena = cadena+u"|Llibres|Novel·les|Contes|Personatges|Programari|Videojocs|Consoles"
    cadena = cadena+u"|Dominis de primer|Monedes|Himnes|Banderes|Escuts|Tractats"
    cadena = cadena+u"|Seleccions|Clubs|Partits|Jocs|Campionat|Condecoracions|Open"
    cadena = cadena+u"|Plantilles|Llistes|Articles destacats|Articles bons"
    cadena = cadena+u"|Esport|Empreses|Economia|Música|Literatura"  #Provisional. Treure quan no calgui.
    cadena = cadena+u"|Corona d'Aragó|Sacre Imperi"  #Provisional. Treure quan no calgui.
    cadena = cadena+u"|Primera Guerra Mundial"  #Provisional. Treure quan no calgui.
    cadena = cadena+u"|Cerdanya"  #Molt provisional. Treure quan no calgui.
    return cadena

#Paraules amb les que comencen categories que tenen les pàgines que sí que necessiten coordenades
def catssicoord():
    cadena = u"Ciutats|Pobles|Entitats de població|Capitals|Barris"
    cadena = cadena+u"|Estats|Províncies|Departaments|Districtes|Cantons|Municipis"
    cadena = cadena+u"|Voivodats|Comtats|Comarques|Regions|Perifèries|Prefectures|Parròquies"
    cadena = cadena+u"|Bisbats|Arquebisbats"
    cadena = cadena+u"|Principats|Baronies|Ducats|Regnes|Marquesats|Taifes|Emirats"
    cadena = cadena+u"|Bantustans|Repúbliques|Sultanats"
    cadena = cadena+u"|Altiplans|Penínsules|Coves|Planes|Parcs|Reserves"
    cadena = cadena+u"|Muntanyes|Volcans|Serralades|Serres|Colls|Valls"
    cadena = cadena+u"|Caps|Badies|Golfs|Mars|Illes|Arxipèlags|Platges"
    cadena = cadena+u"|Llacs|Glaceres|Estanys|Rius|Corrents d'aigua|Torrents|Rieres"
    cadena = cadena+u"|Edificis|Estadis|Pavellons|Teatres|Museus|Restaurants|Hotels"
    cadena = cadena+u"|Centres|Universitats|Pous|Preses|Masies|Palaus|Castells"
    cadena = cadena+u"|Esglésies|Catedrals|Capelles|Ermites|Santuaris"
    cadena = cadena+u"|Mesquites|Temples"
    cadena = cadena+u"|Fàbriques|Mines|Centrals"
    cadena = cadena+u"|Ports|Aeroports|Carreteres|Estacions|Camins|Canals|Autopistes|Línies"
    cadena = cadena+u"|Carrers|Avingudes|Places"
    cadena = cadena+u"|Batalles|Setges|Ràtzies|Accidents"
    return cadena

# Retorna les categories i articles d'una categoria, subcategories incloses.
# No torna a mirar les categories que ja ha mirat.
# Filtra pels noms de les categories fent servir una expressió regular.
def miracatfiltre(cat,catprevies=[],filtre=u""):
    articles=cat.articlesList(recurse=False)
    categories=cat.subcategoriesList(recurse=False)
    for scat in categories:
        print scat
#        print u"Títol",scat.title()
        if scat not in catprevies:
            catprevies.append(scat)
            if filtre==u"":
                nopassa=False
                print u"Filtre desactivat"
            else:
                nopassa=re.search(filtre,scat.title())                
            if not nopassa:
                print u"Sí que es llegeix", scat
                noucats,nouarts=miracatfiltre(scat,catprevies+categories,filtre)
                categories=categories+noucats
                articles=articles+nouarts
            else:
                print u"No es llegeix", scat
        else:
            print u"Aquesta ja la tinc vista"
    articles=catlib.unique(articles)         
    return categories, articles
    
#Torna els elements d'una llista separats per |
#Útil per convertir una llista en els paràmetres d'una plantilla
def ratlles(llista):
    cadena=u""
    for el in llista:
        cadena=cadena+u"|"+el
    return cadena

#Converteix els paràmetres recuperats de l'enllaç geohack
#en els paràmetres de la plantilla coord
def paramaratlles(hack):
    hack=hack.replace(u"|Mapa",u"") #Per eliminar aquest fragment que sol sortir a plwiki
    if u"_E_" in hack:
        dostrossos=re.split(u"_E_",hack)
        dostrossos[0]=re.sub(u"_",u"|",dostrossos[0])
        params=dostrossos[0]+u"|E|"+dostrossos[1]
    elif u"_W_" in hack:
        dostrossos=re.split(u"_W_",hack)
        dostrossos[0]=re.sub(u"_",u"|",dostrossos[0])
        params=dostrossos[0]+u"|W|"+dostrossos[1]
    else:
        print hack, u"no sembla unes coordenades normals"
        return u""
    params=params.replace(u"||",u"|")
    if params[-1]==u"_" or params[-1]==u"|":
        params=params[0:-1]
    return params    

#Dona l'enllaç a una pàgina en forma d'interviqui
#L'argument és un objecte pàgina
def enllac(pag):
    site=pag.site()
    llengua=site.lang
    titol=pag.title()
    return "[[:"+llengua+":"+titol+"]]"

def lawiki(pag):
    site=pag.site()
    llengua=site.lang
    return llengua+"wiki"    

# Funció que inserta la plantilla Coord (o un altre text) en una pàgina.
# Mira de posar-la davant de l'ORDENA i si no davant les categories.
# Els arguments són la pàgina i el text a afegir (habitualment la plantilla amb
# el seus paràmetres).
# Retorna el text amb la plantilla (o sense, si no ha trobat on posar-la).
#
def insertacoor(page,afegit):
    if page.isRedirectPage():
        page=page.getRedirectTarget()
    text=page.get()
    if re.search(u"\{\{ORDENA",text):
        text=re.sub(u"\{\{ORDENA",afegit+u"\n{{ORDENA",text)
        print u"Text afegit davant de l'ORDENA"
    elif re.search(u"\[\[ ?[Cc]ategoria:",text):
        text=re.sub(u"\[\[ ?[Cc]ategoria:",afegit+u"\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

#El programa comença aquí
site=wikipedia.getSite('ca')
catbuscar=u"Geografia de Tuvalu" #Posar aquí la categoria que es revisarà
missatge=u"" #u" en el marc del [[Viquiprojecte:Unió Europea]]"  #Missatge promocional. Canviar per "" la resta de l'any.
missatgeno=missatge # Missatge promocional per quan posa {{cal coor}}
calcoortxt=u"{{cal coor}}" # canviar quan calgui
categoria = catlib.Category(site,catbuscar)
filtrecats=u"Categoria:("+catsnocoord()+u")"
mirasubcategories=True #False per no mirar subcategories; True per no mirar-les
if mirasubcategories:
    cats, asc  = miracatfiltre(categoria,filtre=filtrecats)
else:
    asc=categoria.articlesList(recurse=False)
comptapotencial=len(asc)
print "Articles a la categoria:",comptapotencial
#asc=asc[100:] #Per fer només un grapat d'articles a la vegada
comptarevisar=len(asc)
enwiki=wikipedia.getSite('en')
dewiki=wikipedia.getSite('de')
plantno=plantillesnocoord()
informeno=""
marcagh=u"//toolserver.org/~geohack/geohack.php"
comptaarticles=0
comptajaentenen=0
comptaposoplant=0
comptaposohack=0
comptanocalenllista=0
comptanocalenplant=0
comptanocalencat=0
comptanoiw=0
comptacalcoor=0
comptacalcoor0=0
for pag in asc:
    comptaarticles=comptaarticles+1
    print comptaarticles,"/",comptarevisar,":",pag
    try:
        if pag.isRedirectPage():     #Precaució contra que hi hagi alguna redirecció categoritzada
            print u"És una redirecció"
        else:
            tottemp=pag.templates() 
        #    print tottemp
            if u'Coord' in tottemp:
                print u"Ja té la plantilla coord"
                comptajaentenen=comptajaentenen+1
            elif len(plantno&set(tottemp))>0:
                print u"No li calen coordenades (biografies, pel·lícules, etc detectades per les plantilles)."
                comptanocalenplant=comptanocalenplant+1
            elif pag.title().startswith(u"Llista d") or pag.title().startswith(u"Economia d") or pag.title().startswith(u"Toponímia d"):
                print u"No li calen coordenades generals. Detectat pel títol (llista, economia...)"
                comptanocalenllista=comptanocalenllista+1
        #    elif len(pag.interwiki())==0:           # Anul·lat aquest tros perquè cal posar cal coor als articles sense iw, també. 
        #        print u"No té interviquis"
        #        comptanoiw=comptanoiw+1      
            elif marcagh in pag.get(expandtemplates=True):
                print u"Ja té coordenades però sense la plantilla coord"
                comptajaentenen=comptajaentenen+1
            elif re.search(u"\[\[ ?[Cc]ategoria ?: ?("+catsnocoord()+")",pag.get()):
                print u"Biografia o similar detectada per les categories"
                comptanocalencat=comptanocalencat+1
            else:
                resumno=enllac(pag)+u"\n"
                coordexistent=False
                iw=pag.interwiki()
                print len(iw), u" interviquis"
                # Aquí comença a buscar la plantilla coord als interviquis
                coortxt=""
                coortxten=""
                coortxtde=""
                for pagiw in iw:
                    if pagiw.isRedirectPage():
                        pagiw=pagiw.getRedirectTarget()
                    if pagiw.exists():
                        if not pagiw.isRedirectPage():
                            if "#" not in pagiw.title():
                                tottempiw=pagiw.templates()
                                if u'Coord' in tottempiw:
                                    coordllegible=False
                                    coordexistent=True
                                    print pagiw,u" té la plantilla coord (QUE ES VEGI)"
                                    tottempiwpar=pagiw.templatesWithParams()
                                    for plant in tottempiwpar:
                                        if plant[0]==u'Coord':
                                            parcoord= plant
                    #                        print parcoord
                                            plantxt=ratlles(parcoord [1])
                                            plantxt=u"{{coord"+plantxt+u"}}"
                                            plantxt=re.sub(u"\,?inline\,?","",plantxt)
                    #                        print plantxt
                                            if "title" in plantxt and re.search(u"[0-9].*\|.*[0-9]",plantxt): #La condició que hi hagi un número és per evitar les plantilles coord amb números àrabs de la viqui en farsi
                                                coordllegible=True
                                                if len(plantxt)>len(coortxt):
                                                    coortxt=plantxt
                                                    origen=pagiw
                                                if pagiw.site()==enwiki:
                                                    coortxten=plantxt
                                                    origenen=pagiw
                                    if coordllegible==False:
                                        resumno=resumno+"*"+enllac(pagiw)+u"\n"
                                else:
                                    print pagiw,u" no té la plantilla coord"
                            else:
                                print pagiw,u" és una doble redirecció"
                        else:
                            print pagiw,u" no existeix"
                if coortxt!="":
                    print "Més llarga:",coortxt,origen
                if coortxten!="":
                    print "Anglesa:",coortxten,origenen
                if coortxt!="":
                    if coortxten!="":
                        coortxt=coortxten
                        origen=origenen
                    if not "source" in coortxt:
                        if "type" in coortxt:               # PER FER: CONVERTIR AIXÒ EN UNA FUNCIÓ (es repeteix més avall)
                            coortxt=coortxt.replace("type:","source:"+lawiki(origen)+"_type:")
                        elif "region" in coortxt:
                            coortxt=coortxt.replace("region:","source:"+lawiki(origen)+"_region:")
                        elif "scale" in coortxt:
                            coortxt=coortxt.replace("scale:","source:"+lawiki(origen)+"_scale:")
                        elif "dim" in coortxt:
                            coortxt=coortxt.replace("dim:","source:"+lawiki(origen)+"_dim:")
                        else:
                            coortxt=coortxt.replace("}}","|source:"+lawiki(origen)+"}}")
                    coortxt=re.sub(u"\{\{[Cc]oord\|(\d+)\.(\d+)\|N\|-(\d+)\.(\d+)\|E", r"{{coord|\1.\2|-\3.\4", coortxt)
                    noutext=insertacoor(pag,coortxt)
                    noutext=re.sub(u"{{[Cc]al coor.*}}\n?",u"",noutext)
                    noutext=re.sub(u"\n\n+{{coord",u"\n\n{{coord",noutext)
                    pag.put(noutext,u"Bot copia coordenades de la plantilla coord de "+enllac(origen)+missatge)
                    comptaposoplant=comptaposoplant+1
                    resumno=u""
                # Aquí acaba de buscar la plantilla coord als interviquis
                # i comença a buscar les coordenades a les plantilles expandides
                else:
                    if coordexistent==True and coordllegible==False: #Mantingut per compatibilitat de versió anterior
        ##                informeno=informeno+resumno+u"\n\n"
                        print u"Plantilla coord no llegida. Probablement no té display=title"
        ##            resumno=enllac(pag)+u"\n\n"
                    for pagiw in iw:
                        if pagiw.isRedirectPage():
                            pagiw=pagiw.getRedirectTarget()
        #                print u"Provant",pagiw
                        if pagiw.exists():
                            if not pagiw.isRedirectPage():
                                if "#" not in pagiw.title():
                                    textiw=pagiw.get(expandtemplates=True)
                                    #print textiw
                                    numgh=textiw.count(marcagh)
                    #                print numgh," vegades",marcagh
                    #                print textiw.count(u"toolserver")," vegades",u"toolserver"
                    #                print textiw.count(u"params")," vegades",u"params"
                                    if numgh>0:
                                        print pagiw,u" podria tenir coordenades"
                                        fragments=re.split(u"toolserver",textiw)
                                        fragnet=[]
                                        for el in fragments:
                                            if u"params=" in el:
                                                el=el[0:250]
                                                el=re.sub(u".*geohack\.php.*params\=",u"",el)
                                                el=re.sub(u"<span.*",u"",el)
                                                el=re.sub(u"(\n+.*)+",u"",el)
                                                el=re.sub(u" +.*",u"",el)
                                                el=re.sub(u"&title.*","",el)
                                                el=re.sub(u"&pagename.*","",el)
                                                el=re.sub(u"&lang.*","",el)
                                                el=re.sub(u"\{\{\{.*","",el)
                                                print u"Paràmetres:",el
                                                fragnet.append(el)
                                        if fragnet.count(fragnet[0])==2:
                                            print fragnet[0]," hi surt dos cops"
                                        hihacoord=False
                                        if len(fragnet)==1 or fragnet.count(fragnet[0])==2:
                                            hihacoord=True
                                            plantxt=fragnet[0]
                                        elif fragnet.count(fragnet[1])==2:
                                            hihacoord=True
                                            plantxt=fragnet[1]
                                        else:
                                            print pagiw," té diferents coordenades enllaçades i el programa no sap triar"
                                            resumno=resumno+u"* "+enllac(pagiw)+u" té diferents coordenades enllaçades i el programa no sap triar\n"
                                        if hihacoord:
                                            plantxt=paramaratlles(plantxt)
                                            if len(plantxt)>6:
                                                plantxt=u"{{coord|"+plantxt+u"}}"
                                                print plantxt
                                                if len(plantxt)>len(coortxt):
                                                    coortxt=plantxt
                                                    origen=pagiw
                                                if pagiw.site()==enwiki:
                                                    coortxten=plantxt
                                                    origenen=pagiw                  
                                                if pagiw.site()==dewiki:
                                                    coortxtde=plantxt
                                                    origende=pagiw                  
                                    else:
                                        print pagiw,u" no té coordenades enllaçades"
                                else:
                                    print pagiw,u" és una secció"
                        else:
                            print pagiw,u" no existeix"
                    if coortxt!="":
                        print "Més llarga:",coortxt,origen
                    if coortxten!="":
                        print "Anglesa:",coortxten,origenen
                    if coortxtde!="":
                        print "Alemanya:",coortxtde,origende
                    if coortxt!="":
                        if coortxten!="":
                            coortxt=coortxten
                            origen=origenen
                        if coortxtde!="":
                            coortxt=coortxtde
                            origen=origende
                        coortxt=coortxt.replace("}}","|display=title}}")                 
                        if not "source" in coortxt:
                            if "type" in coortxt:
                                coortxt=coortxt.replace("type:","source:"+lawiki(origen)+"_type:")
                            elif "region" in coortxt:
                                coortxt=coortxt.replace("region:","source:"+lawiki(origen)+"_region:")
                            elif "scale" in coortxt:
                                coortxt=coortxt.replace("scale:","source:"+lawiki(origen)+"_scale:")
                            elif "dim" in coortxt:
                                coortxt=coortxt.replace("dim:","source:"+lawiki(origen)+"_dim:")
                            elif "globe" in coortxt:
                                coortxt=coortxt.replace("globe:","source:"+lawiki(origen)+"_globe:")
                            else:
                                coortxt=coortxt.replace("}}","|source:"+lawiki(origen)+"}}")
                        coortxt=re.sub(u"\{\{[Cc]oord\|(\d+)\.(\d+)\|N\|-(\d+)\.(\d+)\|E", r"{{coord|\1.\2|-\3.\4", coortxt)
                        noutext=insertacoor(pag,coortxt)
                        noutext=re.sub(u"{{[Cc]al coor.*}}\n?",u"",noutext)
                        noutext=re.sub(u"\n\n+{{coord",u"\n\n{{coord",noutext)
        #                pagprova=wikipedia.Page(site,u"Usuari:PereBot/taller")
                        #canviar pagprova per pag a la línia següent per tenir versió funcional
                        pag.put(noutext,u"Bot copia coordenades de l'enllaç geohack de "+enllac(origen)+missatge)
                        comptaposohack=comptaposohack+1
                        resumno=u""
                    else:   # Si no ha pogut posar coordenades
                        if u"*" in resumno:
                            informeno=informeno+resumno+u"\n\n"              
                # Aquí acaba de buscar coordenades a les plantilles expandides.
                        if re.search(u"{{[Cc]al coor.*}}\n?",pag.get()):
                            print pag,u"Ja té {{cal coor}}"
                            comptacalcoor0=comptacalcoor0+1                   
                        elif re.search(u"\[\[ ?[Cc]ategoria ?: ?("+catssicoord()+")",pag.get(expandtemplates=True)):
                            if not re.search(u"("+catssicoord()+")",pag.title()):
                                print u"Li cal {{cal coor}} a",pag
                                comptacalcoor=comptacalcoor+1
                                noutext=insertacoor(pag,calcoortxt)
                                pag.put(noutext,u"Bot posa "+calcoortxt+missatgeno)
                            else:
                                print u"Nom plural. No és clar que li calgui {{cal coor}} a",pag,u"però segurament no"
                        else:
                            print u"No és clar que li calgui {{cal coor}} a",pag
    except MaxTriesExceededError:               #PER FER: QUE AQUESTA EXCEPCIÓ FUNCIONI
        print u"MaxTriesExceededError tot tractant",pag
resumestadistic=u"La [[:categoria:"+catbuscar+u"]] (un cop filtrada) té "+'{:}'.format(comptapotencial)+u" articles\n\n"
resumestadistic=resumestadistic+u"Revisats "+'{:}'.format(comptaarticles)+u" articles\n\n"
resumestadistic=resumestadistic+u"Ja tenien coordenades "+'{:}'.format(comptajaentenen)+u" articles\n\n"
#resumestadistic=resumestadistic+u"No tenen interviquis "+'{:}'.format(comptanoiw)+u" articles (que potser els calen les coordenades o potser no)\n\n"
resumestadistic=resumestadistic+u"No els calen coordenades a "+'{:}'.format(comptanocalenllista+comptanocalenplant+comptanocalencat)+u" articles (llistes, persones, films, etc.)\n\n"
resumestadistic=resumestadistic+u"*Detectats pel nom (llistes, etc.): "+'{:}'.format(comptanocalenllista)+u" articles\n\n"
resumestadistic=resumestadistic+u"*Detectats per les plantilles: "+'{:}'.format(comptanocalenplant)+u" articles\n\n"
resumestadistic=resumestadistic+u"*Detectats per les categories: "+'{:}'.format(comptanocalencat)+u" articles\n\n"
resumestadistic=resumestadistic+u"Copiada la plantilla coord a "+'{:}'.format(comptaposoplant)+" articles\n\n"
resumestadistic=resumestadistic+u"Posades coordenades de l'enllaç geohack a "+'{:}'.format(comptaposohack)+u" articles\n\n"
resumestadistic=resumestadistic+u"Total posades coordenades a "+'{:}'.format(comptaposoplant+comptaposohack)+u" articles\n\n"
resumestadistic=resumestadistic+u"Ja tenien cal coor "+'{:}'.format(comptacalcoor0)+u" articles\n\n"
resumestadistic=resumestadistic+u"Posat cal coor a "+'{:}'.format(comptacalcoor)+u" articles\n\n"
queden=comptaarticles-comptajaentenen-comptaposoplant-comptaposohack-(comptanocalenllista+comptanocalenplant+comptanocalencat)
resumestadistic=resumestadistic+u"Queden "+'{:}'.format(queden)+u" articles sense coordenades\n\n" # (comptant els que no tenen iw)\n\n"
resumestadistic=resumestadistic+u"Des quals "+'{:}'.format(comptacalcoor+comptacalcoor0)+u" estan marcats amb cal coor\n\n"
resumestadistic=resumestadistic+u"Hi ha "+'{:}'.format(queden-comptacalcoor-comptacalcoor0)+u" casos dubtosos\n\n"
print resumestadistic
informeno=informeno+u"\n"+resumestadistic
if informeno!=u"":
    paginforme=wikipedia.Page(site,u"Usuari:PereBot/coordenades")  # Pàgina on deixarà l'informe del que ha fet
    informeno=u"\n=="+catbuscar+u"==\n"+informeno+u"\n--~~~~\n\n"
    paginforme.put(paginforme.get()+informeno,catbuscar)
wikipedia.stopme()