Utente:G4/Script: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
Nessun oggetto della modifica
G4 (discussione | contributi)
Riga 1:
__TOC__
==Carte di Magic==
===<tt>importacarte.py</tt> v. 1.7500===
<source lang="python">
#!/usr/bin/env python
# -*- coding: utf-8 -*-
}
 
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(idCod_Carta) FROM magic_cards") # Conta le carte
num = int(db.store_result().fetch_row(how=1)[0]['COUNT(idCod_Carta)']) + 10001
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 Cod_Carta LIKE " + str(i))
dict = db.store_result().fetch_row(how=1)[0]
 
page = wikipedia.Page(wikipedia.getSite(), "Magic/Carte/" + str(dict['Nome_CartaSet']))
# Ottiene la pagina da modificare
wikipedia.output(">>>>> " + page.title() + " <<<<<")
if(page.exists()):
oldtxt = page.get()
else:
oldtxt = ''
newtxt = elaboraVoce(modelloVoce, dict)
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(page.get() + newtxt)
 
def elaboraVoce(modelloVoce, dict):
elencoSostituzioni = { # Sostituisce le variabili nel modello
'#Nome_Carta': dict['Nome_Carta'],
'#English': dict['English'],
'#Costo': dict['Costo'],
'#Tipo': dict['Tipo'],
'#F_C': dict['F_C'],
'#Rarita': dict['Rarita'],
'#Set': dict['Set'],
'#Testo': dict['Testo'],
}
}
 
nuovoTesto = massiveReplace(elencoSostituzioni, modelloVoce)
# Sostituzioni HTML->wikimarkup
nuovoTesto = re.sub("< */? *(em|EM) *>", "''", nuovoTesto)
return nuovoTesto
 
def massiveReplace(dict, text):
# Dato un testo ed un dizionario di sostituzioni
# usa le regex per il "find and replace"
for k in dict:
text = re.sub(k, dict[k], text)
return text
 
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</source>