Python:Comuni.py

From Botwiki

Jump to: navigation, search
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
"""
Italian bot for adding templates in some talk in NS0.
 
Bot per inserire {{Richiesta foto}} in una serie di comuni.
 
Parametro:
 
-cat:       Definisce la categoria da controllare (default: Comuni italiani)
 
"""
#
# Comuni.py 1.5
#
# (C) Filnik it.wikipedia
#
#
 
import wikipedia, catlib, re
 
class main:
    def __init__(self, lista, site = wikipedia.getSite()):
        self.lista = lista
        self.site = site
    def whattodo(self):
        pos2 = 0
        for pag in self.lista:
            page = pag.title()
            wikipedia.output(u'Processing %s...' % page)
            pagina = 'Discussione:%s' % page
            p = wikipedia.Page(self.site, page)
            p2 = wikipedia.Page(self.site, pagina)
            try:
                text = p.get()
                rim = rimanente(text, p2, page)
                rim.resto()
            except wikipedia.NoPage:
                text = ''
                rimanente(text, p2, page)
                rim = rimanente(text, p2, page)
                rim.resto()
 
class rimanente:
    def __init__(self, text, pagina, page):
        self.text = text
        self.pagina = pagina
        self.page = page
    def resto(self):
        pos = 0
        pos1 = 0
        pos3 = 0
        reg = r'(?:\[\[[Ii]mmagine:|\[\[[Ii]mage:|<gallery)'
        regexp = r"(?:provincia (di |della |dello |dei |del |dell')[^\[](.*?))\]\]"        
        while 1:
            r = re.compile(regexp, re.UNICODE)
            r7 = re.compile(reg, re.UNICODE)
            m7 = r7.search(self.text, pos3)
            if m7 == None:
                wikipedia.output(u"Ok, non c'e' un'immagine nella pagina del comune...")
            else:
                pos3 = m7.end()
                wikipedia.output(u"C'e' gia' l'immagine nel comune")
                return # Esco
            m = r.search(self.text, pos)
            if m == None:
                wikipedia.output(u'In %s non ho trovato niente...' % self.page)
                wikipedia.output(u"ATTENZIONE! Forse la regex e' sbagliata! Contattate Filnik!")
                break                
            pos = m.end()
            provincia = m.group(1)
            wikipedia.output(u"Ok, ho trovato che %s e' in provincia di %s" (self.page, provincia))
            if self.pagina.exists():      
                testo = self.pagina.get()
            else:
                continue
            regexp1 = '\{\{Richiesta foto\|(.*?)\}\}'
            r1 = re.compile(regexp1, re.UNICODE)
            m1 = r1.search(testo, pos1)
            if m1 == None:
                wikipedia.output(u"Perfetto, aggiungo {{Richiesta foto|%s}} alla pagina discussione" % provincia)
                newtext = u'{{Richiesta foto|%s}}\n' % provincia
                self.pagina.put(newtext + testo, "Bot: Aggiungo Template {{Richiesta foto}}")
                wikipedia.output(u"Messo il template!")
                botrun = main(0)
                botrun.whattodo()
            else:
                pos = m1.end()
                wikipedia.output(u"C'e' gia' {{Richiesta foto|%s}} nella pagina discussione, passo oltre..." % provincia)
            return # Esco
def work():
    site = wikipedia.getSite()
    CatTitle = "Comuni italiani"
    for arg in wikipedia.handleArgs():
        if arg.startswith('-cat'):
            if len(arg) == 4:
                CatTitle = wikipedia.input(u'Che categoria di comuni vuoi caricare?')
            else:
                CatTitle = arg[5:]
 
    cat = catlib.Category(site, "Category:" + CatTitle)
    botrun = main(cat.articles(), site)
    botrun.whattodo()
 
if __name__ == "__main__":
    try:
        work()
    finally:
        wikipedia.stopme()
Personal tools