-*- coding: utf-8  -*-  Código GPL, autor: BigSus  http://es.wikipedia.org/wiki/Usuario:Bigsus-bot/Variables.py  import wikipedia, time, re from urllib import urlopen from operator import itemgetter   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'{{#switch:\n'          for elem in datos:         new += u"| " + elem[0] + u' = {{#switch:'                  if elem[0]==idioma and idioma<>None:             new += u"\n\t| NUMBEROFARTICLES | নিবন্ধ = "             new += u"\n\t| NUMBEROFFILES | ফাইল = "             new += u"\n\t| NUMBEROFPAGES | পৃষ্ঠা = "             new += u"\n\t| NUMBEROFUSERS | ব্যবহারকারী = "             new += u"\n\t| NUMBEROFACTIVEUSERS | সক্রিয়ব্যবহারকারী = "             new += u"\n\t| NUMBEROFADMINS | প্রশাসক = "             new += u"\n\t| NUMBEROFEDITS | মোটসম্পাদনা = "         else:             new += u"\n\t| NUMBEROFARTICLES | নিবন্ধ = " + str(elem[1])             new += u"\n\t| NUMBEROFFILES | ফাইল = " + str(elem[2])             new += u"\n\t| NUMBEROFPAGES | পৃষ্ঠা = " + str(elem[3])             new += u"\n\t| NUMBEROFUSERS | ব্যবহারকারী = " + str(elem[4])             new += u"\n\t| NUMBEROFACTIVEUSERS | সক্রিয়ব্যবহারকারী = " + str(elem[5])             new += u"\n\t| NUMBEROFADMINS | প্রশাসক = " + str(elem[6])             new += u"\n\t| NUMBEROFEDITS | মোটসম্পাদনা = " + str(elem[7])          new += u"\n\t| 0 }}\n"      new += 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)  ব্যবহার    আরও দেখুন