Utente:BimBot/Scripts: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Fix, replaced: <source → <syntaxhighlight (17), </source → </syntaxhighlight (17) |
|||
(17 versioni intermedie di 4 utenti non mostrate) | |||
Riga 2:
Copiate gente, copiate! (<small>Che poi va a fuoco il computer...</small>) :-D
== <
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 71:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Prende le pagine da [[Speciale:Lonelypages]], verifica che siano veramente orfane e inserisce l'avviso in quelle che non lo hanno già.
Script spostato [http://www.botwiki.sno.cc/wiki/Python:Lonelypages.py qui].
== <
Questo script fa semplicemente un edit in una pagina.
In verità serve per scovare i proxy aperti, agendo da sloggati.
Riga 83:
Utilizzabile solo da personale addestrato ;-)
<
#! -*- coding: utf-8 -*-
Riga 98:
pagina.put(newtxt)
wikipedia.stopme()
</syntaxhighlight>
== <
Questo script serve per aggiornare le [[Progetto:Coordinamento/Statistiche manutenzioni|statistiche del lavoro sporco]].
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 159:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Questo script serve per aggiornare le statistiche manutenzioni dei progetti tematici. Andrebbe generalizzato ed unito con lavorosporco.py.
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 208:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Questo script serve per aggiungere <
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 248:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
<
#!/usr/bin/env python
# -*- utf-8 -*-
Riga 289:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Script usato per aggiornare le citazioni del giorno sulla pagina principale.
<
#!/usr/bin/python
# -*- coding: utf-8 -*-
Riga 349:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Aggiorna il template contenente il numero di voci in vetrina.
<
# -*- coding: utf8 -*-
import wikipedia, catlib
Riga 390:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 437:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 465:
# Main Loop
for i in generator:
attenzioneIo = False # Dubbio su "I" o "An", che
titolo = i.title()
wikipedia.output(">>>>> " + titolo + " <<<<<")
nuovoTitolo = re.sub("^(The |A
if titolo == nuovoTitolo:
wikipedia.output("Non c'è nessun articolo. Prossima pagina...")
continue
if re.search("^(I |An )", titolo):
attenzioneIo = True
Riga 506:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
Prende le ultime notizie da 'news e le sbatte su 'pedia.
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 582:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <
<
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Riga 593:
# Costanti
site = wikipedia.getSite('it', 'wikipedia')
logPage = wikipedia.Page(site, 'Wikipedia:Copyviol inversi/Segnalazioni/Bot')
archPage = wikipedia.Page(site, 'Wikipedia:Copyviol inversi/Segnalazioni/Archivio/Bot')
copyCat = catlib.Category(site, 'Categoria:Copyviol inversi')
copyTemplate = u'Utente:
logTemplate = u'Utente:
def main():
Riga 607:
all = True
talkList = copyCat.articles(recurse=True)
logNew = ""
archNew = ""
Riga 616:
for j in templs:
logEntry = '\n' + '{{' + logTemplate + '|pagina=' + i.toggleTalkPage().title() + '|' + str('|').join(j[1]) + '}}'
if re.search("\|
archNew += logEntry
else:
Riga 631:
if not all:
choice = wikipedia.inputChoice(u"Aggiorno il log?", ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
else:
choice = 'y'
Riga 638:
choice = 'y'
if choice in ['Y', 'y']:
wikipedia.setAction("Bot: Aggiorno il log dei presunti [[WP:Copyviol inversi|copyviol
logPage.put(logNew)
Riga 651:
if not all:
choice = wikipedia.inputChoice(u"Aggiorno l'archivio?", ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
else:
choice = 'y'
Riga 658:
choice = 'y'
if choice in ['Y', 'y']:
wikipedia.setAction("Bot: Archivio i [[WP:Copyviol inversi|copyviol
archPage.put(archNew)
Riga 666:
finally:
wikipedia.stopme()
</syntaxhighlight>
== <kbd>importa_asteroidi.py</kbd> ==
<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import wikipedia, re, sys, codecs
def main():
args = wikipedia.handleArgs()
beginast = args[0]
beginok = False
templatefile = codecs.open("modelloasteroide.txt", "r", "utf-8")
testomodello = templatefile.read()
templatefile.close()
myfile = file(u'MPCORB.DAT')
for theLine in myfile:
if not theLine[0].isdigit(): continue
tupla = adatta(theLine)
if not tupla[31][0].isalpha(): continue
asteroidname = tupla[30] + ' ' + tupla[31]
if (asteroidname != beginast) and (not beginok): continue
beginok = True
print asteroidname
mypage = wikipedia.Page(wikipedia.getSite(), asteroidname)
# mypage = wikipedia.Page(wikipedia.getSite(), u'Utente:BimBot/Sandbox')
if mypage.exists():
continue
oldtxt = u''
newtxt = generatemplate(testomodello, tupla)
wikipedia.showDiff(oldtxt, unicode(newtxt))
print tupla
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in [u'Y', u'y']:
wikipedia.setAction(u'Nuovo asteroide')
mypage.put(newtxt)
myfile.close()
wikipedia.stopme()
def adatta(txt):
mtch=re.match('^([^ ]*) *(\d+)\.(\d+) *(-?\d+)\.([0-9]+) *([^ ]*) *(\d+)\.(\d+) *(\d+)\.(\d+) *(\d+)\.(\d+) *(\d+)\.(\d+) *(\d+)\.(\d+) *(\d+)\.(\d+) *(\d+)\.(\d+) *\d? *(....? *\d+) *(\d+) *(\d+) *(\d{4})-(\d{4}) *(\d+)\.(\d+) *(M-.) *([^ ]*) *([^ ]*?) *.{4} *\((\d+)\)(.*?) *(\d{8})', txt)
#print txt
grps = mtch.groups()
return grps
#
def generatemplate(modello, tupla):
elencosostituzioni = {
u'#nome': tupla[31],
u'#sottotitolo': tupla[30] + ' ' + tupla[31],
u'#magn_ass': tupla[1]+','+tupla[2],
u'#epoca': tupla[5],
u'#anomalia_media': tupla[6]+','+tupla[7],
u'#argomento_perielio': tupla[8]+','+tupla[9],
u'#nodo_ascendente': tupla[10]+','+tupla[11],
u'#inclinazione_asse_su_eclittica': tupla[12]+','+tupla[13],
u'#eccentricità': tupla[14]+','+tupla[15],
u'#semiasse_maggiore': tupla[18]+','+tupla[19],
u'#data': tupla[23]
}
for k in elencosostituzioni:
modello = re.sub(k, elencosostituzioni[k], modello)
return modello
main()
#K07B19V 15.7 0.15 K06CV 19.17898 347.71274 101.16774 10.08579 0.0550460 0.19108058 2.9853254 E2007-B48 13 1 16 days 0.37 MPC 0000 2007 BV19 20070124
</syntaxhighlight>
=== <kbd>modello_asteroide.txt</kbd> ===
<pre>
{{S|asteroidi}}
{{Corpo celeste
|tipo = Asteroide
|nome = #nome
|sottotitolo = #sottotitolo
|magn_ass = #magn_ass
|epoca = #epoca
|anomalia_media = #anomalia_media°
|argomento_perielio = #argomento_perielio°
|nodo_ascendente = #nodo_ascendente°
|inclinazione_asse_su_eclittica = #inclinazione_asse_su_eclittica°
|eccentricità = #eccentricità
|semiasse_maggiore = #semiasse_maggiore UA
|data = #data
}}
'''#nome''' è un [[asteroide]] del [[sistema solare]]. Scoperto nel [[#data]], presenta un'[[orbita]] caratterizzata da un [[semiasse maggiore]] pari a #semiasse_maggiore [[Unità Astronomica|UA]] e da un'[[eccentricità orbitale|eccentricità]] di #eccentricità, inclinata di #inclinazione_asse_su_eclittica° rispetto all'[[eclittica]].
{{Asteroide}}
[[Categoria:Asteroidi del sistema solare|#nome]]
</pre>
== <kbd>discussioneanonimi3.py</kbd> ==
<syntaxhighlight lang="python">
# -*- coding: utf-8 -*-
import wikipedia, re, commands
def main():
wikipedia.handleArgs()
talkpages = wikipedia.Page(wikipedia.getSite(), u'Wikipedia:Elenchi generati offline/Discussioni utenti anonimi').linkedPages();
for talk in talkpages:
static=False
if talk.namespace() != 3 or not talk.exists() or not talk.canBeEdited():
continue
wikipedia.output(">>>>> " + talk.title() + " <<<<<")
oldtext = talk.get()
if checkStatic(talk.titleWithoutNamespace()):
newtext = oldtext + u'\n[[Categoria:IP statici]]'
wikipedia.showDiff(oldtext, newtext)
wikipedia.setAction(u'Categorizzo in [[:Categoria:IP statici]]')
talk.put(newtext)
else:
newtext = u'{{BenvenutoIP}}'
match = re.search("\{\{IPcondiviso.*?\}\}", oldtext)
if match != None:
newtext = match.group() + '\n' + newtext
wikipedia.showDiff(oldtext, newtext)
wikipedia.setAction(u'Svuotata pagina ed inserito benvenuto.')
talk.put(newtext)
def checkStatic(ip):
response = commands.getoutput("dig -x " + ip + " +short")
wikipedia.output('Dig response: ' + response)
return bool(re.search('[Ss]tatic', response))
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</syntaxhighlight>
== <kbd>prefissiTelefonici.py</kbd> ==
<syntaxhighlight lang="python">
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wikipedia, pagegenerators, re, catlib
note1 = u"<ref>[http://www2.agcom.it/provv/d_8_01_CIR.htm Delibera n. 8/01/CIR]</ref>"
note2 = u"<ref>[http://www.paginebianche.it/prefissi-telefonici?pref=%s Elenco sulle Pagine Bianche]</ref>"
sezioneNote = u"== Note ==\n<references />\n"
oggetto = u"Aggiungo le fonti per il prefisso telefonico ([[Wikipedia:Bot/Richieste#Aggiungere_fonte_ai_prefissi_telefonici_italiani|richiesta]])."
def main():
all = False
args = wikipedia.handleArgs()
startWith=""
for argh in args:
if argh.startswith("-start:"):
startWith = argh[len("-start:"):]
mySite = wikipedia.getSite(code='it', fam='wikipedia')
cat = catlib.Category(mySite, "Categoria:Prefissi telefonici italiani")
gen = pagegenerators.CategorizedPageGenerator(cat, False, startWith)
for p in gen:
voceOk = 1
try:
oldText = p.get()
except wikipedia.NoPage:
wikipedia.output(currentPage.title() + " does not exist!")
continue
except wikipedia.IsRedirectPage:
p = p.getRedirectTarget()
oldText = p.get()
# Per sicurezza se non esegue tutti i match salta la voce
if re.search("== ?[Nn]ote ?==", oldText):
continue
# Ottengo il prefisso "nudo" dal titolo
m = re.match("^(\d+)", p.title());
if m == None:
continue
prefisso = m.group(1)
newText = oldText
# Sostituzione 1
m = re.subn(r"il \[\[prefisso telefonico\]\] del \[\[distretto telefonico\|distretto\]\] di \[\[(.*?)\]\],",
r"il [[prefisso telefonico]] del [[distretto telefonico|distretto]] di [[\1]]" + note1 + ",",
newText, 1)
if m[1]==0:
continue
else:
newText = m[0]
# Sostituzione 2
m = re.subn(r"Il distretto di (.*?) comprende (.*?)\.\s+\{\{[Cc]ompartimento",
r'Il distretto di \1 comprende \2 ' + note2 % prefisso + ".\n\n" + sezioneNote + "\n{{Compartimento",
newText, 1)
if m[1]==0:
continue
else:
newText = m[0]
# Sostituzione 3
newText = re.sub("\{\{[Ff](\|.*?)\}\}\s+", "", newText, 1)
# Visualizza le differenze, chiede e salva
wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
% p.title())
wikipedia.showDiff(oldText, newText)
if not all:
choice = wikipedia.inputChoice(u"Modificare?",
['Yes', 'No', 'All', "Quit"],
['y', 'N', 'a', 'q'], 'N')
else:
choice = 'y'
if choice in ['A', 'a']:
all = True
choice = 'y'
if choice in ['Y', 'y']:
p.put_async(newText, minorEdit=False, comment=oggetto)
elif choice in ['Q', 'q']:
return
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</syntaxhighlight>
== <code>vocicorrelate.py</code> ==
<syntaxhighlight lang="python">
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Lo script rimuove i piped links e i corsivi dai link nelle "Voci correlate".
# Si lancia con gli argomenti supportati da pagegenerators.py
#
# Esempi:
# $ python vocicorrelate.py -catr:Informatica
# $ python vocicorrelate.py -start:!
#
# Autore: Pietrodn
import wikipedia, pagegenerators, re
oggetto = u"Uniformo le [[Aiuto:Voci correlate|voci correlate]]"
def main():
all = False
args = wikipedia.handleArgs()
genf = pagegenerators.GeneratorFactory();
for argh in args:
genf.handleArg(argh)
mySite = wikipedia.getSite(code='it', fam='wikipedia')
gen = genf.getCombinedGenerator()
if not gen:
return
for p in gen:
try:
oldText = p.get()
except wikipedia.NoPage:
wikipedia.output(currentPage.title() + " does not exist!")
continue
except wikipedia.IsRedirectPage:
p = p.getRedirectTarget()
oldText = p.get()
newText = oldText
# Cerco il contenuto della sezione voci correlate:
# inizia dal titolo di sezione e finisce alla prima riga che non inizia con un punto elenco
m = re.search(r"(?s)==\s*[Vv]oci correlate\s*==(.*?)\n[^*]", oldText)
# Niente "voci correlate"? Passo alla prossima voce
if not m:
continue
vcorrTextOld = m.group(1)
vcorrText = vcorrTextOld
# Tolgo il corsivo
vcorrText = re.sub(r"''\[\[(.*?)\]\]''", r"[[\1]]", vcorrText);
# Tolgo i piped link
vcorrText = re.sub(r"\[\[(.*?)\|(.*?)\]\]", r"[[\1]]", vcorrText);
# Se non ho effettuato modifiche nella sezione "voci correlate", avanti alla prossima voce
if vcorrText == vcorrTextOld:
continue
# Re-innesto la sezione voci correlate al suo posto nella voce
newText = re.sub(r"(?s)==\s*[Vv]oci correlate\s*==(.*?)(\n[^*])", r"== Voci correlate ==" + vcorrText + r"\2", oldText)
# Visualizza le differenze, chiede e salva
wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
% p.title())
wikipedia.showDiff(oldText, newText)
if not all:
choice = wikipedia.inputChoice(u"Modificare?",
['Yes', 'No', 'All', "Quit"],
['y', 'N', 'a', 'q'], 'N')
else:
choice = 'y'
if choice in ['A', 'a']:
all = True
choice = 'y'
if choice in ['Y', 'y']:
p.put_async(newText, minorEdit=True, comment=oggetto)
elif choice in ['Q', 'q']:
return
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
</syntaxhighlight>
== Eliminazione parametro "Stato" dal [[Template:Edificio religioso]] ==
Codice da inserire in <kbd>user-fixes.py</kbd>:
<syntaxhighlight lang="python">
import re
def EdRel(match):
# Le parentesi devono essere bilanciate, e le prime parentesi graffe trovate non devono essere chiuse
aperte = re.findall(ur'\{\{', match.group(1))
chiuse = re.findall(ur'\}\}', match.group(1))
if (len(aperte) == len(chiuse)) and (not re.match("(?s)[^{}]*\}\}.*", match.group(1))):
return ur"{{Edificio religioso" + match.group(1)
else:
return match.group() # Unchanged
fixes['EdificioReligioso'] = {
'regex': True,
'msg': {
'_default':u'Eliminazione parametro obsoleto del [[Template:Edificio religioso]] ([[Wikipedia:Bot/Richieste#Eliminazione_campo_dal_template_.22Edificio_religioso.22|richiesta]])',
},
'replacements': [
(ur"(?s)\{\{\s*[Ee]dificio[ _]religioso(.*?)\|\s*[Ss]tato\s*=\s*([^|\n]*)\n", EdRel),
],
'exceptions': {
'inside-tags': ['comment', 'header', 'pre', 'source', 'ref', 'table', 'hyperlink', 'gallery', 'link', 'interwiki' ],
}
}
</syntaxhighlight>
|