Utente:G4/Script

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

Carte di Magic[modifica]

inseriscicarte.py v. 1.50 BETA[modifica]

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
#Created by [[it:b:User:Gianlu4]]
#
 
import re, wikipedia, codecs, _mysql
 
def main():
        args = wikipedia.handleArgs()
        serialBegin = 1 # Da dove deve cominciare? default=1
        all = False
        for currentArgument in args:
                if currentArgument.startswith("-start:"):
                        serialBegin = int(currentArgument[7:]) 
                        # Se l'utente dice da dove deve cominciare, lo memorizza
                if currentArgument.startswith("-always"):
                        all = True
 
        #page = wikipedia.Page(wikipedia.getSite(), "Utente:Gianlu4Bot/Sandbox") # Solo per test
        db = _mysql.connect(host='localhost', user='MagicBot', passwd='**********', db='magic_cards_2003')
        db.query("SELECT COUNT(Numero) FROM magic_cards") # Conta le carte
        num = int(db.store_result().fetch_row(how=1)[0]['COUNT(Numero)']) + 1
        templateFile = codecs.open("modellocarta.txt", "r", "utf-8")
        modellovoce = templateFile.read() # Legge il modello della voce
        templateFile.close()
 
        for i in range(serialBegin, num):
                # Ottiene tutte le info sulla carta corrente
                db.query("SELECT * FROM magic_cards WHERE Numero LIKE " + str(i))
                dict = db.store_result().fetch_row(how=1)[0]
 
                page = wikipedia.Page(wikipedia.getSite(), "Magic/Carte/" + str(dict['Set'])) 
                # Ottiene la pagina da modificare
                wikipedia.output(">>>>> " + page.title() + " - Record " + str(i) + " <<<<<")
                if(page.exists()):
                        oldtxt = page.get()
                else:
                        oldtxt = ''

                elencoSostituzioni = [ "Nome_Carta", "English", "Costo", "Tipo", "F_C", "Rarita", "Set", "Testo" ]


                # Dato un testo ed un dizionario di sostituzioni
                # usa le regex per il "find and replace"
                for k in elencoSostituzioni:
                        modellovoce = re.sub(k, dict[k], modellovoce)
 
                # Sostituzioni HTML->wikimarkup
                modellovoce = re.sub("< */? *(em|EM) *>", "''", modellovoce)
        
                newtxt = modellovoce

                wikipedia.showDiff(oldtxt, newtxt)
                if (not all):
                        # Chiede la conferma prima di 
                        # editare (se non è in modalità automatica)
                        choice = wikipedia.inputChoice(u"Aggiungo questa carta?",  ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
                else:
                        choice = 'y'
                if choice in ['A', 'a']:
                        all = True
                        choice = 'y'
                if choice in ['Y', 'y']:
                        wikipedia.setAction(u'[[Wikibooks:Bot|Bot]]: Aggiunta carta: ' + dict['Nome_Carta'])
                        page.put(oldtxt + "\n" + newtxt)     
 
 
if __name__ == "__main__":
        try:
                main()
        finally:
                wikipedia.stopme()

modellocarta.txt[modifica]

{{Carta Magic
|italiano=Nome_Carta
|inglese=English
|costo=Costo
|tipo=Tipo
|rar=Rarita
|forzacosti=F_C
|espan=Set
|testo=Testo
}}

Inserire testi[modifica]

Per un corretto funzionamento c'è bisogno di un file sul Disco Rigido (C:) chiamato testo.txt e con codifica ANSI che sia strutturato secondo il seguente codice:

NOME_DELLA_PAGINA<<TESTO DA INSERIRE

Un elemento per riga.

Versione 2[modifica]

Con la versione 2 viene liberalizzato il percorso del file. Da questa versione:

-cartella indica il percorso (ad esempio c:/)
-file indica il nome del file (ad esempio testo.txt)

Quindi un esempio è:
inseriscitesto.py -cartella:c:/ -file:testo.txt

inseriscitesto.py v. 3.50 BETA[modifica]

 1 import string
 2 import wikipedia
 3 
 4 def main():
 5     crlf = "\n"
 6     all = False
 7     cart = "c:/"
 8     file = "testo.txt"
 9     args = wikipedia.handleArgs()
10     for currentArgument in args:
11         if currentArgument.startswith("-cartella:"):
12             cart = currentArgument[10:] 
13             # Se l'utente dice da dove deve cominciare, lo memorizza
14         if currentArgument.startswith("-file:"):       
15             file = currentArgument[6:] 
16             # Se l'utente dice da dove deve cominciare, lo memorizza
17         if currentArgument.startswith("-always"):
18             all = True
19     nomefile = cart + file
20     f = open(nomefile, 'r')
21     for line in f.readlines():
22         w = line.split('<<')
23         i = len(w)
24         if i > 1 :
25             sito=wikipedia.getSite(code='it',fam='wikibooks')
26             pl = wikipedia.Page(sito, w[0])
27             testo_originale = pl.get()
28             
29             testo_nuovo = testo_originale + crlf + w[1]
30             
31             if (not all):
32                 # Chiede la conferma prima di 
33                 # editare (se non è in modalità automatica)
34                 wikipedia.output(">>>>>" + pl.title() + "<<<<<\n\n")
35                 wikipedia.showDiff(testo_originale, testo_nuovo)
36                 choice = wikipedia.inputChoice(u"Aggiungo questo testo?",  ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
37             else:
38                 choice = 'y'
39             if choice in ['A', 'a']:
40                 all = True
41                 choice = 'y'
42             if choice in ['Y', 'y']:
43                 pl.put(testo_nuovo,'[[Wikibooks:Bot|Bot]]: Aggiungo: "' + w[1] + '"')   
44     f.close()
45     
46 if __name__ == "__main__":
47     try:
48         main()
49     except:
50         wikipedia.stopme()
51         raise
52     else:
53         wikipedia.stopme()

Avanzamento[modifica]

Versione evoluta di inseriscitesto.py.

Avanzamento.py v. 1.10[modifica]

 1 import string
 2 import wikipedia
 3 import re
 4  
 5 def main():
 6     crlf = "\n{{Avanzamento|"
 7     crd = "%}}"
 8     all = False
 9     cart = "c:/"
10     file = "testo.txt"
11     argomenti = wikipedia.handleArgs()
12     for corrente in argomenti:
13         if corrente.startswith("-cartella:"):
14             cart = currentArgument[10:]
15         if corrente.startswith("-file:"):       
16             file = currentArgument[6:]
17         if corrente.startswith("-always"):
18             all = True
19     nomefile = cart + file
20     fonte = open(nomefile, 'r')
21     for line in fonte.readlines():
22         testo = line.split('<<')
23         i = len(testo)
24         if i > 1 :
25             sito=wikipedia.getSite(code='it',fam='wikibooks')
26             pl = wikipedia.Page(sito, testo[0])
27             testo_originale = pl.get()
28             
29             testo[1] = re.sub("\n", "", testo[1])
30             testo_nuovo = testo_originale + crlf + testo[1] + crd
31            
32             if (not all):
33                 wikipedia.output(">>>>>" + pl.title() + "<<<<<\n")
34                 wikipedia.output("Si sta tentando di categorizzare\n   la pagina come " + testo[1] + "%\n")
35                 choice = wikipedia.inputChoice(u"Categorizzo?",  ['Si', 'No', 'Tutti'], ['S', 'N', 'T'], 'N')
36             else:
37                 choice = 'S'
38             if choice in ['T', 't']:
39                 all = True
40                 choice = 'S'
41             if choice in ['S', 's']:
42                 pl.put(testo_nuovo,'[[Wikibooks:Bot|Bot]]: Categorizzo: "' + testo[1] + '%"')   
43     fonte.close()
44    
45 if __name__ == "__main__":
46     try:
47         main()
48     except:
49         wikipedia.stopme()
50         raise
51     else:
52         wikipedia.stopme()

Statistiche moduli[modifica]

Qusto è lo script utilizzato per aggiornare la tabella del lavoro sporco.

Parametri[modifica]

-pagina:xxx[modifica]

Il parametro pagina indica su quale pagina il bot deve lavorare ed inserire i dati.

Esempio:

moduli.py -pagina:Utente:Gianlu4/Statistiche_manutenzioni

Nel fornire il nome della pagina gli spazi sono inutilizzabili (da sostituire con _ ).

-noVer[modifica]

Il parametro noVer indica al bot di non controllare la versione dello script.

Esempio:

moduli.py -noVer

-noPag[modifica]

Il parametro noPag indica al bot di controllare doltanto la versione di moduli.py.

Esempio:

moduli.py -noPag

-visuale[modifica]

Il parametro visuale indica al bot di restituire i risultati in locale e non aggiornando il template su wikibooks.

Esempio:

moduli.py -visuale

-msg:xxx[modifica]

Il parametro msg indica al bot quale messaggio personalizzato fare apparire dopo il collegamento alla pagina dei Bot.

Esempio:

moduli.py -msg:conto_lavoro_sporco

Lo script sostituisce automaticamente _ con uno spazio.

-aiuto[modifica]

Il parametro aiuto indica al bot di stampare a video una guida rapida all'utilizzo dello script.

Esempio:

moduli.py -aiuto

==moduli.py v. 8.82 ==

  1 # -*- coding: utf-8 -*-
  2 
  3 """
  4 
  5 #############################################
  6 #                                           #
  7 #  Distributed under the terms of the GFDL  #
  8 #        Created by [[it:b:User:G4]]        #
  9 #                                           #
 10 #############################################
 11  
 12 Description:
 13    This script is used for updating [[it:b:Template:Statistiche manutenzioni]]
 14    it counts the number of pages in each category of "Lavoro sporco"
 15    and puts them in the template
 16 
 17 """
 18  
 19 import wikipedia, re
 20 from catlib import Category
 21  
 22 def main():
 23         aiuto = False
 24         msg = "conto lavoro sporco"
 25         global controllo
 26         controllo = True
 27         global pagine 
 28         pagine = True
 29         visuale = False
 30         global categorie
 31         categorie = [ u"Moduli 0%", u"Categoria da definire", u"Da controllare", u"Da controllare per copyright", u"Segnalazioni NPOV", u"Da aiutare", u"Da tradurre", u"Da unire", u"Da wikificare", u"Moduli 25%", u"Moduli 50%", u"Moduli 75%", u"Moduli 100%", u"Libri 0%",  u"Libri 25%",  u"Libri 50%",  u"Libri 75%",  u"Libri 100%"]
 32         for argomento in wikipedia.handleArgs():
 33                 if argomento.startswith("-pagina:"):
 34                         pagina = wikipedia.Page(sito, argomento[8:])
 35                 if argomento.startswith("-noVer"):
 36                         controllo = False
 37                 if argomento.startswith("-noPag"):
 38                         pagine = False
 39                 if argomento.startswith("-visuale"):
 40                         visuale = True
 41                         pagine = False
 42                 if argomento.startswith("-msg:"):
 43                         msg = re.sub("_", " ", str(argomento[5:]))
 44                 if argomento.startswith("-aiuto"):
 45                         aiuto = True
 46         if (aiuto):
 47                 help()
 48         if (controllo):
 49                 aggiornamenti()
 50         if (pagine):
 51                 statistiche(msg)
 52         if (visuale):
 53                 vedi()
 54 
 55 def help():
 56         wikipedia.output("\n HAI CHIESTO AIUTO\n\n")
 57         wikipedia.output("Questo script (creato da G4) conta le pagine di alcune categorie\n")
 58         wikipedia.output("di lavoro sporco e, grazie ad un apposito template, aggiorna le\n")
 59         wikipedia.output("statistiche relative\n\n")
 60         wikipedia.output("Lo script supporta i parametri:\n\n")
 61         wikipedia.output(" -aiuto (che stai utilizzando adesso)\n")
 62         wikipedia.output(" -noPag che comanda al bot di controllare soltanto la versione\n")
 63         wikipedia.output(" -noVer che comanda al bot di non controllare la versione\n")
 64         wikipedia.output(" -pagina: che comanda al bot di mettere il template in una pagina diversa\n")
 65         wikipedia.output(" -visuale che comanda al bot di stampare a video i risultati del conteggio\n")
 66         wikipedia.output(" -msg: che comanda al bot di dare un messaggio diverso dal solito (che deve")
 67         wikipedia.output("       essere messo dopo il nome del parametro. Il bot sostituirà")
 68         wikipedia.output("       automaticamente gli _ con spazi.\n")
 69         wikipedia.output("Grazie per aver usato l'aiuto di moduli.py\n")
 70         global pagine
 71         pagine = False
 72         global controllo
 73         controllo = False
 74 
 75 def aggiornamenti():
 76         versione = u'8.82'
 77         sito = wikipedia.getSite(code='it',fam='wikibooks')
 78         pagVer = wikipedia.Page(sito, "Template:Statistiche manutenzioni/Script/Versione")
 79         ver = u'' + pagVer.get()
 80         if ver <= versione:
 81                 wikipedia.output("\nNon sono state rilasciate nuove versioni di moduli.py (si sta usando la " + ver +")\n")
 82         else:
 83                 wikipedia.output("\nE' USCITA UNA NUOVA VERSIONE DI MODULI.PY (la " + ver + ")\n")
 84                 global pagine
 85                 pagine = False
 86  
 87 def statistiche(messaggio):
 88         sito = wikipedia.getSite(code='it',fam='wikibooks')
 89         global categorie
 90         pagina = wikipedia.Page(sito, u'Template:Statistiche manutenzioni')
 91         nuovo = u"{{Statistiche manutenzioni/Tabella\n"
 92         nuovo = nuovo + u"|Data={{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}} {{subst:LOCALTIME}}\n"
 93         for k in categorie:
 94                 corrente = Category(sito, 'Categoria:' + k)
 95                 if k == u"Da controllare":
 96                     catCount = len(corrente.articlesList(recurse=False))
 97                 else:
 98                     catCount = len(corrente.articlesList(recurse=True))
 99                 k = re.sub("Moduli ", "", k)
100                 k = re.sub("Libri ", "L", k)
101                 nuovo = nuovo + "|" + k + "=" + str(catCount) + "\n"
102         nuovo = speciali(nuovo, sito, "Orfane", "|Orfane=")
103         nuovo = speciali(nuovo, sito, "Categorizzare", "|NoCat=")
104         nuovo = speciali(nuovo, sito, "NoInterwiki", "|NoInterwiki=")
105         nuovo = nuovo + "}}"
106         nuovo = nuovo + u"\n<noinclude>[[Categoria:Coordinamento| ]]</noinclude>"
107         pagina.put(nuovo, "[[Wikibooks:Bot|Bot]]: " + messaggio)
108  
109 def speciali(vecchio, sito, cosa, stringa):
110         if (cosa == "Orfane"):
111                 speciale = sito.lonelypages(number = 10000, repeat = False)
112         if (cosa == "Categorizzare"):
113                 speciale = sito.uncategorizedpages(number = 10000, repeat = False)
114         if (cosa == "NoInterwiki"):
115                 speciale = sito.withoutinterwiki(number = 10000, repeat = False)
116         k = 0
117         for i in speciale:
118                 k = k + 1
119         nuovo = vecchio + stringa + str(k) + u"\n"
120         return nuovo
121  
122 def vedi():
123         sito = wikipedia.getSite(code='it',fam='wikibooks')
124         global categorie
125         nuovo = u"\n\n"
126         for k in categorie:
127                 corrente = Category(sito, 'Categoria:' + k)
128                 catCount = len(corrente.articlesList(recurse=True))
129                 nuovo = nuovo + k + ": " + str(catCount) + "\n"
130         nuovo = speciali2(nuovo, sito, "Orfane", "Orfane: ")
131         nuovo = speciali2(nuovo, sito, "Categorizzare", "Da categorizzare: ")
132         nuovo = speciali2(nuovo, sito, "NoInterwiki", "Senza Interwiki: ")
133         nuovo = nuovo + u"\n"
134         wikipedia.output(nuovo)
135  
136 def speciali2(vecchio, sito, cosa, stringa):
137         if (cosa == "Orfane"):
138                 speciale = sito.lonelypages(number = 10000, repeat = False)
139         if (cosa == "Categorizzare"):
140                 speciale = sito.uncategorizedpages(number = 10000, repeat = False)
141         if (cosa == "NoInterwiki"):
142                 speciale = sito.withoutinterwiki(number = 10000, repeat = False)
143         k = 0
144         for i in speciale:
145                 k = k + 1
146         nuovo = vecchio + stringa + str(k) + u"\n"
147         return nuovo
148  
149 if __name__ == "__main__":
150         try:
151                 main()
152         finally:
153                 wikipedia.stopme()

moduli.py versione toolserver[modifica]

 1 # -*- coding: utf-8 -*-
 2 
 3 """
 4 
 5 #############################################
 6 #                                           #
 7 #  Distributed under the terms of the GFDL  #
 8 #        Created by [[it:b:User:G4]]        #
 9 #                                           #
10 #############################################
11  
12 Description:
13    This script is used for updating [[it:b:Template:Statistiche manutenzioni]]
14    it counts the number of pages in each category of "Lavoro sporco"
15    and puts them in the template
16 
17 """
18  
19 import wikipedia, re
20 from catlib import Category
21  
22 def main():
23         msg = "conto lavoro sporco"
24         global pagine 
25         pagine = True
26         global categorie
27         categorie = [ u"Moduli 0%", u"Categoria da definire", u"Da controllare", u"Da controllare per copyright", u"Segnalazioni NPOV", u"Da aiutare", u"Da tradurre", u"Da unire", u"Da wikificare", u"Moduli 25%", u"Moduli 50%", u"Moduli 75%", u"Moduli 100%", u"Libri 0%",  u"Libri 25%",  u"Libri 50%",  u"Libri 75%",  u"Libri 100%"]
28 
29         aggiornamenti()
30         if (pagine):
31                 statistiche(msg)
32 
33 def aggiornamenti():
34         versione = u'8.82'
35         sito = wikipedia.getSite(code='it',fam='wikibooks')
36         pagVer = wikipedia.Page(sito, "Template:Statistiche manutenzioni/Script/Versione")
37         ver = u'' + pagVer.get()
38         if ver > versione:
39                 global pagine
40                 pagine = False
41  
42 def statistiche(messaggio):
43         sito = wikipedia.getSite(code='it',fam='wikibooks')
44         global categorie
45         pagina = wikipedia.Page(sito, u'Template:Statistiche manutenzioni')
46         nuovo = u"{{Statistiche manutenzioni/Tabella\n"
47         nuovo = nuovo + u"|Data={{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}} {{subst:LOCALTIME}}\n"
48         for k in categorie:
49                 corrente = Category(sito, 'Categoria:' + k)
50                 if k == u"Da controllare":
51                     catCount = len(corrente.articlesList(recurse=False))
52                 else:
53                     catCount = len(corrente.articlesList(recurse=True))
54                 k = re.sub("Moduli ", "", k)
55                 k = re.sub("Libri ", "L", k)
56                 nuovo = nuovo + "|" + k + "=" + str(catCount) + "\n"
57         nuovo = speciali(nuovo, sito, "Orfane", "|Orfane=")
58         nuovo = speciali(nuovo, sito, "Categorizzare", "|NoCat=")
59         nuovo = speciali(nuovo, sito, "NoInterwiki", "|NoInterwiki=")
60         nuovo = nuovo + "}}"
61         nuovo = nuovo + u"\n<noinclude>[[Categoria:Coordinamento| ]]</noinclude>"
62         pagina.put(nuovo, "[[Wikibooks:Bot|Bot]]: " + messaggio)
63  
64 def speciali(vecchio, sito, cosa, stringa):
65         if (cosa == "Orfane"):
66                 speciale = sito.lonelypages(number = 10000, repeat = False)
67         if (cosa == "Categorizzare"):
68                 speciale = sito.uncategorizedpages(number = 10000, repeat = False)
69         if (cosa == "NoInterwiki"):
70                 speciale = sito.withoutinterwiki(number = 10000, repeat = False)
71         k = 0
72         for i in speciale:
73                 k = k + 1
74         nuovo = vecchio + stringa + str(k) + u"\n"
75         return nuovo
76 
77  
78 if __name__ == "__main__":
79         try:
80                 main()
81         finally:
82                 wikipedia.stopme()


Bollettini[modifica]

Parametri[modifica]

-file:xxx[modifica]

Il parametro file indica al bot di cercare sul disco rigido locale un file di testo che elenchi i libri dei quali fare i bollettini.

Esempio:

bollettino.py -file:c:/testo_bollettini.txt

testo bollettini.txt:

Magic
C
ecc.

Lo script sostituisce gli _ con spazi.

bollettino.py v. 1.16.1[modifica]

  1 # -*- coding: utf-8 -*-
  2  
  3 """
  4  
  5 #############################################
  6 #                                           #
  7 #  Distributed under the terms of the GFDL  #
  8 #        Created by [[it:b:User:G4]]        #
  9 #                                           #
 10 #############################################
 11  
 12  
 13 """
 14  
 15 import wikipedia, pagegenerators, re
 16 from catlib import Category
 17 from datetime import datetime
 18  
 19 def inizio():
 20     #Esamina le opzioni e valuta che fare
 21     nodisco = True
 22     nowiki = True
 23     pag = ""
 24     global versione
 25     versione = u"1.16.1"
 26     global tem
 27     tem = True
 28     for argomento in wikipedia.handleArgs():
 29         if argomento.startswith("-file:"):
 30             nodisco = False         
 31             file = re.sub("_", " ", str(argomento[6:]))
 32         if argomento.startswith("-wiki:"):
 33             nowiki = False        
 34             pag = re.sub("_", " ", str(argomento[6:]))
 35         if argomento == "-file":
 36             nodisco = False
 37             file = input("Inserisci il percorso del file: ")  
 38             file = re.sub("_", " ", file)
 39         if argomento == "-wiki":
 40             nowiki = False     
 41             pag = input("Inserisci il nome della pagina: ")     
 42             pag = re.sub("_", " ", pag)
 43     if (nodisco) and (nowiki): 
 44         libro = raw_input('Inserisci il nome del libro: ')
 45         if libro == "NoNo":
 46             tem = False
 47         elif libro !="No":
 48             libro = re.sub("_", " ", libro)
 49             variabili()
 50             speciali()
 51             scrivi(unicode(libro, 'utf-8'))
 52     elif (nodisco) and not (nowiki):
 53         variabili()
 54         speciali()
 55         sito = wikipedia.getSite(code='it',fam='wikibooks')
 56         Pagina = wikipedia.Page(sito, pag)
 57         testo = Pagina.get()
 58         cerca = re.compile("# \[?\[?.*]?]?")
 59         cerca = cerca.search(testo)
 60         if cerca != None:
 61             cerca2 = re.compile("# \[?\[?.*]?]?")
 62             cerca2 = cerca2.findall(testo)
 63             for g in cerca2:
 64                 g = re.sub("# |\[\[|]]", "", g)
 65                 g = re.sub("_", " ", g)
 66                 scrivi(str(g))
 67     elif (nowiki) and not (nodisco):
 68         variabili()
 69         speciali()
 70         f = open(file, 'r')
 71         for linea in f.readlines():
 72             libro = re.sub("\n", "", linea)
 73             libro = re.sub("_", " ", libro)
 74             scrivi(unicode(libro, 'utf-8'))
 75         f.close()
 76     if (tem):
 77         bollettini()
 78     senza()
 79  
 80 def scrivi(libro):
 81     # Crea e scrive il bollettino
 82     sito = wikipedia.getSite(code='it',fam='wikibooks')
 83     procedo = True
 84     pagLibro = wikipedia.Page(sito, libro)
 85     try:
 86         pagLibro.get()
 87     except wikipedia.IsRedirectPage:
 88         procedo = False
 89         wikipedia.output("\n" + pagLibro.title() + "e' un redirect.\n")
 90     except wikipedia.NoPage:
 91         procedo = False
 92     Bollettino = wikipedia.Page(sito, libro + "/Sviluppo")
 93     log = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/Log")
 94     testo = "{{Bollettino\n"
 95     testo = testo + "|Autore=~~~\n"
 96     testo = testo + "|Data={{subst:LOCALTIME}} - {{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\n"
 97     testo = testo + "|Libro=" + libro + "\n"
 98     testo2 = ""
 99     categorie = [ "Moduli stub", "Moduli 25%", "Moduli 50%", "Moduli 75%", "Moduli 100%", "Da wikificare", "Da controllare", "Da aiutare",  "Da controllare per copyright", "Da tradurre", "Segnalazioni NPOV", "Da cancellare"]
100     categorie2 = [ "00%", "25%", "50%", "75%", "100%", "Wik", "Control", "Aiutare", "Controlcopy", "Tradurre", "NPOV", "Canc" ]
101     categorie3 = categorie2 + [ "Orfane", "NoCat", "Red" ]
102     if (procedo):
103         Blocco = set(pagegenerators.PrefixingPageGenerator(libro + "/"))
104         Blocco.add(wikipedia.Page(sito, libro))
105         for numero in range(0, len(categorie)): 
106             cat = Category(sito, "Categoria:" + categorie[numero])
107             Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
108             testo2 = testo2 + "\n\n==[[:Categoria:" + str(categorie[numero]) + "|" + str(categorie[numero]) + "]]==\n"
109             conta = 0
110             for page in Blocco.intersection(Blocco2):
111                 conta = conta + 1
112                 if page.title() == Bollettino.title():
113                     continue
114                 else:
115                     testo2 = testo2 + "# [[" + page.title() + "]]\n"
116             if str(categorie[numero]) == "Moduli 100%":
117                 if Bollettino.exists():
118                     testo = testo + "|" + categorie2[numero] + "=" + str(conta - 1) + "\n"
119                 else:
120                     testo = testo + "|" + categorie2[numero] + "=" + str(conta) + "\n"
121             else:
122                 testo = testo + "|" + categorie2[numero] + "=" + str(conta) + "\n"
123         utile = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/PagineOrfane")
124         Blocco2 = set(pagegenerators.LinkedPageGenerator(utile))
125         conta = 0
126         testo2 = testo2 + "\n\n==[[Progetto:Coordinamento/Bollettini/PagineOrfane|Orfane]]==\n"
127         for page in Blocco.intersection(Blocco2):
128                 conta = conta + 1
129                 if page.title == Bollettino.title:
130                     continue
131                 else:
132                     testo2 = testo2 + "# [[" + page.title() + "]]\n"
133         testo = testo + "|Orfane=" + str(conta) + "\n"
134         wikipedia.output("Aggiunte le orfane")
135         utile = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/NonCategorizzate")
136         Blocco2 = set(pagegenerators.LinkedPageGenerator(utile))
137         conta = 0
138         testo2 = testo2 + "\n\n==[[Progetto:Coordinamento/Bollettini/NonCategorizzate|Non categorizzate]]==\n"
139         for page in Blocco.intersection(Blocco2):
140             conta = conta + 1
141             if page.title == Bollettino.title:
142                 continue
143             else:
144                 testo2 = testo2 + "# [[" + page.title() + "]]\n"
145         testo = testo + "|NoCat=" + str(conta) + "\n"
146         wikipedia.output("Aggiunte le non categorizzate")
147         conta = 0
148         testo2 = testo2 + "\n\n==Redirect==\n"
149         for pa in Blocco:
150             if pa.isRedirectPage():
151                 titolo = re.sub(" ", "%20", pa.title())
152                 conta = conta + 1
153                 testo2 = testo2 + "# [http://it.wikibooks.org/w/index.php?title=" + titolo + "&redirect=no " + pa.title() + "]\n"
154         testo = testo + "|Red=" + str(conta) + "\n"
155         wikipedia.output("Aggiunti i redirect")
156         if Bollettino.exists():
157             for numero2 in range(0, len(categorie3)):
158                 stringa = "\|" + categorie3[numero2] + "=.+"
159                 tes = re.search(stringa, Bollettino.get())
160                 tes2 = re.sub("\|" + categorie3[numero2] + "=", "", tes.group())
161                 nuprec = int(str(tes2))
162                 tes = re.search(stringa, testo)
163                 tes2 = re.sub("\|" + categorie3[numero2] + "=", "", tes.group())
164                 numor = int(str(tes2))
165                 if nuprec > numor:
166                     diff = nuprec - numor
167                     testo = testo + "|%" + categorie3[numero2] + "=-\n|d" + categorie3[numero2] + "=" + str(diff) + "\n"
168                 elif nuprec < numor:
169                     diff = numor - nuprec
170                     testo = testo + "|%" + categorie3[numero2] + "=+\n|d" + categorie3[numero2] + "=" + str(diff) + "\n"
171                 else:
172                     testo = testo + "|%" + categorie3[numero2] + "=0\n|d" + categorie3[numero2] + "=0\n"
173         else:
174             for numero2 in range(0, len(categorie3)):
175                 testo = testo + "|%" + categorie3[numero2] + "=0\n|d" + categorie3[numero2] + "=0\n"   
176         if Bollettino.exists():
177             conta = -2
178         else:
179             conta = -1
180         for a in range(0, len(Blocco)):
181             conta = conta + 1
182         if conta == -1 or conta == -2:
183             conta = 0
184         testo = testo + "|Moduli=" + str(conta) + "\n"
185         categorie = [ "Libri stub", "Libri 25%", "Libri 50%", "Libri 75%", "Libri 100%"]
186         for g in categorie:
187             cat = Category(sito, "Categoria:" + g)
188             Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
189             h = re.sub("Libri |%", "", g)
190             if h == "stub":
191                 h = "00"
192             if pagLibro in Blocco2:
193                 testo = testo + "|CaLib=" + h + "\n"
194         cat = Category(sito, "Categoria:Libri in vetrina")
195         Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
196         if pagLibro in Blocco2:
197             testo = testo + "|Vet=Si\n"
198         global versione
199         testo = testo + "|Versione=" + versione + "\n}}\n\n"
200         testo3 = "\n{{Avanzamento|100%}}"
201         testo = testo + testo2 + testo3
202         if Bollettino.exists():
203             Bollettino.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno bollettino")
204         else:
205             Bollettino.put(testo, "[[Wikibooks:Bot|Bot]]: creo bollettino")
206         testo = log.get()
207         testo = testo + "\n#[[" + libro + "]] ([[" + libro + "/Sviluppo|bollettino]]) - {{subst:LOCALTIME}} - {{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}} - ~~~"
208         log.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno il log")
209 
210 def bollettini():
211     # Aggiorna il numero dei bollettini se è vecchio
212     if vecchio("Template:NUMBEROFBOLLETTINI"):
213         sito = wikipedia.getSite(code='it',fam='wikibooks')
214         template = wikipedia.Page(sito, "Template:NUMBEROFBOLLETTINI")
215         global tutte
216         pagine = tutte
217         conta = 0
218         for y in pagine:
219             if y.title().endswith("/Sviluppo"):
220                 conta += 1
221         template.put(str(conta), "[[Wikibooks:Bot|Bot]]: aggiorno numero di [[Aiuto:Bollettino|bollettini]]")
222 
223 def senza():
224     # Aggiorna la lista di libri senza bollettino se cono vecchie
225     if vecchio("Progetto:Coordinamento/Bollettini/Senza"):
226         sito = wikipedia.getSite(code='it',fam='wikibooks')
227         global tutte
228         libr = tutte
229         pagSen = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/Senza")
230         global libri
231         sen = set()
232         for u in libri:
233             pa = wikipedia.Page(sito, u.title() + "/Sviluppo")
234             if not pa in tutte:
235                 if u.isRedirectPage() == False:
236                     sen.add(u)
237         testo = ""
238         for i in sen:
239             testo = testo + "# [[" + i.title() + "]] ([[" + i.title() + "/Sviluppo|bollettino]])\n"
240         pagSen.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno il log dei bollettini non creati")
241 
242 def speciali():
243     # Aggiorna le pagine utili se sono vecchie
244     if vecchio("Progetto:Coordinamento/Bollettini/PagineOrfane"):
245         sito = wikipedia.getSite(code='it',fam='wikibooks')
246         orfane = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/PagineOrfane")
247         noncat = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/NonCategorizzate")
248         testo = ""
249         for pa in sito.lonelypages(number = 10000, repeat = False):
250             testo = testo + "[[" + pa.title() + "]]\n"
251         orfane.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno pagina utile")
252         testo = ""
253         for pa in sito.uncategorizedpages(number = 10000, repeat = False):
254             testo = testo + "[[" + pa.title() + "]]\n"
255         noncat.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno pagina utile")
256 
257 def vecchio(nomePag):
258     # Controlla se la pagina non è stata modificata da un giorno.
259     # Se sì restituisce True, altrimenti False
260     sito = wikipedia.getSite(code='it',fam='wikibooks')
261     pagina = wikipedia.Page(sito,nomePag)
262     cronologia = pagina.getVersionHistory()[0][0]
263     cronologia = re.sub("T.+Z", "", cronologia)
264     frt = ""
265     cosa = str(datetime.today().year)
266     frt = frt + cosa
267     cosa = str(datetime.today().month)
268     if len(cosa) == 1:
269         cosa = "0" + cosa
270     frt = frt + "-" + cosa
271     cosa = str(datetime.today().day)
272     if len(cosa) == 1:
273         cosa = "0" + cosa
274     frt = frt + "-" + cosa
275     if cronologia != frt:
276         return True
277     else:
278         return False    
279 
280 def variabili():
281     # setta le variabili principali e globali
282     global tutte
283     tutte = set(pagegenerators.AllpagesPageGenerator(namespace = 0))
284     global libri
285     libri = set()
286     for j in tutte:
287         f = re.search("/|\\|:|Pagina principale", j.title())
288         if f == None:
289             libri.add(j)
290       
291 if __name__ == "__main__":
292     try:
293         inizio()
294     finally:
295         wikipedia.stopme()
296         wikipedia.output("\n   Distributed under the terms of the GFDL\n         Created by [[it:b:User:G4]]")


Auguri[modifica]

Questo è lo script utilizzato da G4Bot per augurare buon Natale a tutti coloro che hanno contribuito almeno una volta nella mia talk

auguri.py v.1.00[modifica]

 1 # -*- coding: utf-8  -*-
 2 
 3 """
 4  
 5 #############################################
 6 #                                           #
 7 #  Distributed under the terms of the GFDL  #
 8 #        Created by [[it:b:User:G4]]        #
 9 #                                           #
10 #############################################
11  
12  
13 """
14 
15 import wikipedia
16  
17 def main():
18    sito = wikipedia.getSite(code='it',fam='wikibooks')
19    discussioneMia = wikipedia.Page(sito, "Discussioni utente:G4")
20    utenti = discussioneMia.contributingUsers()
21    for utente in utenti:
22        if utente == "G4":
23            continue
24        if utente == "G4Bot":
25            continue
26        discussione = wikipedia.Page(sito, "Discussioni utente:" + str(utente))
27        vecchio = discussione.get()
28        nuovo = vecchio + "\n\n==Auguri da G4 e G4Bot==\n\n{{subst:Utente:G4/Auguri}}"
29        wikipedia.output(">>>>>" + discussione.title() + "<<<<<\n")
30        wikipedia.showDiff(vecchio, nuovo)
31        choice = wikipedia.inputChoice(u"Auguro?",  ['Si', 'No'], ['S', 'N'], 'N')
32        if choice in ['S', 's']:
33            discussione.put(nuovo, "[[Wikibooks:Bot|Bot]]: Auguro buon Natale")   
34 
35 if __name__ == "__main__":
36         try:
37                 main()
38         finally:
39                 wikipedia.stopme()

Regex avanzamento - revisione 4[modifica]

E' in preparazione una regex per il sistemamento del template di avanzamento (che non deve essere a fine pagina). La regex è una bozza. "(\[\[(als|ar|ang|be|bg|bn|ca|cs|cv|cy|da|de|el|en|eo|es|et|fa|fr|fy|gl|he|hu|ia|id|ie|is|ja|ka|ko|ku|la|lt|mk|ml|na|nl|no|pl|pt|ro|ru|simple|sk|sl|sq|sr|su|fi|sv|ta|th|tl|tr|tt|uk|vi|zh):(.*)?\]\])*?(\n)?(\[\[[Cc]ategoria:.*\]\])*?(\n)?\{\{[Aa]vanzamento\|(00|25|50|75|100)%\}\}"

Disclaimer[modifica]

L'Utente:G4 ed il suo bot non si prendono responsabilità sull'uso degli script sovrastanti da parte di terzi. Pertanto comunicano che è da imputare la responsabilità a loro solo e soltanto se sono gli stessi a compiere gli edit.

Firmato