টেমপ্লেট:সংখ্যা গণনা/নথি
এটি টেমপ্লেট:সংখ্যা গণনা-এর জন্য একটি নথির উপপাতা। এখানে ব্যবহার সংক্রান্ত তথ্য, বিষয়শ্রেণী এবং অন্যান্য সামগ্রী রয়েছে যা মূল টেমপ্লেট পাতার অংশ নয়। |
- -*- 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'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)