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

Da Wikisource.
Jump to navigation Jump to search
# -*- coding: utf-8 -*-
 
"""
Per lanciare il bot scrivere:
 
python ConteggioTesti.py totale
"""
 
#*************** INIZIO: PARAMETRI PER PROGETTI  ***************
# per aggiungere un nuovo progetto basta aggiungerlo nella sezione qui sotto.
 
parametri = {
'totale': [
# DA DEFINIRE
	['Testi SAL 25%25 Argomento da definire', 'Testi SAL 50%25 Argomento da definire', 'Testi SAL 75%25 Argomento da definire', 'Testi SAL 100%25 Argomento da definire', 'Testi SAL 101%25 Argomento da definire', 'Template:Totale testi argomento da definire'],
# GENERALE
	['Testi SAL 25%', 'Testi SAL 50%', 'Testi SAL 75%', 'Testi SAL 100%', 'Testi Edizioni Wikisource', 'Template:Totale testi'],
# ARTI
	['Testi SAL 25%25 Arti', 'Testi SAL 50%25 Arti', 'Testi SAL 75%25 Arti', 'Testi SAL 100%25 Arti', 'Testi SAL 101%25 Arti', 'Template:Totale testi arti'],
	# ARTI PERFORMATIVE
	['Testi SAL 25%25 Arti performative', 'Testi SAL 50%25 Arti performative', 'Testi SAL 75%25 Arti performative', 'Testi SAL 100%25 Arti performative', 'Testi SAL 101%25 Arti performative', 'Template:Totale testi arti performative'],
		# MUSICA
	['Testi SAL 25%25 Musica', 'Testi SAL 50%25 Musica', 'Testi SAL 75%25 Musica', 'Testi SAL 100%25 Musica', 'Testi SAL 101%25 Musica', 'Template:Totale testi musica'],
			# CANTI
	['Testi SAL 25%25 Canti', 'Testi SAL 50%25 Canti', 'Testi SAL 75%25 Canti', 'Testi SAL 100%25 Canti', 'Testi SAL 101%25 Canti', 'Template:Totale testi canti'],
			# INNI NAZIONALI
	['Testi SAL 25%25 Inni nazionali', 'Testi SAL 50%25 Inni nazionali', 'Testi SAL 75%25 Inni nazionali', 'Testi SAL 100%25 Inni nazionali', 'Testi SAL 101%25 Inni nazionali', 'Template:Totale testi inni nazionali'],
			# OPERE LIRICHE
	['Testi SAL 25%25 Opere liriche', 'Testi SAL 50%25 Opere liriche', 'Testi SAL 75%25 Opere liriche', 'Testi SAL 100%25 Opere liriche', 'Testi SAL 101%25 Opere liriche', 'Template:Totale testi opere liriche'],
				# LIBRETTI D'OPERA
	['Testi SAL 25%25 Libretti d\'opera', 'Testi SAL 50%25 Libretti d\'opera', 'Testi SAL 75%25 Libretti d\'opera', 'Testi SAL 100%25 Libretti d\'opera', 'Testi SAL 101%25 Libretti d\'opera', 'Template:Totale testi libretti d\'opera'],
		# TEATRO
	['Testi SAL 25%25 Teatro', 'Testi SAL 50%25 Teatro', 'Testi SAL 75%25 Teatro', 'Testi SAL 100%25 Teatro', 'Testi SAL 101%25 Teatro', 'Template:Totale testi teatro'],
			# COMMEDIA DELL'ARTE
	['Testi SAL 25%25 Commedia dell\'Arte', 'Testi SAL 50%25 Commedia dell\'Arte', 'Testi SAL 75%25 Commedia dell\'Arte', 'Testi SAL 100%25 Commedia dell\'Arte', 'Testi SAL 101%25 Commedia dell\'Arte', 'Template:Totale testi commedia dell\'arte'],
			# TRAGEDIE
	['Testi SAL 25%25 Tragedie', 'Testi SAL 50%25 Tragedie', 'Testi SAL 75%25 Tragedie', 'Testi SAL 100%25 Tragedie', 'Testi SAL 101%25 Tragedie', 'Template:Totale testi tragedie'],
	# ARTI VISIVE
	['Testi SAL 25%25 Arti visive', 'Testi SAL 50%25 Arti visive', 'Testi SAL 75%25 Arti visive', 'Testi SAL 100%25 Arti visive', 'Testi SAL 101%25 Arti visive', 'Template:Totale testi arti visive'],
		# PITTURA
	['Testi SAL 25%25 Pittura', 'Testi SAL 50%25 Pittura', 'Testi SAL 75%25 Pittura', 'Testi SAL 100%25 Pittura', 'Testi SAL 101%25 Pittura', 'Template:Totale testi pittura'],
	# LETTERATURA
	['Testi SAL 25%25 Letteratura', 'Testi SAL 50%25 Letteratura', 'Testi SAL 75%25 Letteratura', 'Testi SAL 100%25 Letteratura', 'Testi SAL 101%25 Letteratura', 'Template:Totale testi letteratura'],
		# BIOGRAFIE
	['Testi SAL 25%25 Biografie', 'Testi SAL 50%25 Biografie', 'Testi SAL 75%25 Biografie', 'Testi SAL 100%25 Biografie', 'Testi SAL 101%25 Biografie', 'Template:Totale testi biografie'],
			# AUTOBIOGRAFIE
	['Testi SAL 25%25 Autobiografie', 'Testi SAL 50%25 Autobiografie', 'Testi SAL 75%25 Autobiografie', 'Testi SAL 100%25 Autobiografie', 'Testi SAL 101%25 Autobiografie', 'Template:Totale testi autobiografie'],
		# Critica letteraria
	['Testi SAL 25%25 Critica letteraria', 'Testi SAL 50%25 Critica letteraria', 'Testi SAL 75%25 Critica letteraria', 'Testi SAL 100%25 Critica letteraria', 'Testi SAL 101%25 Critica letteraria', 'Template:Totale testi critica letteraria'],
		# Diari di viaggio
	['Testi SAL 25%25 Diari di viaggio', 'Testi SAL 50%25 Diari di viaggio', 'Testi SAL 75%25 Diari di viaggio', 'Testi SAL 100%25 Diari di viaggio', 'Testi SAL 101%25 Diari di viaggio', 'Template:Totale testi diari di viaggio'],
		# Fantascienza
	['Testi SAL 25%25 Fantascienza', 'Testi SAL 50%25 Fantascienza', 'Testi SAL 75%25 Fantascienza', 'Testi SAL 100%25 Fantascienza', 'Testi SAL 101%25 Fantascienza', 'Template:Totale testi fantascienza'],
		# Fiabe
	['Testi SAL 25%25 Fiabe', 'Testi SAL 50%25 Fiabe', 'Testi SAL 75%25 Fiabe', 'Testi SAL 100%25 Fiabe', 'Testi SAL 101%25 Fiabe', 'Template:Totale testi fiabe'],
			# Raccolte di fiabe
	['Testi SAL 25%25 Raccolte di fiabe', 'Testi SAL 50%25 Raccolte di fiabe', 'Testi SAL 75%25 Raccolte di fiabe', 'Testi SAL 100%25 Raccolte di fiabe', 'Testi SAL 101%25 Raccolte di fiabe', 'Template:Totale testi raccolte di fiabe'],
		# Interviste
	['Testi SAL 25%25 Interviste', 'Testi SAL 50%25 Interviste', 'Testi SAL 75%25 Interviste', 'Testi SAL 100%25 Interviste', 'Testi SAL 101%25 Interviste', 'Template:Totale testi interviste'],
		# Letteratura giuridica
	['Testi SAL 25%25 Letteratura giuridica', 'Testi SAL 50%25 Letteratura giuridica', 'Testi SAL 75%25 Letteratura giuridica', 'Testi SAL 100%25 Letteratura giuridica', 'Testi SAL 101%25 Letteratura giuridica', 'Template:Totale testi letteratura giuridica'],
		# Letteratura per ragazzi
	['Testi SAL 25%25 Letteratura per ragazzi', 'Testi SAL 50%25 Letteratura per ragazzi', 'Testi SAL 75%25 Letteratura per ragazzi', 'Testi SAL 100%25 Letteratura per ragazzi', 'Testi SAL 101%25 Letteratura per ragazzi', 'Template:Totale testi letteratura per ragazzi'],
		# Lettere
	['Testi SAL 25%25 Lettere', 'Testi SAL 50%25 Lettere', 'Testi SAL 75%25 Lettere', 'Testi SAL 100%25 Lettere', 'Testi SAL 101%25 Lettere', 'Template:Totale testi lettere'],
		# Novelle
	['Testi SAL 25%25 Novelle', 'Testi SAL 50%25 Novelle', 'Testi SAL 75%25 Novelle', 'Testi SAL 100%25 Novelle', 'Testi SAL 101%25 Novelle', 'Template:Totale testi novelle'],
		# Poemi
	['Testi SAL 25%25 Poemi', 'Testi SAL 50%25 Poemi', 'Testi SAL 75%25 Poemi', 'Testi SAL 100%25 Poemi', 'Testi SAL 101%25 Poemi', 'Template:Totale testi poemi'],
			# Poemi epici
	['Testi SAL 25%25 Poemi epici', 'Testi SAL 50%25 Poemi epici', 'Testi SAL 75%25 Poemi epici', 'Testi SAL 100%25 Poemi epici', 'Testi SAL 101%25 Poemi epici', 'Template:Totale testi poemi epici'],
		# Poesie
	['Testi SAL 25%25 Poesie', 'Testi SAL 50%25 Poesie', 'Testi SAL 75%25 Poesie', 'Testi SAL 100%25 Poesie', 'Testi SAL 101%25 Poesie', 'Template:Totale testi poesie'],
			# Raccolte di poesie
	['Testi SAL 25%25 Raccolte di poesie', 'Testi SAL 50%25 Raccolte di poesie', 'Testi SAL 75%25 Raccolte di poesie', 'Testi SAL 100%25 Raccolte di poesie', 'Testi SAL 101%25 Raccolte di poesie', 'Template:Totale testi raccolte di poesie'],
			# Canzoni
	['Testi SAL 25%25 Canzoni', 'Testi SAL 50%25 Canzoni', 'Testi SAL 75%25 Canzoni', 'Testi SAL 100%25 Canzoni', 'Testi SAL 101%25 Canzoni', 'Template:Totale testi canzoni'],
			# Capitoli
	['Testi SAL 25%25 Capitoli', 'Testi SAL 50%25 Capitoli', 'Testi SAL 75%25 Capitoli', 'Testi SAL 100%25 Capitoli', 'Testi SAL 101%25 Capitoli', 'Template:Totale testi capitoli'],
			# Elegie
	['Testi SAL 25%25 Elegie', 'Testi SAL 50%25 Elegie', 'Testi SAL 75%25 Elegie', 'Testi SAL 100%25 Elegie', 'Testi SAL 101%25 Elegie', 'Template:Totale testi elegie'],
			# Madrigali
	['Testi SAL 25%25 Madrigali', 'Testi SAL 50%25 Madrigali', 'Testi SAL 75%25 Madrigali', 'Testi SAL 100%25 Madrigali', 'Testi SAL 101%25 Madrigali', 'Template:Totale testi madrigali'],
			# Odi
	['Testi SAL 25%25 Odi', 'Testi SAL 50%25 Odi', 'Testi SAL 75%25 Odi', 'Testi SAL 100%25 Odi', 'Testi SAL 101%25 Odi', 'Template:Totale testi odi'],
			# Poesia satirica
	['Testi SAL 25%25 Poesia satirica', 'Testi SAL 50%25 Poesia satirica', 'Testi SAL 75%25 Poesia satirica', 'Testi SAL 100%25 Poesia satirica', 'Testi SAL 101%25 Poesia satirica', 'Template:Totale testi poesia satirica'],
			# Poesie dialettali
	['Testi SAL 25%25 Poesie dialettali', 'Testi SAL 50%25 Poesie dialettali', 'Testi SAL 75%25 Poesie dialettali', 'Testi SAL 100%25 Poesie dialettali', 'Testi SAL 101%25 Poesie dialettali', 'Template:Totale testi poesie dialettali'],
			# Sonetti
	['Testi SAL 25%25 Sonetti', 'Testi SAL 50%25 Sonetti', 'Testi SAL 75%25 Sonetti', 'Testi SAL 100%25 Sonetti', 'Testi SAL 101%25 Sonetti', 'Template:Totale testi sonetti'],
		# Romanzi
	['Testi SAL 25%25 Romanzi', 'Testi SAL 50%25 Romanzi', 'Testi SAL 75%25 Romanzi', 'Testi SAL 100%25 Romanzi', 'Testi SAL 101%25 Romanzi', 'Template:Totale testi romanzi'],
		# Saggi
	['Testi SAL 25%25 Saggi', 'Testi SAL 50%25 Saggi', 'Testi SAL 75%25 Saggi', 'Testi SAL 100%25 Saggi', 'Testi SAL 101%25 Saggi', 'Template:Totale testi saggi'],
		# Poesia satirica
	['Testi SAL 25%25 Poesia satirica', 'Testi SAL 50%25 Poesia satirica', 'Testi SAL 75%25 Poesia satirica', 'Testi SAL 100%25 Poesia satirica', 'Testi SAL 101%25 Poesia satirica', 'Template:Totale testi Poesia satirica'],
# Filosofia
	['Testi SAL 25%25 Filosofia', 'Testi SAL 50%25 Filosofia', 'Testi SAL 75%25 Filosofia', 'Testi SAL 100%25 Filosofia', 'Testi SAL 101%25 Filosofia', 'Template:Totale testi filosofia'],
# Scienze
	['Testi SAL 25%25 Scienze', 'Testi SAL 50%25 Scienze', 'Testi SAL 75%25 Scienze', 'Testi SAL 100%25 Scienze', 'Testi SAL 101%25 Scienze', 'Template:Totale testi scienze'],
	# Astronomia
	['Testi SAL 25%25 Astronomia', 'Testi SAL 50%25 Astronomia', 'Testi SAL 75%25 Astronomia', 'Testi SAL 100%25 Astronomia', 'Testi SAL 101%25 Astronomia', 'Template:Totale testi astronomia'],
	# Biologia
	['Testi SAL 25%25 Biologia', 'Testi SAL 50%25 Biologia', 'Testi SAL 75%25 Biologia', 'Testi SAL 100%25 Biologia', 'Testi SAL 101%25 Biologia', 'Template:Totale testi biologia'],
		# Paleontologia
	['Testi SAL 25%25 Paleontologia', 'Testi SAL 50%25 Paleontologia', 'Testi SAL 75%25 Paleontologia', 'Testi SAL 100%25 Paleontologia', 'Testi SAL 101%25 Paleontologia', 'Template:Totale testi paleontologia'],
		# Zoologia
	['Testi SAL 25%25 Zoologia', 'Testi SAL 50%25 Zoologia', 'Testi SAL 75%25 Zoologia', 'Testi SAL 100%25 Zoologia', 'Testi SAL 101%25 Zoologia', 'Template:Totale testi zoologia'],
			# Entomologia
	['Testi SAL 25%25 Entomologia', 'Testi SAL 50%25 Entomologia', 'Testi SAL 75%25 Entomologia', 'Testi SAL 100%25 Entomologia', 'Testi SAL 101%25 Entomologia', 'Template:Totale testi entomologia'],
	# Fisica
	['Testi SAL 25%25 Fisica', 'Testi SAL 50%25 Fisica', 'Testi SAL 75%25 Fisica', 'Testi SAL 100%25 Fisica', 'Testi SAL 101%25 Fisica', 'Template:Totale testi fisica'],
	# Geografia
	['Testi SAL 25%25 Geografia', 'Testi SAL 50%25 Geografia', 'Testi SAL 75%25 Geografia', 'Testi SAL 100%25 Geografia', 'Testi SAL 101%25 Geografia', 'Template:Totale testi geografia'],
	# Matematica
	['Testi SAL 25%25 Matematica', 'Testi SAL 50%25 Matematica', 'Testi SAL 75%25 Matematica', 'Testi SAL 100%25 Matematica', 'Testi SAL 101%25 Matematica', 'Template:Totale testi matematica'],
	# Meteorologia
	['Testi SAL 25%25 Meteorologia', 'Testi SAL 50%25 Meteorologia', 'Testi SAL 75%25 Meteorologia', 'Testi SAL 100%25 Meteorologia', 'Testi SAL 101%25 Meteorologia', 'Template:Totale testi meteorologia'],
	# Scienze naturali
	['Testi SAL 25%25 Scienze naturali', 'Testi SAL 50%25 Scienze naturali', 'Testi SAL 75%25 Scienze naturali', 'Testi SAL 100%25 Scienze naturali', 'Testi SAL 101%25 Scienze naturali', 'Template:Totale testi scienze naturali'],
# Società
	[u'Testi SAL 25%25 Società', u'Testi SAL 50%25 Società', u'Testi SAL 75%25 Società', u'Testi SAL 100%25 Società', u'Testi SAL 101%25 Società', u'Template:Totale testi società'],
	# Politica
	['Testi SAL 25%25 Politica', 'Testi SAL 50%25 Politica', 'Testi SAL 75%25 Politica', 'Testi SAL 100%25 Politica', 'Testi SAL 101%25 Politica', 'Template:Totale testi politica'],
	# Psicologia
	['Testi SAL 25%25 Psicologia', 'Testi SAL 50%25 Psicologia', 'Testi SAL 75%25 Psicologia', 'Testi SAL 100%25 Psicologia', 'Testi SAL 101%25 Psicologia', 'Template:Totale testi psicologia'],
	# Raggruppamenti sociali
	['Testi SAL 25%25 Raggruppamenti sociali', 'Testi SAL 50%25 Raggruppamenti sociali', 'Testi SAL 75%25 Raggruppamenti sociali', 'Testi SAL 100%25 Raggruppamenti sociali', 'Testi SAL 101%25 Raggruppamenti sociali', 'Template:Totale testi raggruppamenti sociali'],
	# Religione
	['Testi SAL 25%25 Religione', 'Testi SAL 50%25 Religione', 'Testi SAL 75%25 Religione', 'Testi SAL 100%25 Religione', 'Testi SAL 101%25 Religione', 'Template:Totale testi religione'],
		# Cristianesimo
	['Testi SAL 25%25 Cristianesimo', 'Testi SAL 50%25 Cristianesimo', 'Testi SAL 75%25 Cristianesimo', 'Testi SAL 100%25 Cristianesimo', 'Testi SAL 101%25 Cristianesimo', 'Template:Totale testi cristianesimo'],
		# Bibbie
	['Testi SAL 25%25 Bibbie', 'Testi SAL 50%25 Bibbie', 'Testi SAL 75%25 Bibbie', 'Testi SAL 100%25 Bibbie', 'Testi SAL 101%25 Bibbie', 'Template:Totale testi bibbie'],
	# Scienze sociali
	['Testi SAL 25%25 Scienze sociali', 'Testi SAL 50%25 Scienze sociali', 'Testi SAL 75%25 Scienze sociali', 'Testi SAL 100%25 Scienze sociali', 'Testi SAL 101%25 Scienze sociali', 'Template:Totale testi scienze sociali'],
		# Diritto
	['Testi SAL 25%25 Diritto', 'Testi SAL 50%25 Diritto', 'Testi SAL 75%25 Diritto', 'Testi SAL 100%25 Diritto', 'Testi SAL 101%25 Diritto', 'Template:Totale testi diritto'],
		# Economia
	['Testi SAL 25%25 Economia', 'Testi SAL 50%25 Economia', 'Testi SAL 75%25 Economia', 'Testi SAL 100%25 Economia', 'Testi SAL 101%25 Economia', 'Template:Totale testi economia'],
		# Educazione e formazione
	['Testi SAL 25%25 Educazione e formazione', 'Testi SAL 50%25 Educazione e formazione', 'Testi SAL 75%25 Educazione e formazione', 'Testi SAL 100%25 Educazione e formazione', 'Testi SAL 101%25 Educazione e formazione', 'Template:Totale testi educazione e formazione'],
			# Tesi universitarie
	['Testi SAL 25%25 Tesi universitarie', 'Testi SAL 50%25 Tesi universitarie', 'Testi SAL 75%25 Tesi universitarie', 'Testi SAL 100%25 Tesi universitarie', 'Testi SAL 101%25 Tesi universitarie', 'Template:Totale testi tesi universitarie'],
		# Scienze politiche
	['Testi SAL 25%25 Scienze politiche', 'Testi SAL 50%25 Scienze politiche', 'Testi SAL 75%25 Scienze politiche', 'Testi SAL 100%25 Scienze politiche', 'Testi SAL 101%25 Scienze politiche', 'Template:Totale testi scienze politiche'],
		# Storia
	['Testi SAL 25%25 Storia', 'Testi SAL 50%25 Storia', 'Testi SAL 75%25 Storia', 'Testi SAL 100%25 Storia', 'Testi SAL 101%25 Storia', 'Template:Totale testi storia'],
			# Discorsi storici
	['Testi SAL 25%25 Discorsi storici', 'Testi SAL 50%25 Discorsi storici', 'Testi SAL 75%25 Discorsi storici', 'Testi SAL 100%25 Discorsi storici', 'Testi SAL 101%25 Discorsi storici', 'Template:Totale testi discorsi storici'],
# Tecnologia e scienze applicate
	['Testi SAL 25%25 Tecnologia e scienze applicate', 'Testi SAL 50%25 Tecnologia e scienze applicate', 'Testi SAL 75%25 Tecnologia e scienze applicate', 'Testi SAL 100%25 Tecnologia e scienze applicate', 'Testi SAL 101%25 Tecnologia e scienze applicate', 'Template:Totale testi tecnologia e scienze applicate'],
	# Informatica
	['Testi SAL 25%25 Informatica', 'Testi SAL 50%25 Informatica', 'Testi SAL 75%25 Informatica', 'Testi SAL 100%25 Informatica', 'Testi SAL 101%25 Informatica', 'Template:Totale testi informatica'],
         ],
}
 
