Utente:Arlas!/Mementovert/Script

# -*- coding: utf-8 -*-
 
"""
 
#############################################
#                                           #
#  Distributed under the terms of the GFDL  #
#        Created by [[it:b:User:G4]]        #
#       Modified by [[Utente:Arlas!]]       #
#############################################
 
Description:
   This script is used for updating [[Utente:Arlas!/Mementovert]]
   it counts the number of pages in each category of "Lavoro sporco"
   and puts them in the template
 
"""
 
import wikipedia, re
from catlib import Category
 
def main():
        aiuto = False
        msg = "conto lavoro sporco"
        global controllo
        controllo = False
        global pagine
        pagine = True
        visuale = False
        global categorie
        categorie = [ u"Da wikificare", u"Voci Trasferite", u"Voci trasferite dal wikizionario inglese", u"Pagine senza definizione", u"PagineSenzaCategorie", u"Da controllare per copyright", u"Da controllare", u"Da controllare italiano", u"Da aiutare etimologia", u"Da ricontrollare"]

        for argomento in wikipedia.handleArgs():
                if argomento.startswith("-pagina:"):
                        pagina = wikipedia.Page(sito, argomento[8:])
                if argomento.startswith("-noVer"):
                        controllo = False
                if argomento.startswith("-noPag"):
                        pagine = False
                if argomento.startswith("-visuale"):
                        visuale = True
                        pagine = False
                if argomento.startswith("-msg:"):
                        msg = re.sub("_", " ", str(argomento[5:]))
                if argomento.startswith("-aiuto"):
                        aiuto = True
        if (aiuto):
                help()
        if (controllo):
                aggiornamenti()
        if (pagine):
                statistiche(msg)
        if (visuale):
                vedi()
 
def help():
        wikipedia.output("\n HAI CHIESTO AIUTO\n\n")
        wikipedia.output("Questo script (creato da G4) conta le pagine di alcune categorie\n")
        wikipedia.output("di lavoro sporco e, grazie ad un apposito template, aggiorna le\n")
        wikipedia.output("statistiche relative\n\n")
        wikipedia.output("Lo script supporta i parametri:\n\n")
        wikipedia.output(" -aiuto (che stai utilizzando adesso)\n")
        wikipedia.output(" -noPag che comanda al bot di controllare soltanto la versione\n")
        wikipedia.output(" -noVer che comanda al bot di non controllare la versione\n")
        wikipedia.output(" -pagina: che comanda al bot di mettere il template in una pagina diversa\n")
        wikipedia.output(" -visuale che comanda al bot di stampare a video i risultati del conteggio\n")
        wikipedia.output(" -msg: che comanda al bot di dare un messaggio diverso dal solito (che deve")
        wikipedia.output("       essere messo dopo il nome del parametro. Il bot sostituirà")
        wikipedia.output("       automaticamente gli _ con spazi.\n")
        wikipedia.output("Grazie per aver usato l'aiuto di moduli.py\n")
        global pagine
        pagine = False
        global controllo
        controllo = False
 
def aggiornamenti():
        versione = u'0.01'
        sito = wikipedia.getSite(code='it',fam='wiktionary')
        pagVer = wikipedia.Page(sito, "Utente:Arlas%21/Mementovert/Versione")
        ver = u'' + pagVer.get()
        if ver <= versione:
                wikipedia.output("\nNon sono state rilasciate nuove versioni di moduli.py (si sta usando la " + ver +")\n")
        else:
                wikipedia.output("\nE' USCITA UNA NUOVA VERSIONE DI MODULI.PY (la " + ver + ")\n")
                global pagine
                pagine = False
 
def statistiche(messaggio):
        sito = wikipedia.getSite(code='it',fam='wiktionary')
        global categorie
        pagina = wikipedia.Page(sito, u'Utente:Arlas%21/Mementovert')
        nuovo = u"{{Utente:Arlas!/Mementovert/Tabella\n"
        nuovo = nuovo + u"|Data={{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}} {{subst:LOCALTIME}}\n"
        for k in categorie:
                corrente = Category(sito, 'Categoria:' + k)
                if k == u"Da controllare":
                    catCount = len(corrente.articlesList(recurse=False))
                else:
                    catCount = len(corrente.articlesList(recurse=True))
                k = re.sub("Moduli ", "", k)
                k = re.sub("Libri ", "L", k)
                nuovo = nuovo + "|" + k + "=" + str(catCount) + "\n"
        nuovo = speciali(nuovo, sito, "Orfane", "|Orfane=")
        nuovo = speciali(nuovo, sito, "Categorizzare", "|NoCat=")
        nuovo = speciali(nuovo, sito, "NoInterwiki", "|NoInterwiki=")
        nuovo = nuovo + "}}"
        pagina.put(nuovo, "[[Bot]]: " + messaggio)
 
def speciali(vecchio, sito, cosa, stringa):
        if (cosa == "Orfane"):
                speciale = sito.lonelypages(number = 10000, repeat = False)
        if (cosa == "Categorizzare"):
                speciale = sito.uncategorizedpages(number = 10000, repeat = False)
        if (cosa == "NoInterwiki"):
                speciale = sito.withoutinterwiki(number = 10000, repeat = False)
        k = 0
        for i in speciale:
                k = k + 1
        nuovo = vecchio + stringa + str(k) + u"\n"
        return nuovo
 
def vedi():
        sito = wikipedia.getSite(code='it',fam='wiktionary')
        global categorie
        nuovo = u"\n\n"
        for k in categorie:
                corrente = Category(sito, 'Categoria:' + k)
                catCount = len(corrente.articlesList(recurse=True))
                nuovo = nuovo + k + ": " + str(catCount) + "\n"
        nuovo = speciali2(nuovo, sito, "Orfane", "Orfane: ")
        nuovo = speciali2(nuovo, sito, "Categorizzare", "Da categorizzare: ")
        nuovo = speciali2(nuovo, sito, "NoInterwiki", "Senza Interwiki: ")
        nuovo = nuovo + u"\n"
        wikipedia.output(nuovo)
 
def speciali2(vecchio, sito, cosa, stringa):
        if (cosa == "Orfane"):
                speciale = sito.lonelypages(number = 10000, repeat = False)
        if (cosa == "Categorizzare"):
                speciale = sito.uncategorizedpages(number = 10000, repeat = False)
        if (cosa == "NoInterwiki"):
                speciale = sito.withoutinterwiki(number = 10000, repeat = False)
        k = 0
        for i in speciale:
                k = k + 1
        nuovo = vecchio + stringa + str(k) + u"\n"
        return nuovo
 
if __name__ == "__main__":
        try:
                main()
        finally:
                wikipedia.stopme()