Utente:YuBot/Script: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
Riga 1:
== monitoraggio.py ==
== manutenzioni.py ==
<source lang="python">
# -*- coding: utf-8 -*-
######################################################################
# manutenzione.py ver. 2.0 #
# Bot per le statistiche del lavoro sporco #
# basato su lavorosporco.py e statistichemanutenzioni.py di Pietrodn.#
######################################################################
"""
Bot che gestisce l'aggiornamento delle statistiche manutenzioni
sulla Wikipedia italiana.
Parametri:
-riepilogo aggiorna il riepilogo generale
-progetti aggiorna i dati per tutti i progetti
-progetto aggiorna i dati per un singolo progetto (indicare quale)
-auto non chiede prima di modificare le tabelle
"""
import wikipedia, pagegenerators, catlib
import os, re
templates = { 'A': 'Aiutare',
'C': 'Controllare',
'Categorizzare': 'Categorizzare',
'Controlcopy': 'Controlcopy',
'E': 'Ency',
'O': 'Orfane',
'P': 'NPOV',
'F': 'Senza fonti',
'S': 'Stub',
'T': 'Tradurre',
'U': 'Unire',
'W': 'Wikificare',
'Tmp': 'Templatizzare'
}
def projects():
"""
Cerca i progetti in cui sono presenti le statistiche manutenzioni.
"""
progetti=[]
lettera=''
categoryname = (u'Statistiche manutenzioni')
cat = catlib.Category('it', 'Categoria:%s' % categoryname)
gen = pagegenerators.CategorizedPageGenerator(cat, recurse = False, start=lettera)
for pagina in gen:
titolo=pagina.title()
titolo=titolo.encode('utf-8')
titolo=titolo.replace('Progetto:', '')
titolo=titolo.replace('/Statistiche manutenzioni', '')
progetti.append(titolo)
progetti.remove('Coordinamento')
return progetti
def listaVoci(categoryname):
"""
Crea la lista delle voci contenute in una categoria
"""
cat = catlib.Category('it', 'Categoria:%s' % categoryname)
if cat.exists() == False:
cat = catlib.Category('it', 'Categoria:%s' % categoryname.lower())
listavoci = cat.articlesList(recurse = 1)
return listavoci
def main():
# Imposto tutti parametri come falsi
singleproject=False
allprojects=False
riepilogo=False
auto=False
# Leggo i parametri inseriti da linea di comando
for arg in wikipedia.handleArgs():
if arg == '-auto':
auto = True
elif arg == '-riepilogo':
riepilogo = True
elif arg == '-progetti':
allprojects = True
elif arg == '-auto':
auto = True
elif arg.startswith('-progetto'):
singleproject = True
if len(arg) == 9:
progetto = wikipedia.input(u'Inserisci il nome del progetto:')
else:
progetto = arg[10:]
if progetto.startswith('Progetto:'):
progetto = arg[19:]
# Se non ci sono parametri, mostro docstring
if str(wikipedia.handleArgs()) == '[]':
print __doc__
# RIEPILOGO MANUTENZIONI
if riepilogo == True:
from templatecount import TemplateCountRobot
counter = TemplateCountRobot()
pagina = wikipedia.Page('it', 'Progetto:Coordinamento/Statistiche manutenzioni')
vecchieStatistiche = pagina.get()
templateCountDict = counter.countTemplates(templates.keys(), None)
for k in templateCountDict:
sottopagina = wikipedia.Page(wikiSite, 'Progetto:Coordinamento/Statistiche manutenzioni/' + templates[k])
oldtxt = sottopagina.get()
newtxt = re.sub("</noinclude>.*", "</noinclude>" + str(templateCountDict[k]), oldtxt)
if auto == True:
if sottopagina.exists():
wikipedia.setAction(u'Bot: Conto lavoro sporco')
sottopagina.put(newtxt)
else:
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Bot:Conto lavoro sporco')
sottopagina.put(newtxt)
findRegexp = "\d+:\d+, \d+ .{3} \d+ \(.*?\)"
replaceRegexp = "~~~~~"
nuoveStatistiche = re.sub(findRegexp, replaceRegexp, vecchieStatistiche)
if auto == True:
wikipedia.showDiff(vecchieStatistiche, nuoveStatistiche)
choice = wikipedia.inputChoice(u"Aggiorno le date?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Aggiorno le date del conto')
pagina.put(nuoveStatistiche)
else:
if pagina.exists():
wikipedia.setAction(u'Bot: Aggiorno le date del conto')
pagina.put(nuoveStatistiche)
# STATISTICHE MANUTENZIONI IN TUTTI I PROGETTI
if allprojects == True:
progetti = projects()
for progetto in progetti:
categories = { u'Da controllare per copyright - ' + progetto: 'Controlcopy',
u'Da verificare per enciclopedicità - ' + progetto: 'Ency',
u'Da aiutare ' + progetto: 'Aiutare',
u'Pagine orfane - ' + progetto: 'Orfane',
u'Da controllare ' + progetto: 'Controllare',
u'Segnalazioni NPOV ' + progetto: 'NPOV',
u'Voci mancanti di fonti - ' + progetto: 'Senza fonti',
u'Stub ' + progetto: 'Stub',
u'Da tradurre - ' + progetto: 'Tradurre',
u'Da unire - ' + progetto: 'Unire',
u'Da wikificare ' + progetto: 'Wikificare',
}
pagina = wikipedia.Page('it', 'Progetto:'+progetto+'/Statistiche manutenzioni')
vecchieStatistiche = pagina.get()
for k in categories:
listavoci=listaVoci(k)
categoryCount = len(listavoci)
sottopagina = wikipedia.Page('it', 'Progetto:'+progetto+'/Statistiche manutenzioni/' + categories[k])
oldtxt = sottopagina.get()
newtxt = str(categoryCount)
if auto == True:
if sottopagina.exists():
wikipedia.setAction(u'Bot: Aggiorno statistiche manutenzioni del progetto %s' % progetto)
sottopagina.put(newtxt)
else:
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Bot: Aggiorno statistiche del progetto %s' % progetto)
sottopagina.put(newtxt)
# STATISTICHE MANUTENZIONI IN UN SINGOLO PROGETTO
if singleproject == True:
categories = { u'Da controllare per copyright - ' + progetto: 'Controlcopy',
u'Da verificare per enciclopedicità - ' + progetto: 'Ency',
u'Da aiutare ' + progetto: 'Aiutare',
u'Pagine orfane - ' + progetto: 'Orfane',
u'Da controllare ' + progetto: 'Controllare',
u'Segnalazioni NPOV ' + progetto: 'NPOV',
u'Voci mancanti di fonti - ' + progetto: 'Senza fonti',
u'Stub ' + progetto: 'Stub',
u'Da tradurre - ' + progetto: 'Tradurre',
u'Da unire - ' + progetto: 'Unire',
u'Da wikificare ' + progetto: 'Wikificare',
}
pagina = wikipedia.Page('it', 'Progetto:'+progetto+'/Statistiche manutenzioni')
vecchieStatistiche = pagina.get()
for k in categories:
listavoci=listaVoci(k)
categoryCount = len(listavoci)
sottopagina = wikipedia.Page('it', 'Progetto:'+progetto+'/Statistiche manutenzioni/' + categories[k])
oldtxt = sottopagina.get()
newtxt = str(categoryCount)
if auto == True:
if sottopagina.exists():
wikipedia.setAction(u'Bot: Aggiorno statistiche manutenzioni del progetto %s' % progetto)
sottopagina.put(newtxt)
else:
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Bot: Aggiorno statistiche del progetto %s' % progetto)
sottopagina.put(newtxt)
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</source>
== aggiornaliste.py ==
<source lang="python">
|