Planning the future of Botwiki! - Help us bring Botwiki up to date, contribute to our strategy discussion, add bot scripts, and contribute manuals, guides, and tutorials! Almost anything related to bots, particularly those used to edit mediawiki, is welcome.
UNABLE TO EDIT? - We've experienced attacks by spambots lately and now require you to confirm your e-mail before you can edit (go to your preferences, enter an e-mail address, and request a confirmation e-mail, then go to your e-mail and click on the confirmation link). We also require new accounts to make a few edits and wait a few minutes before before you can create a page; however, if this is a problem contact us in #botwiki and we can manually confirm your account. Sorry for the inconvenience.
Python:APC.py
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()