Purple exclamation mark.svg Planning the future of Botwiki! - Help us bring Botwiki up to date, contribute to our strategy discussion, add bot scripts, and contribute manuals, guides, and tutorials! Almost anything related to bots, particularly those used to edit mediawiki, is welcome.

Red exclamation mark.svg UNABLE TO EDIT? - We've experienced attacks by spambots lately and now require you to confirm your e-mail before you can edit (go to your preferences, enter an e-mail address, and request a confirmation e-mail, then go to your e-mail and click on the confirmation link). We also require new accounts to make a few edits and wait a few minutes before before you can create a page; however, if this is a problem contact us in #botwiki and we can manually confirm your account. Sorry for the inconvenience.

Python talk:Portale.py

From Botwiki
Jump to: navigation, search

Proposta piccola modifica per lo union

python è case sensitive, quindi se abbiamo questo caso:
-add:"anime e manga"
e nella pagina c'e' il template portale messo {{Portale|Anime e manga}} avremo

self.allArguments = [u'Anime e manga']
self.addPortals = [u'anime e manga']

e lo union fatto con questa riga

self.allArguments = self.allArguments.union(self.addPortals) # Add all the templates to add

ci darà questo risultato

self.allArguments = [u'anime e manga', u'Anime e manga']

che è errato! come soluzione offro la seguente:

diff = set()
for arg in self.allArguments:
  if not any(toAdd.lower() == arg.lower()
             for toAdd in self.addPortals):
    diff.add(arg)
self.allArguments = diff.union(self.addPortals)

so che sono tante righe, ma non mi viene in mente altro. queste righe prima raccolgono in diff tutti gli elementi di allArguments che non siano anche presenti in addPortals in modo case-insensitive, quindi uniscono i due insiemi.
ovviamente questa soluzione privilegia, in caso di uguaglianza case-insensitive, quella proposta in -add --PavelBOT 10:22, 4 May 2009 (UTC)

I miei complimenti a Pavelius. Ho parlato in chat con Pavelius, che mi ha fatto capire come funzione la modifica. Per me va bene. Uso spesso questo script, e ho notato che la modifica va fatta. Penso che anche per gli altri utenti sia una modifica importante. Io direi di aspettare un paio di giorni, quindi fare la modifica. Se poi Filnik o Pietrodn vogliono intervenire, meglio ancora. --Aushulz 18:45, 4 May 2009 (UTC)
Io dico solo che lo script non l'ho scritto io (ho fatto delle modifiche e si basa "su roba mia" ma non è mio) quindi se vuoi fare modifiche, per me non c'è nessun problema.. e non penso neanche per pietrodn (basta che funzioni.. ;-)) --Filnik 12:02, 6 May 2009 (UTC)
si ho chiesto anche a pietro ma non ha ancora risposto.
uhm, è passato troppo tempo, il mio estro mi ha portato a fare altre piccole modifiche XD ora il codice e' ancora piu' diverso... adesso è in grado di fare:
  • come descritto nella prima modifica di cui sopra distingue case-insensitive gli occhielli già esistenti (in modo da non permettere il doppio inserimento Metal e metal)
  • avverte e su richiesta modifica gli occhielli passati in add che non rispettano la terza regola della sintassi sulle minuscole
  • modifica in automatico gli occhielli esistenti che non rispettano la terza regola come punto precedente (ha la lista dei portali che può essere ovviamente aggiornata)
  • se ci sono più di 6 occhielli crea più template portali perché nel singolo template per la seconda regola sono previsti massimo 6 occhielli (da decidere se invece far beeppare e bloccare le modifiche per impedire tutti questi occhielli manualmente)
  • crea il summary in base alle effettive aggiunte e rimozioni
  • se è presente (o si sta aggiungendo) l'occhiello biografie rimuove gli occhielli geografici (come scritto qui, qui e qui)
  • permette di aggiungere commenti separati per le aggiunte, le rimozioni e alla fine del summary
  • si può agganciare anche da script python esterni (anche prima ma non si aveva il summary aggiornato)
basta vado a dormire. dove posso postare il codice per far fare testing? --PavelBOT 00:53, 8 May 2009 (UTC)

Suggerimento

Inutile far vedere le differenze e aspettare il comando se queste non ci sono:

 	if not(oldtext == newtext):
	    wikipedia.showDiff(oldtext, newtext)
            if not all:
                choice = wikipedia.inputChoice(u"Modificare?",  ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
            else:
                choice = 'y'
            if choice in ['A', 'a']:
                all = True
                choice = 'y'
            if choice in ['Y', 'y']:
                page.put_async(newtext, comment=summary)

ïɭPiʂḁɳʘ

modifica inserita ^^ --PavelBOT 09:46, 10 May 2009 (UTC)
Personal tools
Share