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