Utente:YuBot/Script: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 2:
== monitoraggio.py ==
<source lang="python">
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import fileinput, os, time, stat, re
import wikipedia, pagegenerators, catlib
#########################################################################
# #
# monitoraggio.py - ver 3.5 - basato su pywikipedia #
# #
#########################################################################
"""
Questo è un bot che gestisce l'aggiornamento del monitoraggio voci sulla Wikipedia italiana.
"""
def listeParametro(valore):
"""
Trova le discussioni che contengono un determinato template di valutazione
"""
pagine=[]
#Cerca le voci per ogni parametro
gen = pagegenerators.ReferringPageGenerator(template)
count=0
for page in gen:
if page.namespace() == 1:
count=count+1
titolo=page.titleWithoutNamespace()
titolo = titolo.encode('utf-8')
pagine.append(titolo)
pagine.sort()
return pagine
def listeMonitoraggioProgetto(progetto):
"""
Trova le voci monitorate di un singolo progetto
"""
lettera ='!'
categoryname = (u'Voci monitorate Progetto '+progetto)
cat = catlib.Category('it', 'Categoria:%s' % categoryname)
gen = pagegenerators.CategorizedPageGenerator(cat, recurse = False, start=lettera)
count=0
pagine=[]
for page in gen:
if page.namespace() == 1:
count=count+1
titolo=page.titleWithoutNamespace()
titolo = titolo.encode('utf8')
voci.append(titolo)
if count == 0:
print 'non ci sono voci monitorate per questo progetto'
else:
print 'voci monitorate:' + str(count)
voci.sort()
return voci
def progettiMonitoraggio():
"""
Ottiene l'elenco dei progetti in cui è attivo il monitoraggio voci
"""
titoliprogetti=[]
categoria=catlib.Category('it', 'Categoria:Voci monitorate per progetto')
categorie = categoria.subcategoriesList()
for categoria in categorie:
titolo=categoria.aslink()
titolo=titolo.encode('utf-8')
titolo=titolo.replace('[[Categoria:Voci monitorate Progetto ', '')
titolo=titolo.replace(']]', '')
titoliprogetti.append(titolo)
titoliprogetti.sort()
return titoliprogetti
def aggiorna_riepilogo(param, lista):
#Aggiorna la tabella di riepilogo generale, modificando ogni specifica pagina-dati
number=len(lista)
cifra=str(number)
commriep='Monitoraggio voci: aggiorno i dati del riepilogo generale'
paginadati=wikipedia.Page('it', 'Progetto:Qualit%C3%A0/Monitoraggio_voci/Tabella/'+param)
paginadati.put(cifra, comment=commriep)
paginadati=''
def main():
# definisco e carico le liste, una per parametro
accuratezza_a=listeParametro('Accuratezza-a')
accuratezza_b=listeParametro('Accuratezza-b')
accuratezza_c=listeParametro('Accuratezza-c')
accuratezza_d=listeParametro('Accuratezza-d')
scrittura_a=listeParametro('Scrittura-a')
scrittura_b=listeParametro('Scrittura-b')
scrittura_c=listeParametro('Scrittura-c')
scrittura_d=listeParametro('Scrittura-d')
fonti_a=listeParametro('Fonti-a')
fonti_b=listeParametro('Fonti-b')
fonti_c=listeParametro('Fonti-c')
fonti_d=listeParametro('Fonti-d')
immagini_a=listeParametro('Immagini-a')
immagini_b=listeParametro('Immagini-b')
immagini_c=listeParametro('Immagini-c')
immagini_d=listeParametro('Immagini-d')
accuratezza_nc=listeParametro('Accuratezza-nc')
scrittura_nc=listeParametro('Scrittura-nc')
fonti_nc=listeParametro('Fonti-nc')
immagini_nc=listeParametro('Immagini-nc')
parametri = { 'acc-A': accuratezza_a,
'acc-B': accuratezza_b,
'acc-C': accuratezza_c,
'acc-D': accuratezza_d,
'acc-NC': accuratezza_nc,
'scr-A': scrittura_a,
'scr-B': scrittura_b,
'scr-C': scrittura_c,
'scr-D': scrittura_d,
'scr-NC': scrittura_nc,
'fon-A': fonti_a,
'fon-B': fonti_b,
'fon-C': fonti_c,
'fon-D': fonti_d,
'fon-NC': fonti_nc,
'imm-A': immagini_a,
'imm-B': immagini_b,
'imm-C': immagini_c,
'imm-D': immagini_d,
'imm-NC': immagini_nc,
}
### definizione altre liste, serviranno in seguito ##
acca = []
accb = []
accc = []
accd = []
fona = []
fonb = []
fonc = []
fond = []
imma = []
immb = []
immc = []
immd = []
scra = []
scrb = []
scrc = []
scrd = []
accnc = []
scrnc = []
immnc = []
fonnc = []
###### AGGIORNO IL RIEPILOGO ######
for p in parametri.keys():
aggiorna_riepilogo(p, parametri[p])
####################################
progetti = progettiMonitoraggio()
for progetto in progetti:
progetto=progetto.decode('utf-8')
## carico le liste di voci monitorate dal progetto ##
voci = listeMonitoraggioProgetto(progetto)
acca = [val for val in voci if val in accuratezza_a]
accb = [val for val in voci if val in accuratezza_b]
accc = [val for val in voci if val in accuratezza_c]
accd = [val for val in voci if val in accuratezza_d]
accnc = [val for val in voci if val in accuratezza_nc]
scra = [val for val in voci if val in scrittura_a]
scrb = [val for val in voci if val in scrittura_b]
scrc = [val for val in voci if val in scrittura_c]
scrd = [val for val in voci if val in scrittura_d]
scrnc = [val for val in voci if val in scrittura_nc]
fona = [val for val in voci if val in fonti_a]
fonb = [val for val in voci if val in fonti_b]
fonc = [val for val in voci if val in fonti_c]
fond = [val for val in voci if val in fonti_d]
fonnc = [val for val in voci if val in fonti_nc]
imma = [val for val in voci if val in immagini_a]
immb = [val for val in voci if val in immagini_b]
immc = [val for val in voci if val in immagini_c]
immd = [val for val in voci if val in immagini_d]
immnc = [val for val in voci if val in immagini_nc]
### conto gli elementi nelle liste ##
numeroaccuratezzaa = str(len(acca))
numeroaccuratezzab = str(len(accb))
numeroaccuratezzac = str(len(accc))
numeroaccuratezzad = str(len(accd))
numeroaccuratezzanc = str(len(accnc))
numeroscritturaa = str(len(scra))
numeroscritturab = str(len(scrb))
numeroscritturac = str(len(scrc))
numeroscritturad = str(len(scrd))
numeroscritturanc = str(len(scrnc))
numeroimmaginia = str(len(imma))
numeroimmaginib = str(len(immb))
numeroimmaginic = str(len(immc))
numeroimmaginid = str(len(immd))
numeroimmagininc = str(len(immnc))
numerofontia = str(len(fona))
numerofontib = str(len(fonb))
numerofontic = str(len(fonc))
numerofontid = str(len(fond))
numerofontinc = str(len(fonnc))
#####vado ad aggiornare la tabella del progetto#####
Progetto = wikipedia.Page('it', 'Progetto:%s' % progetto)
NomeProgetto=Progetto.titleWithoutNamespace()
tabella=wikipedia.Page('it', 'Progetto:'+NomeProgetto+ '/Monitoraggio voci/Tabella monitoraggio automatico')
## Testo della tabella, con tutte le variabili
incipit=u'<noinclude>{{AvvisoTabella|' + NomeProgetto + '}}</noinclude>'
tabellaprog='\n{{Tabella monitoraggio\n|progetto=' + NomeProgetto + '\n|data={{Utente:YuBot/Monitoraggio/data}}'
tabellaacc='\n|Acc-a='+numeroaccuratezzaa+'\n|Acc-b='+numeroaccuratezzab+'\n|Acc-c='+numeroaccuratezzac+'\n|Acc-d='+numeroaccuratezzad+'\n|Acc-nc='+numeroaccuratezzanc
tabellascr='\n|Scr-a='+numeroscritturaa+'\n|Scr-b='+numeroscritturab+'\n|Scr-c='+numeroscritturac+'\n|Scr-d='+numeroscritturad+'\n|Scr-nc='+numeroscritturanc
tabellafon='\n|Fon-a='+numerofontia+'\n|Fon-b='+numerofontib+'\n|Fon-c='+numerofontic+'\n|Fon-d='+numerofontid+'\n|Fon-nc='+numerofontinc
tabellaimm='\n|Imm-a='+numeroimmaginia+'\n|Imm-b='+numeroimmaginib+'\n|Imm-c='+numeroimmaginic+'\n|Imm-d='+numeroimmaginid+'\n|Imm-nc='+numeroimmagininc+'\n}}'
footer=u'<noinclude>[[Categoria:Tabelle di monitoraggio|' + NomeProgetto + ']]</noinclude>\n<!-- Il codice qui sotto serve alla disorfanizzazione delle categorie necessarie al monitoraggio. Si prega di non rimuovere. -->\n<noinclude>[[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_accuratezza_a| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_accuratezza_b| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_accuratezza_c| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_accuratezza_d| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_accuratezza_nc| !]]\n[[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_scrittura_a| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_scrittura_b| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_scrittura_c| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_scrittura_d| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_scrittura_nc| !]]\n[[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_fonti_a| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_fonti_b| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_fonti_c| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_fonti_d| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_fonti_nc| !]]\n[[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_immagini_a| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_immagini_b| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_immagini_c| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_immagini_d| !]] [[Categoria:Progetto:' + NomeProgetto + '/Tabella_monitoraggio_automatico_-_immagini_nc| !]]</noinclude>'
testo=incipit+tabellaprog+tabellaacc+tabellascr+tabellafon+tabellaimm+footer
commento='Bot:Aggiorno la tabella'
if tabella.exists():
tabella.put(testo, comment=commento)
progetto=progetto.encode('utf-8')
print 'Tabella del Progetto %s aggiornata.' % progetto
#aggiorno la data#
commend='Aggiornamento monitoraggio in data odierna'
paginadati=wikipedia.Page('it', 'Utente:YuBot/Monitoraggio/data')
data='{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}'
paginadati.put(data, comment=commend)
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</source>
== manutenzioni.py ==
<source lang="python">
|