Utente:YuBot/insmonitoraggio.py
Questo script è obsoleto. Non utilizzare (lo tengo qui solo come 'documento storico' :))
# -*- coding: utf-8 -*- #################################################################################### # insmonitoraggio.py, versione 2.0 scritta da Yuma # # Questo script inserisce il template monitoraggio in tutte le voci seguite da # # un progetto tematico. # # Uilizza come riferimento i template di navigazione, e crea una lista a partire # # dai 'puntano qui' del template considerato. # # Versione aggiornata: richiede l'input del template di progetto e della variabile # # da inserire nel template monitoraggio # #################################################################################### import wikipedia, sys, re #Processo principale, dove si lavora alle pagine def workon(page): # Mostra il titolo della pagina su cui lavorare. # Sottolinea in rosso. colors = [None] * 5 + [13] * len(paginadiscussione.title()) + [None] * 4 wikipedia.output(u'\n>>> %s <<<' % paginadiscussione.title(), colors = colors) #Se esiste già la sottopagina, te lo dice e va oltre if sottopaginadiscussione.exists(): wikipedia.output (u'Template presente.') #Altrimenti, procede con il lavoro else: #Se esiste la pagina discussioni if paginadiscussione.exists(): #Controlla che non sia un redirect if paginadiscussione.isRedirectPage() or paginadiscussione.isDisambig(): wikipedia.output (u'Redirect o disambigua.') else: #Memorizza il contenuto della pagina testoattuale=paginadiscussione.get() #Mostra il testo da aggiungere wikipedia.showDiff(testoattuale, testodainserire+testoattuale) wikipedia.output (u'Inserisco il template e creo la sottopagina.') #Crea la sottopagina sottopaginadiscussione.put(testosubpage, comment=commento) #Aggiunge il template in testa alla discussione paginadiscussione.put(testodainserire+'\n\n'+testoattuale, comment=commento) #Se la discussione non esiste, la crea else: testoattuale='' wikipedia.showDiff(testoattuale, testodainserire+testoattuale) wikipedia.output (u'Inserisco il template e creo la sottopagina.') sottopaginadiscussione.put(testosubpage, comment=commento) paginadiscussione.put(testodainserire+'\n\n'+testoattuale, comment=commento) #Preparazione di tutte le variabili try: #Ti chiede di inserire il nome del template di navigazione e la variabile progetto tp=wikipedia.input(u'Mi serve il nome del template di navigazione, senza prefisso:') varp=wikipedia.input(u'Mi serve la variabile \'progetto\' da inserire:') #Prepara il testo da inserire nelle pagine testodainserire=u"{{Monitoraggio|"+varp+"}}\n\n" testosubpage=u"{{Monitoraggio/voce\n |voce={{subst:BASEPAGENAME}}\n |progetto="+varp+"\n |livello=nc\n |importanza=disabilitato\n |fonti=nc \n |immagini=nc\n |note=\n}}\n" commento="Bot: inserisco template monitoraggio" #Richiama le pagine che contengono il template di navigazione oggetto=wikipedia.Page('it', 'Template:'+tp) #e crea una lista lista=[page for page in oggetto.getReferences()] discussioni=[] for pagina in lista: #controlla che si tratti esclusivamente di voci if pagina.namespace()==0: discussioni.append('Discussione:'+pagina.title()) #crea lista di discussioni, e la manda al processo principale for discussione in discussioni: paginadiscussione=wikipedia.Page('it', discussione) sottopaginadiscussione=wikipedia.Page('it', discussione+'/monitoraggio') workon(page) #Alla fine, ferma tutto finally: wikipedia.stopme() #Per sicurezza, se qualcosa andasse storto, ferma tutto. wikipedia.stopme()