Utente:Qualc1/BotScripts/scheletroPagina.py
Descrizione del programma
modificaNome del programma | scheletroPagina.py |
Autore | Qualc1 |
Descrizione |
Dopo aver letto la pagina Indice: specificata, inserisce in tutte le sue sottopagine Pagina: uno "scheletro" della pagina, |
Come si usa |
|
Dove si trova | Utente:Qualc1/BotScripts/scheletroPagina.py |
Codice del programma
modifica# -*- coding: utf-8 -*-
"""
Inserisce un "contenuto scheletro" nelle "pagine Pagina:" di un opera.
Parametri da passare allo script:
-titolo:XX - con XX che è il nome "pagina Indice:" dell'opera.
Esempio:
python scheletroPagina "-titolo:Indice:Il Volapük: Critici e Abolitori"
Effetto: viene inserito lo "scheletro" in tutte le "pagine Pagina:" contenute nell'indice.
"""
#TODO: sarebbe bene poter passare al bot anche un altro che specifica se
# volere inserire sempre/mai nella sezione footer i codici per le note ???
import pagegenerators
import wikipedia
class ScheletroPagina:
"""Si occupa di creare le "pagine Pagina:" di un opera rimpiendole con uno scheletro.
L'unico parametro di cui necessita è la "pagina Indice:" di un opera.
"""
header = u"""<div class="pagetext">"""
body = u"""{{Qualità pagina|25%}}<!-- INSERISCI DOPO QUESTA FRASE IL TESTO CHE VEDI A DESTRA -->"""
footer = u"""<br /><br />
----
<br /><references/>"""
wikipedia.action = u'Bot: creo lo scheletro della "(sotto)Pagina:"'
def __init__(self, paginaPrincipale):
"""
Argomenti:
* paginaPrincipale - la pagina principale dell'opera
"""
self.pagPrincipale = paginaPrincipale
self.chiedi = True
def run(self):
"""
Fa quel che deve.
"""
### ottieni pagina principale e le pagine a cui puntano i link che contiene.
sito = wikipedia.getSite()
pagina = wikipedia.Page(sito, self.pagPrincipale)
generatoreSottoPag = pagegenerators.LinkedPageGenerator(pagina)
for sottoPagina in generatoreSottoPag:
### scorri i link contenuti e controlla che siano "sottopagine Pagina:" e vuote.
titolo = sottoPagina.sectionFreeTitle()
if not titolo.startswith("Pagina:"):
print u"\"%s\" non è sottopagina \"Pagina:\". La salto" % titolo
continue
if sottoPagina.isCategory():
print u"\"%s\" è una categoria. La salto." % titolo
continue
if sottoPagina.exists():
print u"\"%s\" è già esistente. La salto." % titolo
continue
### Costruisco il testo da inserire (varia a seconda che ci siano le note nel footer)
if self.chiedi:
conFooter = wikipedia.inputChoice("\"%s\" contiene note?" % titolo, ["Si", "No"], ["s", "n"], "S")
conFooter = True if conFooter in ["S", "s"] else False
daInserire = u"<noinclude>" + self.header + u"</noinclude>" + self.body
if conFooter:
daInserire = daInserire + u"<noinclude>" + self.footer + u"</noinclude>"
### inserisco nella "sottopagina Pagina:" lo scheletro.
print "\nscrivo \":", daInserire, "\" in: ", titolo
sottoPagina.put(daInserire)
def main():
### gestisci gli argomenti
titolo = ""
for arg in wikipedia.handleArgs():
if arg.startswith("-titolo:"):
titolo = arg[len("-titolo:"):]
if titolo == "":
print u"Parametri non validi.\n\n\n**** ISTRUZIONI ***\n"
print __doc__
return
### usa la classe che gestisce questo bot
bot = ScheletroPagina(titolo)
bot.run()
if __name__ == "__main__":
try:
main()
except:
wikipedia.stopme()
raise
else:
wikipedia.stopme()