#!/usr/bin/python
# -*- coding: utf-8 -*-
import pywikibot as wikipedia, re
from pywikibot import pagegenerators
from scripts import touch
import catlib, string, random
sito=wikipedia.getSite("it")
def crea(catname, catsopra, nomecognome, cognomenome):
cat = catlib.Category(sito, title=catname)
if not cat.isEmptyCategory() and not cat.exists():
cat.put(u"{{Vedi anche autore|"+nomecognome+"}}\n\n[[Categoria:"+catsopra+"|"+cognomenome+"]]", "Bot - CategorieAutori.py: creazione categoria")
return True
return False
def esegui(gen, titoloPrefix):
for page in gen:
titolo = page.title()
titolo = titolo.replace(titoloPrefix, "")
testo = page.get()
m = re.search("<section begin=\"Nome\"/>(.*?)<section end=\"Nome\"/>", testo)
if m:
nome = m.group(1)
else:
nome = ""
m = re.search("<section begin=\"Cognome\"/>(.*?)<section end=\"Cognome\"/>", testo)
if m:
cognome = m.group(1)
else:
cognome = nome
nome = ""
if nome != "":
cognomenome = cognome + ", " + nome
nomecognome = nome+" "+cognome
else:
cognomenome = cognome
nomecognome = cognome
m = re.search("<section begin=\"Disambigua\"/>(.*?)<section end=\"Disambigua\"/>", testo)
if m:
nomecognome = nomecognome + " " + m.group(1)
creata = crea(u"Testi di "+titolo, "Testi per autore", nomecognome, cognomenome)
creata = creata or crea(u"Testi curati da "+titolo, "Testi per curatore", nomecognome, cognomenome)
creata = creata or crea(u"Testi musicati da "+titolo, "Testi per compositore", nomecognome, cognomenome)
creata = creata or crea(u"Traduzioni di "+titolo, "Testi per traduttore", nomecognome, cognomenome)
creata = creata or crea(u"Testi in cui è citato "+titolo, "Testi per autore citato", nomecognome, cognomenome)
creata = creata or crea(u"Pagine in cui è citato "+titolo, "Pagine per autore citato", nomecognome, cognomenome)
creata = creata or crea(u"Libri curati da "+titolo, "Libri per curatore", nomecognome, cognomenome)
creata = creata or crea(u"Libri di "+titolo, "Libri per autore", nomecognome, cognomenome)
creata = creata or crea(u"Opere di "+titolo, "Opere per autore", nomecognome, cognomenome)
#touch della pagina per forzare il refresh delle categorie
if creata:
page.put(testo, "Pywikibot touch script")
def main():
#inizia da un punto casuale
begin = 'A'
if random.random() < 0.5:
begin = random.choice(string.ascii_lowercase) + random.choice(string.ascii_lowercase);
gen = pagegenerators.AllpagesPageGenerator(begin, namespace=102, includeredirects=False, site=sito)
gen = pagegenerators.PreloadingGenerator(gen)
esegui(gen, "Autore:")
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()