Utente:YuBot/insmonitoraggio-cat.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-cat.py   -   scritto da Yuma     #
# Questo script inserisce il template monitoraggio #
# a partire da una specifica categoria. Tutte le   #
# voci contenute nella categoria verranno dotate   #
# del template monitoraggio, complete di variabile #
# progetto. Utilizzare con cautela, solo dove sia  #
# chiaro che tutte la voci nella categoria sono    #
# seguite da un solo progetto tematico.            #
####################################################
import wikipedia, sys, re, catlib, pagegenerators

#Processo di inserimento template monitoraggio
def workon(page):
    # Mostra il titolo della pagina su cui lavorare.
    # Sottolinea il titolo in rosso.
    colors = [None] * 5 + [13] * len(paginadiscussione.title()) + [None] * 4
    wikipedia.output(u'\n>>> %s <<<' % paginadiscussione.title(), colors = colors)
    
    # Se esiste la sottopagina, te lo dice e va avanti
    if sottopaginadiscussione.exists():
        wikipedia.output (u'Template presente.')
    #Altrimenti, prosegue nell'inserimento
    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.')
            #...se non lo è, memorizza il contenuto della pagina
            else:
                testoattuale=paginadiscussione.get()
                wikipedia.showDiff(testoattuale, testodainserire+testoattuale)
                wikipedia.output (u'Inserisco il template e creo la sottopagina.')
                #crea la sottopagina
                sottopaginadiscussione.put(testosubpage, comment=commento)
                #inserisce il template nella discussione
                paginadiscussione.put(testodainserire+'\n\n'+testoattuale, comment=commento)
        #Se non esiste discussione...     
        else:
            testoattuale=''
            wikipedia.showDiff(testoattuale, testodainserire+testoattuale)
            wikipedia.output (u'Inserisco il template e creo la sottopagina.')
            #...crea la sottopagina
            sottopaginadiscussione.put(testosubpage, comment=commento)
            #...crea la discussione 
            paginadiscussione.put(testodainserire+'\n\n'+testoattuale, comment=commento)

#Qui sotto si prepara tutto quello che serve prima di procedere
try:
    #Ti chiede il nome della categoria
    categoryname = wikipedia.input(u'Mi serve il nome della categoria:')
    cat = catlib.Category(wikipedia.getSite(), 'Category:%s' % categoryname)
    #Legge le pagine contenute nella categoria
    gen = pagegenerators.CategorizedPageGenerator(cat)
    #Ti chiede la variabile di progetto da inserire nel template
    varp=wikipedia.input(u'Mi serve la variabile \'progetto\' da inserire')
    #Template per le discussioni
    testodainserire=u"{{Monitoraggio|"+varp+"}}\n\n"
    #Template per le sottopagine
    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"
  
    #Crea una lista di voci
    lista=[page for page in gen]                  

    discussioni=[]
    
    #Crea una lista di discussioni
    for pagina in lista:
        if pagina.namespace()==0: 
            discussioni.append('Discussione:'+pagina.title())
     
    #Per ogni discussione, rimanda al processo di inserimento       
    for discussione in discussioni:
            paginadiscussione=wikipedia.Page('it', discussione)
            sottopaginadiscussione=wikipedia.Page('it', discussione+'/monitoraggio')
            workon(page)
#Alla fine, interrompe il processo
finally:
    wikipedia.stopme()