Python:RevertBotCleaner.py

From Botwiki

Jump to: navigation, search
#!/usr/bin/python
# -*- coding: utf-8  -*-
"""
Script written by Filnik it.wiki to clean [[w:it:User:RevertBot/Report]]
"""
 
# Version: 1.5
# License: MIT
 
import wikipedia
import re
 
def main():
    wikipedia.output(u'Starting...')
    addtext = """{{RevertBot|mese={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}"""
    templateName = 'Template:RevertBot'
    busypage = 'Utente:RevertBot/Report'
    site = wikipedia.getSite()
    wikipage = wikipedia.Page(site, busypage)
    revertText1 = wikipage.get()
    wikipedia.output(u'Provo a sistemare la pagina del RevertBot...')
    revertText = re.sub('\n+', '\n', revertText1)
    #revertText = re.sub('\n\n', '\n', revertText)
    if revertText != revertText1:
        wikipedia.output(u'Trovato qualcosa da sistemare...')
        wikipage.put(revertText, 'Bot: Tolgo i doppi spazi')
    else:
        wikipedia.output(u'...tutto ok...')
    copyvioledpages = re.findall('=== ?\[\[(.*?)\]\](.*?) ?===', revertText)
    skip = True
    lista = list()
    ok = False
    wikipedia.output(u'Inizio a controllare dai ref...')
    templatePage = wikipedia.Page(site, templateName)
    for refPagina in templatePage.getReferences(True, True, True):
        RefOk = False
        for l in copyvioledpages:
            if refPagina.title() in l:
                wikipedia.output(u'%s found, ok.' % refPagina.title())
                RefOk = True
                break
        if RefOk == False:
            try:
                testoRef = refPagina.get()
            except wikipedia.NoPage():
                wikipedia.output(u'Page not found!')
                continue
            testoNuovo = re.sub(r'\{\{([Tt]emplate:|)[Rr]evertBot(.*?)?\}\}')
            refPagina.put(testoNuovo, "Bot: Tolgo template RevertBot dato che e' stata tolta la segnalazione")               
    for i in copyvioledpages:
        for p in ['', ' ', '  ']:
            if i[1] == p:
                skip = False
                break
        if skip == True:
            continue
        else:
            if 1:#if 'tomba del tuffatore' == i[0].lower():
                ok = True
            if ok == True:
                lista.append(i[0])
            else:
                continue
    wikipedia.output(u'Inizio ora a controllare i template apposti...')        
    for article in lista:            
        articlewiki = wikipedia.Page(site, article)
        try:
            wikipedia.output(u'Loading %s...' % article)
            text = articlewiki.get()
        except Exception, e:
            if 'KeyboardInterrupt' in e:
                exit()
            wikipedia.output(u'%s skipped...' % article)
            continue
        if 'controlcopy' in text.lower():
            wikipedia.output(u'Controlcopy already put in the page!')
        elif '{{revertbot' in text.lower():
            wikipedia.output(u'{{RevertBot}} already found')
        else:
            newtext = addtext + '\n' + text
            articlewiki.put(newtext, 'Bot: Aggiungo avviso controlcopy')
    wikipedia.output(u'Program finished.')
if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()
Personal tools