#*************** FINE: PARAMETRI PER PROGETTI  ***************
 
 
#
# (C) Rob W.W. Hooft, 2004
# (C) Daniel Herding, 2004
#
__version__ = '$Id: category.py 3998 2007-08-07 20:28:27Z wikipedian $'
#
# Distributed under the terms of the MIT license.
#
import pickle, bz2
import wikipedia, catlib
import datetime
 
 
class CategoryDatabase:
    '''
    This is a temporary knowledge base saving for each category the contained
    subcategories and articles, so that category pages do not need to
    be loaded over and over again
    '''
    def __init__(self, rebuild = False, filename = 'category.dump.bz2'):
        if rebuild:
            self.rebuild()
        else:
            try:
 
                f = bz2.BZ2File(filename, 'r')
                wikipedia.output(u'Reading dump from %s' % filename)
                databases = pickle.load(f)
                f.close()
                # keys are categories, values are 2-tuples with lists as entries.
                self.catContentDB = databases['catContentDB']
                # like the above, but for supercategories
                self.superclassDB = databases['superclassDB']
                del databases
            except:
                # If something goes wrong, just rebuild the database
                self.rebuild()
 
    def rebuild(self):
        self.catContentDB={}
        self.superclassDB={}
 
    def getSubcats(self, supercat):
        '''
        For a given supercategory, return a list of Categorys for all its
        subcategories.
        Saves this list in a temporary database so that it won't be loaded from the
        server next time it's required.
        '''
        # if we already know which subcategories exist here
        if self.catContentDB.has_key(supercat):
            return self.catContentDB[supercat][0]
        else:
            subcatlist = supercat.subcategoriesList()
            articlelist = supercat.articlesList()
            # add to dictionary
            self.catContentDB[supercat] = (subcatlist, articlelist)
            return subcatlist
 
    def getArticles(self, cat):
        '''
        For a given category, return a list of Pages for all its articles.
        Saves this list in a temporary database so that it won't be loaded from the
        server next time it's required.
        '''
        # if we already know which articles exist here
        if self.catContentDB.has_key(cat):
            return self.catContentDB[cat][1]
        else:
            subcatlist = cat.subcategoriesList()
            articlelist = cat.articlesList()
            # add to dictionary
            self.catContentDB[cat] = (subcatlist, articlelist)
            return articlelist
 
    def getSupercats(self, subcat):
        # if we already know which subcategories exist here
        if self.superclassDB.has_key(subcat):
            return self.superclassDB[subcat]
        else:
            supercatlist = subcat.supercategoriesList()
            # add to dictionary
            self.superclassDB[subcat] = supercatlist
            return supercatlist
 
    def dump(self, filename = 'category.dump.bz2'):
        '''
        Saves the contents of the dictionaries superclassDB and catContentDB to disk.
        '''
        wikipedia.output(u'Dumping to %s, please wait...' % filename)
        f = bz2.BZ2File(filename, 'w')
        databases = {
            'catContentDB': self.catContentDB,
            'superclassDB': self.superclassDB
        }
        # store dump to disk in binary format
        try:
            pickle.dump(databases, f, protocol=pickle.HIGHEST_PROTOCOL)
        except pickle.PicklingError:
            pass
        f.close()
 
