Usuario:Chixpy/PyWikipediaBot/Licencias imágenes.py

De Inciclopedia
Ir a la navegación Ir a la búsqueda

Programa para poner las licencias de las imágenes que no tienen ninguna, y quitar la categoría de aquellas están en categoría:Imágenes

#!/usr/bin/python
# -*- coding: utf-8  -*-

from __future__ import division
import re
import wikipedia
import catlib, config, pagegenerators

# Esta lista debería crearla automáticamente....
PlantillasLicencia = [u'CC-by (imagen)', u'CC-by-2.5 (imagen)',
  u'CC-by-sa (imagen)', u'CC-by-sa-2.5 (imagen)',
  u'Dominio público (imagen)', u'FU Imagen Paint',
  u'FU Imagen para parodia', u'FU Imagen sin origen',
  u'Flickr4', u'Flickr5', u'GNUFDL (imagen)', u'Sin Licencia'
  ]

PlantillasOrigen = [u'Origen', u'origen']

class BasicBot:
  def __init__(self):
    self.cont = 0;
    self.site = wikipedia.getSite()
    self.cat = catlib.Category(self.site, "%s:%s" % (self.site.namespace(14), u'Imágenes'))  

  def run(self):
    wikipedia.setAction(u"Bot: Poniendo licencias, quitando de [[category:Imágenes]]")
    gen = pagegenerators.CategorizedPageGenerator(self.cat, recurse=False, start=None)
    Pagina = '1';
    while Pagina != None:
      Pagina = gen.next()
      self.treat(Pagina)
    return
      
  def treat(self, Pagina):
    self.cont += 1
    wikipedia.output(u'Página %(1)d: %(2)s' % {'1': self.cont, '2': Pagina.title()})
    try:
      Texto = Pagina.get()
    except:
      return
    Texto = wikipedia.replaceCategoryInPlace(Texto, self.cat, None)

    Plantillas = Pagina.templatesWithParams()

    if len(Plantillas) == 0:
      # No hay plantillas en la página
      # No nos liamos y añadimos "{{FU Imagen sin origen}}"
      wikipedia.output(u"No tiene plantillas")
      Texto += '\n{{FU Imagen sin origen}}'
    else:
      TieneLicencia = False
      TieneOrigen = False
      for i in Plantillas:
         if i[0] in PlantillasLicencia:
           wikipedia.output(u"Tiene una plantilla de licencias: %s" % i[0])
           TieneLicencia = True
         if i[0] in PlantillasOrigen:
           wikipedia.output(u"Tiene una plantilla de origen: %s" % i[0])
           TieneOrigen = True

      if not TieneLicencia:
        if TieneOrigen:
          wikipedia.output(u"Añadiendo {{FU Imagen para parodia}}")
          Texto += '\n{{FU Imagen para parodia}}'       
        else:
          wikipedia.output(u"Añadiendo {{FU Imagen sin origen}}")
          Texto += '\n{{FU Imagen sin origen}}'       
  
    Pagina.put(Texto, minorEdit = True)
    wikipedia.output(u"")
    return

def main():
  bot = BasicBot()
  bot.run()  

if __name__ == "__main__":
  try:
    main()
  finally:
    wikipedia.stopme()