Utente:BimBot/Scripts
Copiate gente, copiate! (Che poi va a fuoco il computer...) :-D
redirectlinks.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#################################################################################################
# #
# redirectlinks.py #
# #
# This script corrects links to a redirect. #
# #
# Syntax: redirectlinks.py [options] #
# Options: -dest:Destpage #
# It gets all redirects which link to Destpage and corrects their references. #
# #
# -page:Redirpage #
# It corrects all the references of the specified redirect. #
# #
# You must specify the -page OR the -dest option. #
# #
#################################################################################################
import re, wikipedia
def main():
args = wikipedia.handleArgs()
for argh in args:
if argh.startswith("-dest:"):
destPage = wikipedia.Page(wikipedia.getSite(), argh[6:])
redirs = destPage.getReferences(redirectsOnly = True)
if argh.startswith("-page:"):
redirs = [wikipedia.Page(wikipedia.getSite(), argh[6:])]
if not redirs[0].isRedirectPage():
raise wikipedia.IsNotRedirectPage(redirs[0])
destPage = redirs[0].linkedPages()[0]
wikipedia.output(destPage.title())
for r in redirs:
redirRefPages = r.getReferences()
for ref in redirRefPages:
wikipedia.output("Correcting links in page: " + ref.title())
oldtext = ref.get()
newtext = oldtext
linkRegexp = "\[\[" + re.escape(r.title()) + "(\|[^]]+)?\]\]"
ptrn = re.compile(linkRegexp, re.IGNORECASE)
linkMatch = re.search(ptrn, newtext)
while linkMatch != None:
oldLink = newtext[linkMatch.start():linkMatch.end()]
afterLink = linkMatch.group(1)
if afterLink == None:
afterLink = ""
newLink = re.sub(linkRegexp, "[[" + destPage.title() + afterLink + "]]", oldLink)
choice = wikipedia.inputChoice("Replacing link " + oldLink + " to " + newLink + ".\nDo you want to change the link?", ["Accept", "Change"], ['a', 'c'], 'a')
if choice in ['C', 'c']:
linkText = wikipedia.input("Insert link (without square brackets): [[" + destPage.title())
newLink = "[[" + destPage.title() + linkText + "]]"
newtext = newtext[:linkMatch.start()] + newLink + newtext[linkMatch.end():]
linkMatch = re.search(ptrn, newtext)
wikipedia.showDiff(oldtext, newtext)
choice = wikipedia.inputChoice(u'Modifico?', ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
ref.put(newtext, unicode("Correcting links to redirect: " + r.title()))
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
lonelypages.py
Prende le pagine da Speciale:Lonelypages, verifica che siano veramente orfane e inserisce l'avviso in quelle che non lo hanno già. Script spostato qui.
proxyaperti.py
Questo script fa semplicemente un edit in una pagina. In verità serve per scovare i proxy aperti, agendo da sloggati. Occorre però crackare wikipedia.py. Utilizzabile solo da personale addestrato ;-)
#! -*- coding: utf-8 -*-
import wikipedia
args = wikipedia.handleArgs()
pagina = wikipedia.Page(wikipedia.getSite(), args[0])
oldtxt = pagina.get()
newtxt = oldtxt + '\nSono un vandalo malvagissimo. Non bloccatemi. --~~~~'
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice('Posso procedere?', ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction('Bot anonimo per individuare proxy aperti firmato Pietrodn. Non bloccare please.')
pagina.put(newtxt)
wikipedia.stopme()
lavorosporco.py
Questo script serve per aggiornare le statistiche del lavoro sporco.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re, wikipedia
from templatecount import TemplateCountRobot
def main():
args = wikipedia.handleArgs()
wikiSite = wikipedia.getSite()
counter = TemplateCountRobot()
templates = { 'A': 'Aiutare',
'C': 'Controllare',
'Categorizzare': 'Da categorizzare',
'Controlcopy': 'Controlcopy',
'E': 'Ency',
'O': 'Orfane',
'P': 'NPOV',
'Senzafonti': 'Senza fonti',
'S': 'Stub',
'T': 'Tradurre',
'U': 'Unire',
'W': 'Wikificare',
}
pagina = wikipedia.Page(wikiSite, 'Progetto:Coordinamento/Statistiche manutenzioni')
vecchieStatistiche = pagina.get()
templateCountDict = counter.countTemplates(templates.keys(), None)
for k in templateCountDict:
sottopagina = wikipedia.Page(wikiSite, 'Progetto:Coordinamento/Statistiche manutenzioni/' + templates[k])
oldtxt = sottopagina.get()
newtxt = re.sub("</noinclude>.*", "</noinclude>" + str(templateCountDict[k]), oldtxt)
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Conto lavoro sporco')
sottopagina.put(newtxt)
findRegexp = "\d+:\d+, \d+ .{3} \d+ \(.*?\)"
replaceRegexp = "~~~~~"
nuoveStatistiche = re.sub(findRegexp, replaceRegexp, vecchieStatistiche)
wikipedia.showDiff(vecchieStatistiche, nuoveStatistiche)
choice = wikipedia.inputChoice(u"Aggiorno le date?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Aggiorno le date del conto')
pagina.put(nuoveStatistiche)
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
statistichemanutenzioni.py
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 -*-
import re, wikipedia
from catlib import Category
def main():
args = wikipedia.handleArgs()
wikiSite = wikipedia.getSite()
categories = { u'Da controllare per copyright - psicologia': 'Controlcopy',
u'Da verificare per enciclopedicità - psicologia': 'Ency',
u'Da aiutare psicologia': 'Aiutare',
u'Pagine orfane - psicologia': 'Orfane',
u'Da controllare psicologia': 'Controllare',
u'Segnalazioni NPOV psicologia': 'NPOV',
u'Voci mancanti di fonti - psicologia': 'Senza fonti',
u'Stub psicologia': 'Stub',
u'Da tradurre - psicologia': 'Tradurre',
u'Da unire - psicologia': 'Unire',
u'Da wikificare psicologia': 'Wikificare',
}
pagina = wikipedia.Page(wikiSite, 'Progetto:Psicologia/Statistiche manutenzioni')
vecchieStatistiche = pagina.get()
for k in categories:
currentCategory = Category(wikiSite, 'Category:' + k)
categoryCount = len(currentCategory.articlesList(recurse=True))
sottopagina = wikipedia.Page(wikiSite, 'Progetto:Psicologia/Statistiche manutenzioni/' + categories[k])
oldtxt = sottopagina.get()
newtxt = str(categoryCount)
wikipedia.showDiff(oldtxt, newtxt)
choice = wikipedia.inputChoice(u"Modificare?", ['Yes', 'No'], ['y', 'N'], 'N')
if choice in ['Y', 'y']:
wikipedia.setAction(u'Conto lavoro sporco')
sottopagina.put(newtxt, "Aggiorno statistiche manutenzioni")
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
frazioni.py
Questo script serve per aggiungere {{Tmp|Frazione}} a tutte le frazioni che non contengono il template {{Frazione}}.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re, wikipedia, catlib
def main():
args = wikipedia.handleArgs()
all = False
frazTemplateRegexp = re.compile("\{\{ *([Tt]emplate: *)?[Ff]razione")
tmpTemplateRegexp = re.compile("\{\{ *([Tt]emplate: *)?[Tt]mp *\| *[Ff]razione")
frazCat = catlib.Category(wikipedia.getSite(), "Categoria:Frazioni comunali italiane")
frazList = frazCat.articles(recurse=True)
for currentFraz in frazList:
try:
oldtxt = currentFraz.get()
except wikipedia.IsRedirectPage:
continue
if (re.search(frazTemplateRegexp, oldtxt) != None) or (re.search(tmpTemplateRegexp, oldtxt) != None):
continue
wikipedia.output(">>>>> " + currentFraz.title() + " <<<<<")
newtxt = "{{Tmp|Frazione}}\n" + oldtxt
wikipedia.showDiff(oldtxt, newtxt)
if not all:
choice = wikipedia.inputChoice(u'Aggiungo la segnalazione di template mancante?', ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
if choice in ['A', 'a']:
all = True
if (choice in ['Y', 'y']) or all:
currentFraz.put(newtxt, unicode("Template Frazione mancante: aggiungo {{Tmp|Frazione}}"))
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()
monitoraggioimmagini.py
#!/usr/bin/env python
# -*- utf-8 -*-
import wikipedia, catlib, re
args = wikipedia.handleArgs()
all = False
for currentArgument in args:
if currentArgument.startswith("-always"):
all = True
categoria = catlib.Category(wikipedia.getSite('it', 'wikipedia'), 'Categoria:Progetto:Aree protette/Tabella monitoraggio automatico - immagini nc')
discussioni = categoria.articles()
try:
for i in discussioni:
if not i.isTalkPage():
continue
talkText = i.get()
associatedPage = i.toggleTalkPage()
pageText = associatedPage.get()
match = re.search('\[\[(image|immagine):', pageText, re.IGNORECASE)
if match == None:
wikipedia.output(">>>>> " + associatedPage.title() + " <<<<<")
newTalkText = re.sub('\|immagini=\n', '|immagini=d\n', talkText)
wikipedia.showDiff(talkText, newTalkText)
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']:
wikipedia.setAction(u'Non ci sono immagini: valutazione "d"')
i.put(newTalkText)
finally:
wikipedia.stopme()