class CreateTableRobot:
    '''
    Creates a table.
    '''
    table_msg={
        'en':u'Updating number of elements (%d)',
        'it':u'Aggiornamento conteggio (%d)',
    }
 
    def __init__(self, infoPagine, editSummary, overwrite = True, subCats = False, talkPages = False):
        catTitle1, catTitle2, catTitle3, catTitle4, catTitle5, listTitle = infoPagine
        self.editSummary = editSummary
        self.overwrite = overwrite
        self.catName1 = catTitle1
        self.catName2 = catTitle2
        self.catName3 = catTitle3
        self.catName4 = catTitle4
        self.catName5 = catTitle5
        self.cat1 = catlib.Category(wikipedia.getSite(), 'Category:' + catTitle1)
        self.cat2 = catlib.Category(wikipedia.getSite(), 'Category:' + catTitle2)
        self.cat3 = catlib.Category(wikipedia.getSite(), 'Category:' + catTitle3)
        self.cat4 = catlib.Category(wikipedia.getSite(), 'Category:' + catTitle4)
        self.cat5 = catlib.Category(wikipedia.getSite(), 'Category:' + catTitle5)
        self.list = wikipedia.Page(wikipedia.getSite(), listTitle)
        self.subCats = subCats
        self.talkPages = talkPages
 
    def run(self):
        nomeCat1 = self.catName1
        nomeCat2 = self.catName2
        nomeCat3 = self.catName3
        nomeCat4 = self.catName4
        nomeCat5 = self.catName5
        listOfArticles1 = self.cat1.articlesList()
        listOfArticles2 = self.cat2.articlesList()
        listOfArticles3 = self.cat3.articlesList()
        listOfArticles4 = self.cat4.articlesList()
        listOfArticles5 = self.cat5.articlesList()
        totale1 = len(listOfArticles1)
        totale2 = len(listOfArticles2)
        totale3 = len(listOfArticles3)
        totale4 = len(listOfArticles4)
        totale5 = len(listOfArticles5)
        totaleTotale = totale1 + totale2 + totale3 + totale4 + totale5
 
        if self.editSummary:
            wikipedia.setAction(self.editSummary)
        else:
            wikipedia.setAction(wikipedia.translate(wikipedia.getSite(), self.table_msg) % (totaleTotale))
 
        paginaTemplate = \
                u"""*TOTALE*"""
        if self.list.exists() and not self.overwrite:
            wikipedia.output(u'Page %s already exists, aborting.' % self.list.title())
        else:
            listString = "%d" % (totaleTotale)
            pagina = paginaTemplate.replace("*TOTALE*", listString)
            self.list.put(pagina)
 
