Vés al contingut

Usuari:PereBot/robot arregla catalogue of life

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding: utf-8 -*-
# Robot intenta arreglar uns errors de bot en posar la plantilla catalogue of life.
# De pas, lista els ordena generats per bot.

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

# Actualitza informe
def putinforme(pag,text0,afegit,sumari,signa=False):
    contingut=text0+afegit
    if signa:
        contingut=contingut+u"\n--~~~~\n"
    try:
        pag.put(contingut,sumari)
    except articleexists:
        res=pag.get()
        pag.put(contingut,sumari)
    return

# Endreça una mica les plantilles.
def poleix(text):
    text=text.replace(u"{{Projectes germans}}",u"{{Commonscat}}")
    text=re.sub(u"\[\[ ?[Cc]ategoria ?\:",u"[[Categoria:",text)
    if re.search(u"\{\{ ?[Pp]rojectes germans\|commonscat=.*\}\}",text):
        if not re.search(u"\{\{ ?[Pp]rojectes germans\|commonscat=.*\|.*=.*\}\}",text):
            text=re.sub(u"\{\{ ?[Pp]rojectes germans\|commonscat=",u"{{Commonscat|",text)
    for i in range(1,10):
        text=text.replace(u"\n\n{{Autoritat}}",u"\n{{Autoritat}}")
        text=text.replace(u"\n\n{{Commonscat",u"\n{{Commonscat")
        text=text.replace(u"\n\n{{Projectes germans",u"\n{{Projectes germans")
        text=re.sub(u"(\{\{ORDENA\:.*\}\}|\{\{Enllaç A[BD]\|.*\}\})\n*(\{\{Bases de dades taxonòmiques\}\}|\{\{Autoritat\}\})",ur"\2\n\1",text)
        text=re.sub(u"(\[\[ ?[Cc]ategoria ?\:.*\|?.*?\]\])\n*(\{\{Bases de dades taxonòmiques\}\}|\{\{Autoritat\}\})",ur"\2\n\1",text)
        text=text.replace(u"\n\n\n{{ORDENA",u"\n\n{{ORDENA")
    text=text.replace(u"{{Autoritat}}\n{{ORDENA",u"{{Autoritat}}\n\n{{ORDENA")
    text=text.replace(u"{{Autoritat}}\n[[Categoria:",u"{{Autoritat}}\n\n[[Categoria:")
    text=text.replace(u"{{Bases de dades taxonòmiques}}\n{{ORDENA",u"{{Bases de dades taxonòmiques}}\n\n{{ORDENA")
    text=text.replace(u"{{Bases de dades taxonòmiques}}\n[[Categoria:",u"{{Bases de dades taxonòmiques}}\n\n[[Categoria:")
    return text

def main():
    plantilla=wikipedia.Page(site,u"Plantilla:Catalogue of life")
    paginforme=wikipedia.Page(site,u"Usuari:PereBot/ordena posat per bot")
    capinforme=u"\n==Pàgines amb ORDENA posat per bot==\n\n"
    cosinforme=u""
    if paginforme.exists():
        textinforme0=paginforme.get()
    else:
        textinforme0=u""
    cblocinforme=0
    sumarinforme=u"Robot llistant pàgines amb <!--ORDENA generat per bot-->"
    comptador=0
    comptaedicions=0
    for pag in pagegenerators.PreloadingGenerator(pagegenerators.ReferringPageGenerator(plantilla,onlyTemplateInclusion=True)):
        try:
            textvell=pag.get()
        except wikipedia.IsRedirectPage:
            print pag,u"és una redirecció"
            continue
        comptador=comptador+1
        print comptador,pag
        textnou=textvell
        textnou=textnou.replace(u"{{en}}</ref>}} {{en}}</ref>",u"{{en}}</ref>")
        if re.search(u"<ref>\{\{Catalogue of life\|.*\|.* ''<ref>",textnou):
            trossoscat=re.findall(u"<ref>\{\{Catalogue of life\|.*\|.* ''<ref>",textnou)
            print trossoscat
            for troscat in trossoscat:
                trosnou=troscat.replace(u" ''<ref>",u"}}</ref><ref>")
                textnou=textnou.replace(troscat,trosnou)
        if re.search(u"<ref>\{\{Catalogue of life\|.*\|.*\}\}<ref>",textnou):
            trossoscat=re.findall(u"<ref>\{\{Catalogue of life\|.*\|.*\}\}<ref>",textnou)
            print trossoscat
            for troscat in trossoscat:
                trosnou=troscat.replace(u"}}<ref>",u"}}</ref><ref>")
                textnou=textnou.replace(troscat,trosnou)
        if textnou<>textvell:
            textnou=poleix(textnou)
            pag.put(textnou,u"Robot arreglant la plantilla {{Catalogue of life}}")
            comptaedicions=comptaedicions+1
            print comptaedicions,u" edicions"
        # Informe ORDENA
        if u"<!--ORDENA generat per bot-->" in textvell:
            ordena=re.findall(u"\{\{ORDENA:.*\}\}",textvell)[0]
            print cblocinforme,ordena
            liniainf=u"#[["+pag.title()+u"]] <nowiki>"+ordena+u"</nowiki>\n"
            cosinforme=cosinforme+liniainf
            cblocinforme=cblocinforme+1
            if cblocinforme>200:
                putinforme(paginforme,textinforme0,capinforme+cosinforme,sumarinforme)
                cblocinforme=0
#        if comptaedicions>10:
#            break
    if cosinforme!=u"":
        putinforme(paginforme,textinforme0,capinforme+cosinforme,sumarinforme,signa=True)    
    return

#El programa comença aquí
try:
    site=wikipedia.getSite('ca')
    main()
finally:
    wikipedia.stopme()