# -*- coding: utf-8 -*-
import config, wikipedia, catlib, pagegenerators
import time
#Categoria, nome utente e data (vedi più giù) devono essere inserite nello script prima di farlo girare#
def main():
#categoria su cui lavorare:#
categoryname = u'Voci monitorate - non compilate'
cat = catlib.Category(wikipedia.getSite(), 'Categoria:%s' % categoryname)
gen1 = pagegenerators.CategorizedPageGenerator(cat, start="Discussione:Af")
for discussione in gen1:
titolodiscussione=discussione.title()
titolovoce=discussione.titleWithoutNamespace()
voce=wikipedia.Page("it", titolovoce)
if voce.exists():
try:
testodiscussione=discussione.get()
testovoce=voce.get()
except wikipedia.IsRedirectPage:
continue
wikipedia.output(titolovoce)
wikipedia.output(titolodiscussione)
else:
print "non esiste la voce ", titolovoce
continue
rx1 = re.compile(r"== ?[Nn]ote ?==")
rx2 = re.compile(r"== ?[Bb]ibliografia ?==")
ricerca1 = re.search(rx1, testovoce)
ricerca2 = re.search(rx2, testovoce)
#cerco note utente e data nella discussione
rx3 = re.compile(r"(note ?= ?.*)\}?")
rx4 = re.compile(r"(data ?= ?.*)(\}?\}?)")
rx5 = re.compile(r"(utente ?= ?.*)\}?")
ricerca3 = re.search(rx3, testodiscussione)
ricerca4 = re.search(rx4, testodiscussione)
ricerca5 = re.search(rx5, testodiscussione)
if ricerca3 and ricerca4 and ricerca5:
stringanote=ricerca3.group(1)
stringadata=ricerca4.group(1)
stringautente=ricerca5.group(1)
#DATA E UTENTE DA INSERIRE PRIMA DI FAR GIRARE LO SCRIPT#
nuovastringadata = "data= MESE ANNO"
nuovastringautente = "utente= UTENTE"
else:
continue
cx1 = re.compile(r"< ?ref ?.*>.*</ ?ref ?>")
controllo1 = re.search(cx1, testovoce)
cx2 = re.compile(r"< ?references ?/>")
controllo2 = re.search(cx2, testovoce)
cx3 = re.compile(r"\{\{[Rr]eferences")
controllo3 = re.search(cx3, testovoce)
note=""
nb =""
if controllo1:
if controllo2 or controllo3:
if ricerca1:
note="SI"
nb =""
else:
note="SI"
nb= " - manca sezione note corretta"
bib=""
if ricerca2:
bib="SI"
if not bib and not note:
print "biblio e note assenti"
fonti=re.compile(r"fonti ?= ?.*")
rxfonti=re.search(fonti, testodiscussione)
stringa=rxfonti.group(0)
nuovastringa="fonti= x"
nuovastringanote="note= Mancano note e bibliografia"
azione='bot: segnalo assenza di note e bibliografia'
elif not bib and note:
print "biblio assente"
fonti=re.compile(r"fonti ?= ?.*")
rxfonti=re.search(fonti, testodiscussione)
stringa=rxfonti.group(0)
nuovastringa="fonti= d"
nuovastringanote="note= Manca una [[Aiuto:Bibliografia|bibliografia]]"
azione='bot: segnalo assenza di bibliografia'
elif bib and not note:
print "note assenti"
fonti=re.compile(r"fonti ?= ?.*")
rxfonti=re.search(fonti, testodiscussione)
stringa=rxfonti.group(0)
nuovastringa="fonti= d"
nuovastringanote="note= Mancano [[Aiuto:Note|note]] e riferimenti puntuali"
azione='bot: segnalo assenza di note'
else:
continue
newtext=testodiscussione.replace(stringa, nuovastringa, 1)
newtext=newtext.replace(stringadata, nuovastringadata, 1)
newtext=newtext.replace(stringautente, nuovastringautente, 1)
newtext=newtext.replace(stringanote, nuovastringanote, 1)
wikipedia.showDiff(testodiscussione, newtext)
choice = wikipedia.inputChoice(u"Premi invio per confermare", "", "")
wikipedia.setAction(azione)
discussione.put(newtext)
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()