টেমপ্লেট:সংখ্যা গণনা/নথি

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে
  1. -*- coding: utf-8 -*-
  2. Código GPL, autor: BigSus
  3. http://es.wikipedia.org/wiki/Usuario:Bigsus-bot/Variables.py

import wikipedia, time, re from urllib import urlopen from operator import itemgetter

  1. modo = None actualizará los listados de todos los wikis

modo = 'es'

parametros = {

   'ca': {
       'pagina':    u'Plantilla:Variables/dades',
       'resumen':   u'Bot: Actualitzant plantilla',
       'principio': u,
       'final':     u
   },
   'en': {
       'pagina':    u'টেমপ্লেট:সংখ্যা গণনা/data',
       'resumen':   u'Bot: Automatic update of variables',
       'principio': u,
       'final':     u
   },
   'es': {
       'pagina':    u'Plantilla:Variables/datos',
       'resumen':   u'Bot: Actualización automática de variables',
       'principio': u,
       'final':     u'\n\nCategoría:Wikipedia:Plantillas de apoyo'
   },
   'tr': {
       'pagina':    u'Şablon:Viki istatistikleri/veri',
       'resumen':   u'Bot: Automatic update of variables',
       'principio': u,
       'final':     u'\n\nKategori:Vikipedi şablonları'
   }

}


def generar_datos():

   """
   Recorrer todos los wikis en busca de los datos que necesitamos.
   Se devuelve un array con todos los datos para procesarlos después.
   """
   modo2 = modo
   if modo2==None:
       modo2 = 'todos'
   # Idiomas para revisar (listado automática)
   lista_idiomas = wikipedia.Site.languages(wikipedia.Site('es', 'wikipedia'))
   
   wikipedia.output('Iniciando variables.py...\nFecha y hora al comenzar el análisis: \03{lightred}%s\03{default}. Idioma: \03{lightred}%s\03{default}' % (time.strftime("%d-%m-%Y %H:%M:%S", time.localtime()), modo2))
   wikipedia.output('Se han encontrado %s idiomas para revisar.\n' % len(lista_idiomas))
   wikipedia.output('\t+---------+------------+-----------+\n\t|idioma ··|·· total  ··|·· arts. ··|\n\t+---------+------------+-----------+')
   # Variables comunes
   parserData = r"total=(?P<total>.*);good=(?P<good>.*);views=(?P<views>.*);edits=(?P<edits>.*);users=(?P<users>.*);activeusers=(?P<activeusers>.*);admins=(?P<admins>.*);images=(?P<images>.*);jobs=(?P<jobs>.*)"
   partesPage = r""
   articulosT = 0
   ficherosT = 0
   paginasT = 0
   usuariosT = 0
   usuariosactivosT = 0
   adminsT = 0
   editsT = 0
   datos = []
   i = 0
   for idioma in lista_idiomas:
       texto = urlopen('http://%s.wikipedia.org/wiki/Special:Statistics?action=raw' % (idioma)).read()
       param = re.search(parserData, texto)
       wikipedia.output(' %s	\03{lightpurple}%s\03{default}	... %s	... %s' % (i+1, idioma, param.group('total'), param.group('good')))
       datos.append([idioma, int(param.group('good')), int(param.group('images')), int(param.group('total')), int(param.group('users')), int(param.group('activeusers')), int(param.group('admins')), int(param.group('edits'))])
       # Calcular totales
       articulosT += datos[i][1]
       ficherosT += datos[i][2]
       paginasT += datos[i][3]
       usuariosT += datos[i][4]
       usuariosactivosT += datos[i][5]
       adminsT += datos[i][6]
       editsT += datos[i][7]
       i += 1
   # Ordenar por número de artículos
   datos.sort(key=itemgetter(1), reverse=True)
   # Añadir el total al final de la lista
   datos.append(['total', articulosT, ficherosT, paginasT, usuariosT, usuariosactivosT, adminsT, editsT])
   return datos


def generar_texto(datos, idioma):

   """
   Genera el texto correspondiente para cada idioma.
   """
   new = parametros[idioma]['principio'] + u'0" + parametros[idioma]['final']
   return new

def guardar(datos, idioma):

   """
   Guarda el texto generado para el idioma seleccionado.
   """
   page = wikipedia.Page(idioma, parametros[idioma]['pagina'])
   new = generar_texto(datos, idioma)
   page.put(new, parametros[idioma]['resumen'])


datos = generar_datos() wikipedia.output('\n')

if modo not in parametros:

   for i in parametros:
       guardar(datos, i)

else:

   guardar(datos, modo)

ব্যবহার[সম্পাদনা]

আরও দেখুন[সম্পাদনা]