Wikiproyecto:Bots/Repositorio/progreso-encarta.py

actualizar · discusión · código desprotegido  

Información de fichero
  • Nombre del fichero: progreso-encarta.py
  • Lenguaje: Python
  • Estado: no protegido
Detalles de edición
  • Detalles:
Código de BOTijo (disc. · contr. · bloq.), originalmente tarea001.py. Actualiza la plantilla {{ProgresoEncarta}}.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Copyright (C) 2009 emijrp <emijrp@gmail.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

""" Update a Encarta progress template """

from __future__ import generators
import re
import urllib

import wikipedia

def main():
    """ Update a Encarta progress template """
    
    wikies = wikipedia.Site("es", "wikipedia")
    prefix = "Usuario:Platonides/Encarta/"
    suffixes = ["Música", "Compositores_e_intérpretes", "Tauromaquia", 
                "Cine,_Radio_y_televisión", "Teatro", "Danza", 
                "Instrumentos_musicales", "Economía",
                "Antropología", "Psicología", "Sociología", 
                "Organizaciones", "Instituciones", "Ciencia_política", 
                "Ejército", "Derecho", "Educación", 
                "Calendarios_y_fiestas", "Escritores", 
                "Pintura._Dibujo._Artes_gráficas", "Artistas", 
                "Literatura", "Cuentos_y_leyendas", 
                "Literaturas_nacionales", 
                "Artes_nacionales_y_regionales", "Artes_decorativas", 
                "Arquitectura_y_monumentos", 
                "Lenguaje", "Movimientos_y_estilos", "Fotografía", 
                "Escultura", "Divisiones_administrativas", "Relieve", 
                "Poblaciones_del_mundo", "Parques_y_reservas_naturales",
                "Regiones_naturales_e_históricas", 
                "Islas_y_archipiélagos", "Ríos,_lagos_y_canales", 
                "Países", "Océanos_y_mares", "Conceptos_geográficos", 
                "Exploradores_y_descubridores", "Cartografía", 
                "Personajes_de_la_Historia", "Europa_Contemporánea", 
                "El_mundo_desde_1945", "Europa_Antigua", 
                "Europa_Moderna", "Latinoamérica:_periodo_colonial", 
                "Europa_Medieval", "África_y_Próximo_Oriente", 
                "Asia_y_Oceanía", "Estados_Unidos_y_Canadá", 
                "Arqueología_y_Prehistoria", 
                "Latinoamérica:_desde_la_Independencia", 
                "Latinoamérica:_periodo_precolombino", 
                "Principios_y_conceptos_biológicos", 
                "Reptiles_y_anfibios", 
                "Biografías:_Ciencias_de_la_vida", 
                "Anatomía._Fisiología", "Plantas", "Aves", "Medicina", 
                "Medio_ambiente", "Virus,_móneras_y_protistas", 
                "Invertebrados", "Peces", "Mamíferos", 
                "Ciencias_de_la_Tierra", 
                "Agricultura,_alimentación_y_ganadería", 
                "Algas_y_hongos", "Paleontología", "Metrología", 
                "Tecnología_militar", "Química", "Biografías", 
                "Matemáticas", "Física", "Electrónica._Informática", 
                "Ingeniería_y_construcción",
                "Astronomía._Ciencias_del_espacio", "Comunicaciones", 
                "Transportes", "Industria_y_recursos_naturales", 
                "Máquinas_y_herramientas", "Mitología", "Filosofía", 
                "Figuras_religiosas", "Ocultismo", 
                "Religiones._Grupos_religiosos", "Teología", 
                "Textos_sagrados", "Deportistas", "Deportes_y_juegos", 
                "Animales_de_compañía", "Aficiones"]
    output = u"{{subst:ProgresoEncarta/subst"
    totalred = 0
    totalblue = 0

    for suffix in suffixes:
        wikipedia.output("Analizando [%s]" % suffix)
        
        url = "/w/index.php?title=%s%s" % (prefix, urllib.quote(suffix))
        raw = wikies.getUrl(url)
        raw = raw.split("<div id=\"mw-content-text\"")[1].split("<div class=\"printfooter\">")[0]
        
        red = len(re.findall('class="new"', raw))
        blue = len(re.findall('/wiki/', raw))-1
        
        totalred += red
        totalblue += blue
        percent = blue * 1.0 / (red + blue) * 100
        
        wikipedia.output("%d redlinks, %d blue links, %.2f percent \
                          (red links)" % (red, blue, percent))
        output += u"|%.2f" % (percent)

    percent = totalblue * 1.0 / (totalred + totalblue) * 100
    output += u"|%.2f" % (percent)
    output += u"}}<noinclude>{{documentación}}</noinclude>"
    page = wikipedia.Page(wikies, "Plantilla:ProgresoEncarta")
    page.put(output, "BOT - Actualizando plantilla %.2f%%" % (percent))

if __name__ == "__main__":
    main()