Utente:YuBot/insmonitoraggio.py

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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()