Ajuda:Página de testes/1
Aspeto
Esboço de código em Python para monitorar o desempenho dos filtros de edições.
A fazer
- Considerar a criação de bancos de dados no tool labs para manter um registro dessas informações ao longo do tempo.
- Gerar tabelas como as da wiki em inglês.
Código em Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Licença: GNU General Public License 3.0 (GPL V3) e Creative Commons Attribution/Share-Alike 3.0 (CC-BY-SA)
import urllib2
import re
import datetime
# FIXME: Get this from command line
wiki = 'pt.wikipedia.org'
# FIXME: Get this by means of an API request such as
# https://pt.wikipedia.org/w/api.php?action=query&list=abusefilters&format=json&abflimit=max&abfprop=id
filterCount = 125
reFilterStats = r'\(abusefilter-edit-status: ([\d,]+), ([\d,]+), (\d+\.\d+), (\d+\.\d+), ([\d,]+)\)'
reGlobalStats = r'\(abusefilter-status: ([\d,]+), ([\d,]+), (\d+\.\d+), ([\d,]+), ([\d,]+), (\d+\.\d+)\)'
def getStats( filterId = None ):
if filterId:
page = 'Special:AbuseFilter/' + str( filterId )
status = re.compile( reFilterStats )
else:
page = 'Special:AbuseFilter'
status = re.compile( reGlobalStats )
url = 'http://' + wiki + '/wiki/' + page + '?uselang=qqx'
lines = urllib2.urlopen( url ).readlines()
for line in lines:
m = re.search( status, line )
if m:
return m.groups()
elif re.search( 'abusefilter-edit-denied', line ):
return '0', '0', '0', '0', '0','0'
print( 'Falha ao consultar dados sobre o filtro.' )
return '0', '0', '0', '0', '0','0'
def addToGlobalStatsDB( timestamp, actions, reachedLimit, limit, matched ):
# TODO: Implement this
print( timestamp, actions, reachedLimit, limit, matched )
def addToSpecificStatsDB( timestamp, filterId, actions, matched, time, conditions ):
# TODO: Implement this
print( timestamp, filterId, actions, matched, time, conditions )
timestamp = datetime.datetime.utcnow().isoformat()
s = getStats()
addToGlobalStatsDB( timestamp, s[0], s[1], s[3], s[4] )
for id in range( 1, filterCount + 1 ):
#FIXME: Wait a few moments before making a new request?
timestamp = datetime.datetime.utcnow().isoformat()
s = getStats( id )
addToSpecificStatsDB( timestamp, id, s[0], s[1], s[3], s[4])