Utente:G4/Script
Carte di Magic
modificainseriscicarte.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
modificaPer 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
modificaCon 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
modificaimport string
import wikipedia
def main():
crlf = "\n"
all = False
cart = "c:/"
file = "testo.txt"
args = wikipedia.handleArgs()
for currentArgument in args:
if currentArgument.startswith("-cartella:"):
cart = currentArgument[10:]
# Se l'utente dice da dove deve cominciare, lo memorizza
if currentArgument.startswith("-file:"):
file = currentArgument[6:]
# Se l'utente dice da dove deve cominciare, lo memorizza
if currentArgument.startswith("-always"):
all = True
nomefile = cart + file
f = open(nomefile, 'r')
for line in f.readlines():
w = line.split('<<')
i = len(w)
if i > 1 :
sito=wikipedia.getSite(code='it',fam='wikibooks')
pl = wikipedia.Page(sito, w[0])
testo_originale = pl.get()
testo_nuovo = testo_originale + crlf + w[1]
if (not all):
# Chiede la conferma prima di
# editare (se non è in modalità automatica)
wikipedia.output(">>>>>" + pl.title() + "<<<<<\n\n")
wikipedia.showDiff(testo_originale, testo_nuovo)
choice = wikipedia.inputChoice(u"Aggiungo questo testo?", ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
else:
choice = 'y'
if choice in ['A', 'a']:
all = True
choice = 'y'
if choice in ['Y', 'y']:
pl.put(testo_nuovo,'[[Wikibooks:Bot|Bot]]: Aggiungo: "' + w[1] + '"')
f.close()
if __name__ == "__main__":
try:
main()
except:
wikipedia.stopme()
raise
else:
wikipedia.stopme()
Avanzamento
modificaVersione evoluta di inseriscitesto.py.
Avanzamento.py v. 1.10
modificaimport string
import wikipedia
import re
def main():
crlf = "\n{{Avanzamento|"
crd = "%}}"
all = False
cart = "c:/"
file = "testo.txt"
argomenti = wikipedia.handleArgs()
for corrente in argomenti:
if corrente.startswith("-cartella:"):
cart = currentArgument[10:]
if corrente.startswith("-file:"):
file = currentArgument[6:]
if corrente.startswith("-always"):
all = True
nomefile = cart + file
fonte = open(nomefile, 'r')
for line in fonte.readlines():
testo = line.split('<<')
i = len(testo)
if i > 1 :
sito=wikipedia.getSite(code='it',fam='wikibooks')
pl = wikipedia.Page(sito, testo[0])
testo_originale = pl.get()
testo[1] = re.sub("\n", "", testo[1])
testo_nuovo = testo_originale + crlf + testo[1] + crd
if (not all):
wikipedia.output(">>>>>" + pl.title() + "<<<<<\n")
wikipedia.output("Si sta tentando di categorizzare\n la pagina come " + testo[1] + "%\n")
choice = wikipedia.inputChoice(u"Categorizzo?", ['Si', 'No', 'Tutti'], ['S', 'N', 'T'], 'N')
else:
choice = 'S'
if choice in ['T', 't']:
all = True
choice = 'S'
if choice in ['S', 's']:
pl.put(testo_nuovo,'[[Wikibooks:Bot|Bot]]: Categorizzo: "' + testo[1] + '%"')
fonte.close()
if __name__ == "__main__":
try:
main()
except:
wikipedia.stopme()
raise
else:
wikipedia.stopme()
Statistiche moduli
modificaQusto è lo script utilizzato per aggiornare la tabella del lavoro sporco.
Parametri
modifica-pagina:xxx
modificaIl 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
modificaIl parametro noVer indica al bot di non controllare la versione dello script.
Esempio: moduli.py -noVer
-noPag
modificaIl parametro noPag indica al bot di controllare doltanto la versione di moduli.py.
Esempio: moduli.py -noPag
-visuale
modificaIl parametro visuale indica al bot di restituire i risultati in locale e non aggiornando il template su wikibooks.
Esempio: moduli.py -visuale
-msg:xxx
modificaIl 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
modificaIl 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 ==
# -*- coding: utf-8 -*-
"""
#############################################
# #
# Distributed under the terms of the GFDL #
# Created by [[it:b:User:G4]] #
# #
#############################################
Description:
This script is used for updating [[it:b:Template:Statistiche manutenzioni]]
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 = True
global pagine
pagine = True
visuale = False
global categorie
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%"]
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'8.82'
sito = wikipedia.getSite(code='it',fam='wikibooks')
pagVer = wikipedia.Page(sito, "Template:Statistiche manutenzioni/Script/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='wikibooks')
global categorie
pagina = wikipedia.Page(sito, u'Template:Statistiche manutenzioni')
nuovo = u"{{Statistiche manutenzioni/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 + "}}"
nuovo = nuovo + u"\n<noinclude>[[Categoria:Coordinamento| ]]</noinclude>"
pagina.put(nuovo, "[[Wikibooks:Bot|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='wikibooks')
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()
moduli.py versione toolserver
modifica# -*- coding: utf-8 -*-
"""
#############################################
# #
# Distributed under the terms of the GFDL #
# Created by [[it:b:User:G4]] #
# #
#############################################
Description:
This script is used for updating [[it:b:Template:Statistiche manutenzioni]]
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():
msg = "conto lavoro sporco"
global pagine
pagine = True
global categorie
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%"]
aggiornamenti()
if (pagine):
statistiche(msg)
def aggiornamenti():
versione = u'8.82'
sito = wikipedia.getSite(code='it',fam='wikibooks')
pagVer = wikipedia.Page(sito, "Template:Statistiche manutenzioni/Script/Versione")
ver = u'' + pagVer.get()
if ver > versione:
global pagine
pagine = False
def statistiche(messaggio):
sito = wikipedia.getSite(code='it',fam='wikibooks')
global categorie
pagina = wikipedia.Page(sito, u'Template:Statistiche manutenzioni')
nuovo = u"{{Statistiche manutenzioni/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 + "}}"
nuovo = nuovo + u"\n<noinclude>[[Categoria:Coordinamento| ]]</noinclude>"
pagina.put(nuovo, "[[Wikibooks:Bot|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
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
Bollettini
modificaParametri
modifica-file:xxx
modificaIl 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# -*- coding: utf-8 -*-
"""
#############################################
# #
# Distributed under the terms of the GFDL #
# Created by [[it:b:User:G4]] #
# #
#############################################
"""
import wikipedia, pagegenerators, re
from catlib import Category
from datetime import datetime
def inizio():
#Esamina le opzioni e valuta che fare
nodisco = True
nowiki = True
pag = ""
global versione
versione = u"1.16.1"
global tem
tem = True
for argomento in wikipedia.handleArgs():
if argomento.startswith("-file:"):
nodisco = False
file = re.sub("_", " ", str(argomento[6:]))
if argomento.startswith("-wiki:"):
nowiki = False
pag = re.sub("_", " ", str(argomento[6:]))
if argomento == "-file":
nodisco = False
file = input("Inserisci il percorso del file: ")
file = re.sub("_", " ", file)
if argomento == "-wiki":
nowiki = False
pag = input("Inserisci il nome della pagina: ")
pag = re.sub("_", " ", pag)
if (nodisco) and (nowiki):
libro = raw_input('Inserisci il nome del libro: ')
if libro == "NoNo":
tem = False
elif libro !="No":
libro = re.sub("_", " ", libro)
variabili()
speciali()
scrivi(unicode(libro, 'utf-8'))
elif (nodisco) and not (nowiki):
variabili()
speciali()
sito = wikipedia.getSite(code='it',fam='wikibooks')
Pagina = wikipedia.Page(sito, pag)
testo = Pagina.get()
cerca = re.compile("# \[?\[?.*]?]?")
cerca = cerca.search(testo)
if cerca != None:
cerca2 = re.compile("# \[?\[?.*]?]?")
cerca2 = cerca2.findall(testo)
for g in cerca2:
g = re.sub("# |\[\[|]]", "", g)
g = re.sub("_", " ", g)
scrivi(str(g))
elif (nowiki) and not (nodisco):
variabili()
speciali()
f = open(file, 'r')
for linea in f.readlines():
libro = re.sub("\n", "", linea)
libro = re.sub("_", " ", libro)
scrivi(unicode(libro, 'utf-8'))
f.close()
if (tem):
bollettini()
senza()
def scrivi(libro):
# Crea e scrive il bollettino
sito = wikipedia.getSite(code='it',fam='wikibooks')
procedo = True
pagLibro = wikipedia.Page(sito, libro)
try:
pagLibro.get()
except wikipedia.IsRedirectPage:
procedo = False
wikipedia.output("\n" + pagLibro.title() + "e' un redirect.\n")
except wikipedia.NoPage:
procedo = False
Bollettino = wikipedia.Page(sito, libro + "/Sviluppo")
log = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/Log")
testo = "{{Bollettino\n"
testo = testo + "|Autore=~~~\n"
testo = testo + "|Data={{subst:LOCALTIME}} - {{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\n"
testo = testo + "|Libro=" + libro + "\n"
testo2 = ""
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"]
categorie2 = [ "00%", "25%", "50%", "75%", "100%", "Wik", "Control", "Aiutare", "Controlcopy", "Tradurre", "NPOV", "Canc" ]
categorie3 = categorie2 + [ "Orfane", "NoCat", "Red" ]
if (procedo):
Blocco = set(pagegenerators.PrefixingPageGenerator(libro + "/"))
Blocco.add(wikipedia.Page(sito, libro))
for numero in range(0, len(categorie)):
cat = Category(sito, "Categoria:" + categorie[numero])
Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
testo2 = testo2 + "\n\n==[[:Categoria:" + str(categorie[numero]) + "|" + str(categorie[numero]) + "]]==\n"
conta = 0
for page in Blocco.intersection(Blocco2):
conta = conta + 1
if page.title() == Bollettino.title():
continue
else:
testo2 = testo2 + "# [[" + page.title() + "]]\n"
if str(categorie[numero]) == "Moduli 100%":
if Bollettino.exists():
testo = testo + "|" + categorie2[numero] + "=" + str(conta - 1) + "\n"
else:
testo = testo + "|" + categorie2[numero] + "=" + str(conta) + "\n"
else:
testo = testo + "|" + categorie2[numero] + "=" + str(conta) + "\n"
utile = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/PagineOrfane")
Blocco2 = set(pagegenerators.LinkedPageGenerator(utile))
conta = 0
testo2 = testo2 + "\n\n==[[Progetto:Coordinamento/Bollettini/PagineOrfane|Orfane]]==\n"
for page in Blocco.intersection(Blocco2):
conta = conta + 1
if page.title == Bollettino.title:
continue
else:
testo2 = testo2 + "# [[" + page.title() + "]]\n"
testo = testo + "|Orfane=" + str(conta) + "\n"
wikipedia.output("Aggiunte le orfane")
utile = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/NonCategorizzate")
Blocco2 = set(pagegenerators.LinkedPageGenerator(utile))
conta = 0
testo2 = testo2 + "\n\n==[[Progetto:Coordinamento/Bollettini/NonCategorizzate|Non categorizzate]]==\n"
for page in Blocco.intersection(Blocco2):
conta = conta + 1
if page.title == Bollettino.title:
continue
else:
testo2 = testo2 + "# [[" + page.title() + "]]\n"
testo = testo + "|NoCat=" + str(conta) + "\n"
wikipedia.output("Aggiunte le non categorizzate")
conta = 0
testo2 = testo2 + "\n\n==Redirect==\n"
for pa in Blocco:
if pa.isRedirectPage():
titolo = re.sub(" ", "%20", pa.title())
conta = conta + 1
testo2 = testo2 + "# [http://it.wikibooks.org/w/index.php?title=" + titolo + "&redirect=no " + pa.title() + "]\n"
testo = testo + "|Red=" + str(conta) + "\n"
wikipedia.output("Aggiunti i redirect")
if Bollettino.exists():
for numero2 in range(0, len(categorie3)):
stringa = "\|" + categorie3[numero2] + "=.+"
tes = re.search(stringa, Bollettino.get())
tes2 = re.sub("\|" + categorie3[numero2] + "=", "", tes.group())
nuprec = int(str(tes2))
tes = re.search(stringa, testo)
tes2 = re.sub("\|" + categorie3[numero2] + "=", "", tes.group())
numor = int(str(tes2))
if nuprec > numor:
diff = nuprec - numor
testo = testo + "|%" + categorie3[numero2] + "=-\n|d" + categorie3[numero2] + "=" + str(diff) + "\n"
elif nuprec < numor:
diff = numor - nuprec
testo = testo + "|%" + categorie3[numero2] + "=+\n|d" + categorie3[numero2] + "=" + str(diff) + "\n"
else:
testo = testo + "|%" + categorie3[numero2] + "=0\n|d" + categorie3[numero2] + "=0\n"
else:
for numero2 in range(0, len(categorie3)):
testo = testo + "|%" + categorie3[numero2] + "=0\n|d" + categorie3[numero2] + "=0\n"
if Bollettino.exists():
conta = -2
else:
conta = -1
for a in range(0, len(Blocco)):
conta = conta + 1
if conta == -1 or conta == -2:
conta = 0
testo = testo + "|Moduli=" + str(conta) + "\n"
categorie = [ "Libri stub", "Libri 25%", "Libri 50%", "Libri 75%", "Libri 100%"]
for g in categorie:
cat = Category(sito, "Categoria:" + g)
Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
h = re.sub("Libri |%", "", g)
if h == "stub":
h = "00"
if pagLibro in Blocco2:
testo = testo + "|CaLib=" + h + "\n"
cat = Category(sito, "Categoria:Libri in vetrina")
Blocco2 = set(pagegenerators.CategorizedPageGenerator(cat))
if pagLibro in Blocco2:
testo = testo + "|Vet=Si\n"
global versione
testo = testo + "|Versione=" + versione + "\n}}\n\n"
testo3 = "\n{{Avanzamento|100%}}"
testo = testo + testo2 + testo3
if Bollettino.exists():
Bollettino.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno bollettino")
else:
Bollettino.put(testo, "[[Wikibooks:Bot|Bot]]: creo bollettino")
testo = log.get()
testo = testo + "\n#[[" + libro + "]] ([[" + libro + "/Sviluppo|bollettino]]) - {{subst:LOCALTIME}} - {{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}} - ~~~"
log.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno il log")
def bollettini():
# Aggiorna il numero dei bollettini se è vecchio
if vecchio("Template:NUMBEROFBOLLETTINI"):
sito = wikipedia.getSite(code='it',fam='wikibooks')
template = wikipedia.Page(sito, "Template:NUMBEROFBOLLETTINI")
global tutte
pagine = tutte
conta = 0
for y in pagine:
if y.title().endswith("/Sviluppo"):
conta += 1
template.put(str(conta), "[[Wikibooks:Bot|Bot]]: aggiorno numero di [[Aiuto:Bollettino|bollettini]]")
def senza():
# Aggiorna la lista di libri senza bollettino se cono vecchie
if vecchio("Progetto:Coordinamento/Bollettini/Senza"):
sito = wikipedia.getSite(code='it',fam='wikibooks')
global tutte
libr = tutte
pagSen = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/Senza")
global libri
sen = set()
for u in libri:
pa = wikipedia.Page(sito, u.title() + "/Sviluppo")
if not pa in tutte:
if u.isRedirectPage() == False:
sen.add(u)
testo = ""
for i in sen:
testo = testo + "# [[" + i.title() + "]] ([[" + i.title() + "/Sviluppo|bollettino]])\n"
pagSen.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno il log dei bollettini non creati")
def speciali():
# Aggiorna le pagine utili se sono vecchie
if vecchio("Progetto:Coordinamento/Bollettini/PagineOrfane"):
sito = wikipedia.getSite(code='it',fam='wikibooks')
orfane = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/PagineOrfane")
noncat = wikipedia.Page(sito, "Progetto:Coordinamento/Bollettini/NonCategorizzate")
testo = ""
for pa in sito.lonelypages(number = 10000, repeat = False):
testo = testo + "[[" + pa.title() + "]]\n"
orfane.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno pagina utile")
testo = ""
for pa in sito.uncategorizedpages(number = 10000, repeat = False):
testo = testo + "[[" + pa.title() + "]]\n"
noncat.put(testo, "[[Wikibooks:Bot|Bot]]: aggiorno pagina utile")
def vecchio(nomePag):
# Controlla se la pagina non è stata modificata da un giorno.
# Se sì restituisce True, altrimenti False
sito = wikipedia.getSite(code='it',fam='wikibooks')
pagina = wikipedia.Page(sito,nomePag)
cronologia = pagina.getVersionHistory()[0][0]
cronologia = re.sub("T.+Z", "", cronologia)
frt = ""
cosa = str(datetime.today().year)
frt = frt + cosa
cosa = str(datetime.today().month)
if len(cosa) == 1:
cosa = "0" + cosa
frt = frt + "-" + cosa
cosa = str(datetime.today().day)
if len(cosa) == 1:
cosa = "0" + cosa
frt = frt + "-" + cosa
if cronologia != frt:
return True
else:
return False
def variabili():
# setta le variabili principali e globali
global tutte
tutte = set(pagegenerators.AllpagesPageGenerator(namespace = 0))
global libri
libri = set()
for j in tutte:
f = re.search("/|\\|:|Pagina principale", j.title())
if f == None:
libri.add(j)
if __name__ == "__main__":
try:
inizio()
finally:
wikipedia.stopme()
wikipedia.output("\n Distributed under the terms of the GFDL\n Created by [[it:b:User:G4]]")
Auguri
modificaQuesto è 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# -*- coding: utf-8 -*-
"""
#############################################
# #
# Distributed under the terms of the GFDL #
# Created by [[it:b:User:G4]] #
# #
#############################################
"""
import wikipedia
def main():
sito = wikipedia.getSite(code='it',fam='wikibooks')
discussioneMia = wikipedia.Page(sito, "Discussioni utente:G4")
utenti = discussioneMia.contributingUsers()
for utente in utenti:
if utente == "G4":
continue
if utente == "G4Bot":
continue
discussione = wikipedia.Page(sito, "Discussioni utente:" + str(utente))
vecchio = discussione.get()
nuovo = vecchio + "\n\n==Auguri da G4 e G4Bot==\n\n{{subst:Utente:G4/Auguri}}"
wikipedia.output(">>>>>" + discussione.title() + "<<<<<\n")
wikipedia.showDiff(vecchio, nuovo)
choice = wikipedia.inputChoice(u"Auguro?", ['Si', 'No'], ['S', 'N'], 'N')
if choice in ['S', 's']:
discussione.put(nuovo, "[[Wikibooks:Bot|Bot]]: Auguro buon Natale")
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
Regex avanzamento - revisione 4
modificaE' 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
modificaL'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
- G · 4° è meglio
- G 4 · The Robot