Python:APC.py

From Botwiki

Jump to: navigation, search

Chiede all'utente il log odierno e quindi il titolo della pagina da aiutare per cui aprire una proposta di cancellazione semplificata. A fine routine chiede un'altra pagina. Se viene data una stringa nulla la routine termina.

# -*- coding: utf8 -*-
import re, string, sys, getpass
import httplib
import wikipedia, config
import urllib
 
def apri_canc(pagina, log):
    crlf = chr(13) + chr(10) 
    site = wikipedia.getSite('it', 'wikipedia')
    pl = wikipedia.Page(site, pagina)
    testo_originale = pl.get()
 
    k = string.find(testo_originale, "{{A|") + string.find(testo_originale,"{{a|") + 1
    if k > -1:
        k1 = string.find(testo_originale,"|", k + 4)
        k4 = string.find(testo_originale,"}}", k + 4)
        motivo = testo_originale[k+4:k1]
        wikipedia.output("motivo:" + motivo)
        if motivo=="":
            motivo = "senza motivazione"
        else:
            motivo = "con motivazione "+ chr(34) + motivo + chr(34)
        k2 = string.find(testo_originale,"|", k1 + 1, k4)
        k3 = string.find(testo_originale,"|", k2 + 1, k4)
        if k3 == -1:
            k3 = string.find(testo_originale,"}}", k2 + 1)
        mese = testo_originale[k2+1:k3]
        wikipedia.output("mese:" + mese)
 
        testo_nuovo = testo_originale[:k] + "{{cancellazione}}" + testo_originale[k4+2:]
        pl.put(testo_nuovo, "Bot: procedura semiautomatica: proposta di cancellazione")
 
        pd = wikipedia.Page(site, "Wikipedia:Pagine da cancellare/" + pagina)
        try:
            testo_cancellazione = pd.get()
            wikipedia.output(u"la pagina e' stata gia' proposta per la cancellazione in passato")
        except:
            testo_cancellazione = ""
            wikipedia.output(u"apro la procedura di cancellazione")
            testo_cancellazione = "{{Cancellazione/richiesta|" + pagina +"}}" + crlf + crlf
            testo_cancellazione = testo_cancellazione + "Voce segnalata da aiutare " + motivo
            testo_cancellazione = testo_cancellazione + " da " + mese + ". --~~~~"
            pd.put(testo_cancellazione, "procedura semiautomatica: nuova proposta di cancellazione")
 
            wikipedia.output(u"concludo la procedura di cancellazione")
            pg = wikipedia.Page(site, "Wikipedia:Pagine da cancellare/Log/"+log)
            wikipedia.output(pg)
            testo_log = pg.get()
            l = string.find(testo_log, "!--inizio procedure interrotte-->")-1
            testo_nuovo_log = testo_log[:l]+"{{Wikipedia:Pagine da cancellare/"+pagina+"}}"+crlf
            testo_nuovo_log = testo_nuovo_log + testo_log[l:]
            pg.put(testo_nuovo_log, "procedura semiautomatica: aggiunta proposta di cancellazione")
 
    else:
        wikipedia.output(u"la pagina non e' segnalata da aiutare")
 
def urlname(title):
    """The name of the page this Page refers to, in a form suitable
       for the URL of the page."""
    title = title.replace(' ', '_')
    site = wikipedia.getSite()
    encodedTitle = title.encode(site.encoding())
    return urllib.quote(encodedTitle)
 
def main():
    pagina = "!"
    log = wikipedia.input('anno mese giorno - log odierno')
    while pagina != str():
        pagina = urlname(wikipedia.input('titolo della pagina da elaborare'))
        apri_canc(pagina, log)
 
if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()
Personal tools