def listaProgetti():
    """Visualizza la lista dei parametri conosciuti dal bot"""
 
    print "\n\nDi seguito sono elencati i parametri da aggiungere per generare i conteggi:\n"
    for progetto in sorted(parametri.keys()):
            print "   " + progetto
    print "\nPer generare le statistiche usare la forma \"python ConteggioTesti.py PARAMETRO\"\n"
 
def helpExit(avviso = ""):
        wikipedia.output("** " + avviso + " **")
        #wikipedia.showHelp('gestione_elenchi_SAL')
        print __doc__
        import sys
        sys.exit(1)
 
if __name__ == "__main__":
    editSummary = ''
    overwrite = True
    talkPages = False
 
    try:
        catDB = CategoryDatabase()
        action = None
        restore = False
        for arg in wikipedia.handleArgs():
            if arg in parametri:
                action = arg
            elif arg == 'listaProgetti':
                listaProgetti()
                import sys
                sys.exit()
            elif arg.startswith('-summary:'):
                editSummary = arg[len('-summary:'):]
            else:
                helpExit("Non conosco il parametro " + arg)
        if action is None:
                helpExit(u"Non c'è il parametro")
 
        bots = []
        numero = len(parametri[action])
        for i in range(0, numero):
            bots.append(CreateTableRobot(parametri[action][i], editSummary, overwrite, subCats = False, talkPages = False))
        for i in range(0, numero):
            bots[i].run()
 
    finally:
        catDB.dump()
[visualizza] [modifica] Documentazione


Descrizione

Aggiorna i template con il numero di testi pubblicati. Questi template possono essere inseriti nelle pagine di servizio per conoscere esattamente il numero di testi per ogni argomento.

Quando usarlo

Il programma viene lanciato ogni notte in modo automatico.

Può essere lanciato all'occorrenza quando si è certi che siano stati aggiunti/rimossi dei testi.

Nome del file

ConteggioTesti.py

Comando

python ConteggioTesti.py totale

Autore

iPork