Usuari:PereBot/robot comptacategories

De la Viquipèdia, l'enciclopèdia lliure
# -*- coding: utf-8 -*-
# Compta els articles continguts a les categories llistades en una pàgina (origen)
# i en fa un informe en una altra pàgina (desti), indicant el nombre d'articles
# amb subcategories i sense.
import re, sys
sys.path.append('C:\pywikipedia')
import wikipedia, catlib

def principal():
    origen = u"Usuari:PereBot/Compta categories/categories a comptar"
    desti = u"Usuari:PereBot/Compta categories"
    pagdesti = wikipedia.Page(site, desti)
    pagorigen = wikipedia.Page(site, origen)
    textorigen = pagorigen.get()
    fragments = re.split(ur"\[\[:|\n", textorigen)
    #print fragments
    informe = u"=={0}==\n\nRecompte d'articles a les categories llistades a {0}\n\n".format(origen)
    for el in fragments:
    #    print u"tros original:", el
        el = re.sub(ur"\|.*", "", el)
        el = re.sub(ur"\]\].*", "", el)
    #    print u"tros net:", el
        if re.match(r"[Cc]ategoria:", el):
            elespai = el
            el = re.sub(r"[Cc]ategoria:", "", el)
            print u"És una categoria de nom:", el
            l = catlib.Category(site,el).articlesList(recurse=0)
            num = len(l)
            l = catlib.Category(site,el).articlesList(recurse=50)
            numtot = len(l)
            print "%s elements" % num
            informe += "[[{}]] {} articles. ({} amb subcategories)\n\n".format(elespai, num, numtot)
    #    else:
    #        print u"no és una categoria"
    resum = u"Recompte de categories de %s" % origen.title()
    pagdesti.put(u"%s\n%s\n--~~~~" % (pagdesti.get(), informe), resum)

if __name__ == "__main__":
    site = wikipedia.getSite('ca')
    principal()
    wikipedia.stopme()