Usuario:Er Komandante/templatekiller.py

# -*- coding: utf-8  -*-
import wikipedia
import pagegenerators
import catlib
import re
import codecs

pgnum=200
i=0

listado=u'Plantillas de wikipedia: \n\n'

paginadecontrol=u'Usuario:Er Komandante/plantillas'
resumen=u'Robot: control de plantillas'

# ajustar bien los meses: se ponen aquí el mes en curso y el pasado
mes1='ago 2007'
mes2='sep 2007'

scriptlog='#!/bin/bash\n'
lista= u'{| {{tablabonita}}\n! nombre (disc.)\n! edición 1\n'

# generadores
cat = catlib.Category(wikipedia.getSite(), 'Category:Wikipedia:Plantillas para borrar')
gen = pagegenerators.CategorizedPageGenerator(cat)
gen = pagegenerators.PreloadingGenerator(gen, pageNumber = pgnum)

# procesado de plantillas, elaboración del programa
for page in gen:
        #print page.title()

        chglabel=re.compile (ur'Plantilla Discusión:')
        nombre=chglabel.sub(u'Plantilla:',page.title())

        ap=wikipedia.Page(wikipedia.getSite(), nombre)
        wikipedia.output (nombre)
        try:
                texto=ap.get()
                lista=lista+ u'|-----\n| [['+ ap.title() +u']]' + u' ([['+ page.title() +u'|disc.]] · [[Especial:Whatlinkshere/'+ ap.title()+u'|uso]])'

                lst=page.getVersionHistory() #lectura del historial
                lista=lista+u'\n| '
                if len(lst)==1:
                        lista=lista + u' única edición en discusión: '+ lst[0][1] + u' por: {{u|'+lst[0][2]+ u'}}'

                        # comprueba que no se trata de una plantilla recientemente puesta a borrar, en caso contrario, se la salta. ¡hay que ajustar bien los meses!
                        #if mes2 in lst[0][1]:
                        if mes1 in lst[0][1] or mes2 in lst[0][1]:
                                print "Plantilla puesta a borrar recientemente, no se incluye en el lote a borrar."
                        else:
                                print "Insertando en la cola a borrar."
                                chl=re.compile (ur'Plantilla:')
                                nombreplantilla=chl.sub(u'',ap.title())

                                scriptlog=scriptlog+ 'python template.py -always -remove \"'
                                #scriptlog=scriptlog+ap.title()
                                scriptlog=scriptlog+nombreplantilla
                                scriptlog=scriptlog+ '\" -putthrottle:0 -namespace:0 '
                                scriptlog=scriptlog+ '-summary:\"Robot: Retirada de plantilla innecesaria y sin defender por al menos un mes, no cumple con el [[WP:ME|manual de estilo]].\"\n'

                lista=lista + u'\n'

        except wikipedia.NoPage:
                print 'no existe. Debe marcar la plantilla como borrada, si no lo está'
                txt=page.get()
                if u'{{innecesaria}}' in txt:
                    #chgtemplate=re.compile (ur'{{innecesaria}}')
                    chgtemplate=re.compile (ur'{{innecesaria}}')
                    txt=chgtemplate.sub(u'{{innecesaria}}',txt)
                    page.put (u'{{plantilla borrada}}\n\n'+txt, u'Robot: indicando plantilla borrada, escondiendo marca de innecesaria')

        except wikipedia.IsRedirectPage:
                print 'es una redirección..........'

        i=i+1
        #if i>=50:
                #break

# creando lista de plantillas
listaplantillas=wikipedia.Page(wikipedia.getSite(), paginadecontrol)
listaplantillas.put(lista, comment=resumen)

print "Total: ", i," plantillas listadas."

script=codecs.open("templatekiller.sh", "w", "utf-8")
script.write (scriptlog)
script.close()

# parando el programa
wikipedia.stopme()