Progetto:Bot/Programmi in Python per i bot/ContatoriMemento.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Questo bot si occupa di contare le pagine in una certa categoria
e salvare il risultato in una certa pagina.
Le pagine generate vengono incluse nel template Memento.

Le corrispondenze categoria pagina provengono dalla pagina:
[[Progetto:Qualità/Statistiche_manutenzioni]]

Qualc1
http://it.wikisource.org/wiki/Utente:Qualc1
"""

#***************** INIZIO: configurazione bot *****************

prefix_pag_salvataggio = u'Progetto:Qualità/Statistiche manutenzioni/'

# corrispondenze categorie - pagina_dove_salvare_contatore
categoria_pagina = [
    ('Categoria:SAL 50%', 'Formattare'),
    ('Categoria:Fonte da segnalare', 'Fonte da segnalare'),
    ('Categoria:Edizione da segnalare', 'Edizione da segnalare'),
    ('Categoria:SAL 75%', 'Da rileggere'),
    ('Categoria:Da controllare', 'Controllare'),
#    'Speciale:PagineOrfane' : 'Orfane', #... boh... vedere come fare...
    ('Categoria:Autori senza dati anagrafici', 'Autori senza dati anagrafici'),
    ('Categoria:Autori senza dati biografici', 'Autori senza dati biografici'),
    ('Categoria:Da tradurre', 'Tradurre'),
    ('Categoria:Categoria da definire', 'Da categorizzare')
]
pagTotale = u'Progetto:Qualità/Statistiche manutenzioni/Totale'

commento = "bot: aggiorno statistiche per template:Memento"

#testo da inserire prima e dopo il numero delle pagine.
pag_salvataggio_testo_prefix = ""
pag_salvataggio_testo_postfix = ""

#************************** FINE *******************************


import wikipedia, catlib


class Contatore:
    def __init__(self, listaCateg_PagSalva, paginaTotale):
        self.listaCateg_PagSalva = listaCateg_PagSalva
        self.paginaTotale = paginaTotale

    def run(self):
        totale = 0
        for pair in self.listaCateg_PagSalva:
            nome_categoria, nome_paginaSalva = pair
            categoria = catlib.Category(wikipedia.getSite(), nome_categoria)
            numPagInCategoria = len(categoria.articlesList())
            totale += numPagInCategoria
            paginaSalva = wikipedia.Page(wikipedia.getSite(), nome_paginaSalva)
            paginaSalva.put(pag_salvataggio_testo_prefix + str(numPagInCategoria) + pag_salvataggio_testo_postfix)
        paginaSalva = wikipedia.Page(wikipedia.getSite(), self.paginaTotale)
        paginaSalva.put(pag_salvataggio_testo_prefix + str(totale) + pag_salvataggio_testo_postfix)
            

def main():
    wikipedia.handleArgs()
    cat_paginaCompleta = map(lambda pair : (pair[0], prefix_pag_salvataggio + pair[1]), categoria_pagina)
    wikipedia.setAction(commento)
    bot = Contatore(cat_paginaCompleta, pagTotale)
    bot.run()

if __name__ == "__main__":
    try:
        main()
    except:
        wikipedia.stopme()
        raise
    else:
        wikipedia.stopme()
[modifica] Documentazione