Utente:CandalBot/aaa elenco.py

Da Wikisource.
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wikipedia, re, pagegenerators, catlib

site = "it"
auto = True

def maiusc(stringa):
        return stringa[0].capitalize() + stringa[1:]

def cong(secolo):
        if secolo == u'Antichità':
                return u" dell'"
        return u' del '

def crea(catname, testo):
        cat = catlib.Category(site=site, title=catname)
        if cat.isEmptyCategory():
                return False
        if not cat.exists():
                #print u'creo categoria: ' + catname + '_______' + testo
                cat.put(testo, comment=u'Bot: creo categoria')
        else:
                if not auto:
                        testoPre = cat.get()
                        if testoPre != testo:
                                wikipedia.showDiff(testoPre, testo)
                                choice = wikipedia.inputChoice(u'Do you want to accept these changes?', ['Yes', 'No'], ['y', 'N'], 'y')
                                if choice == 'y':
                                        cat.put(testo, comment=u'Bot: aggiorno categoria')
        return True


def main():

        #attivita'
        templateAttivita = wikipedia.Page(site,u"Template:Autore/PluraleAttività").get()
        attivita = templateAttivita.split('=')
        del attivita[0]
        for index, a in enumerate(attivita):
                attivita[index] = a[0:a.find('\n')].strip()

        #nazionalita'
        templateNazionalita = wikipedia.Page("it",u"Template:Autore/PluraleNazionalità").get()
        nazionalita = templateNazionalita.split('=')
        del nazionalita[0]
        for index, a in enumerate(nazionalita):
                nazionalita[index] = a[0:a.find('\n')].strip()

        #secoli
        secoli = ["XXI secolo", "XX secolo", "XIX secolo", "XVIII secolo", "XVII secolo", "XVI secolo",
"XV secolo", "XIV secolo", "XIII secolo", "XII secolo", "XI secolo",
"X secolo", "IX secolo", "VIII secolo", "VII secolo", "VI secolo",
"V secolo", "IV secolo", "III secolo", "II secolo", "I secolo",
"I secolo a.C.", "II secolo a.C.", "III secolo a.C.", "IV secolo a.C.", "V secolo a.C.",
"VI secolo a.C.", "VII secolo a.C.", "VIII secolo a.C.", u"Antichità"]


        #creo le categorie

        for a in attivita:
                if crea(maiusc(a), u'[[Categoria:Autori per attività]]'):

                        for index, s in enumerate(secoli):
                                ord = 31 - index
                                testo  =   u'[[Categoria:Autori' + cong(s) + s + u' per attività|' + maiusc(a) + u']]'
                                testo += u'\n[[Categoria:' + maiusc(a) + u' per periodo storico| ' + format(ord, '02') + u']]'
                                crea(maiusc(a) + cong(s) + s, testo)

                        crea(maiusc(a) + u' per periodo storico', u'[[Categoria:' + maiusc(a) + u'| ]]')
                        crea(maiusc(a) + u' per nazionalità', u'[[Categoria:' + maiusc(a) + u'| ]]')

        for n in nazionalita:
                if crea(u'Autori ' + n, u'[[Categoria:Autori per nazionalità|' + maiusc(n) + ']]'):

                        for index, s in enumerate(secoli):
                                ord = 31 - index
                                testo  =   u'[[Categoria:Autori' + cong(s) + s + u' per nazionalità|' + maiusc(n) + u']]'
                                testo += u'\n[[Categoria:Autori ' + n + u' per periodo storico| ' + format(ord, '02') + u']]'
                                crea(u'Autori ' + n + cong(s) + s, testo)

                        for a in attivita:
                                testo  =   u'[[Categoria:' + maiusc(a) + u' per nazionalità|' + maiusc(n) + u']]'
                                testo += u'\n[[Categoria:Autori ' + n + u' per attività|' + maiusc(a) + ']]'
                                crea(maiusc(a) + u' ' + n, testo)

                        crea(u'Autori ' + n + u' per attività', u'[[Categoria:Autori ' + n + u'| ]]')
                        crea(u'Autori ' + n + u' per periodo storico', u'[[Categoria:Autori ' + n + u'| ]]')


        for s in secoli:
                crea(u'Autori' + cong(s) + s + u' per nazionalità', u'[[Categoria:' + u'Autori' + cong(s) + s + u'| ]]')
                crea(u'Autori' + cong(s) + s + u' per attività', u'[[Categoria:' + u'Autori' + cong(s) + s + u'| ]]')

if __name__ == "__main__":
        try:
                main()
        finally:
                wikipedia.stopme()