#!/usr/bin/python
# -*- coding: utf-8 -*-
import pywikibot as wikipedia, re
from pywikibot import pagegenerators
import catlib
site = wikipedia.getSite("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, title=catname)
if cat.isEmptyCategory():
return False
if not cat.exists():
#print u'creo categoria: ' + catname + '_______' + testo
cat.put(testo, comment=u'Bot - CategorieAutoriPer.py: 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 - CategorieAutoriPer.py (manual mode): 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(site,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()