Usuário:Rei-artur/python/statsmicro.py

Origem: Wikipédia, a enciclopédia livre.

Como criar[editar | editar código-fonte]

Copie o código (em baixo) e como no notepad, salve o ficheiro com o nome "statsmicro.py" e o ficheiro deve ser salvo na pasta do bot e com a codificação utf-8

Como usar[editar | editar código-fonte]

python statsmicro.py [projecto] [funcao]



Lista de projectos:

alemanha
anarquismo
anfibios
artropodes
asia
aves
astronomia
automobilismo
bacterias
bandas
bd
brasil
caes
capitais
catolicismo
carnaval
cinema
direitosanimais
empresas
enxadrismo
europa
eurovisao
evolucao
fisica
forcasarmadas
ginastica
geografia
hiphop
historiamilitar
invertebrados
lgbt
localidades
mamiferos
mercosul
mitologia
multiesportivo
narnia
nobel
patrimonio
peixes
politicos
pokemon
potter
primatas
riogrande
repteis
rock
saude
segundaguerra
unesco
virus


Funções:

matriz      Actualizar a matriz
lista       Actualizar a lista e afluentes ao mesmo tempo
afluentes   Actualizar os afluentes


ex: python statsmicro.py mamiferos matriz ex: python statsmicro.py primatas lista ex: python statsmicro.py repteis afluentes


para gerar para todos os projectos, mas demora muito tempo, nao muito aconselhavel usar ex: python statsmicro.py all [matriz|lista|afluentes]


Código[editar | editar código-fonte]

#!/usr/bin/python
# -*- coding: utf-8  -*-
#
# (C) Rei-artur, 2007-2009
#
# Distributed under the terms of the MIT license.
#


import sys,re,time
import wikipedia,pagegenerators,catlib,config
import urllib,urllib2
import codecs,webbrowser
from time import gmtime,strftime
import socket
import array 

projectlist = ['alemanha','anarquismo','anfibios','artropodes','asia','aves','astronomia','automobilismo',
'bandas','bd','brasil',
'caes','capitais','catolicismo','carnaval','cinema','direitosanimais',
'empresas','enxadrismo','europa','eurovisao','evolucao',
'fisica','forcasarmadas',
'ginastica','geografia','hiphop'
'historiamilitar',
'invertebrados',
'lgbt','localidades',
'mamiferos','mercosul','mitologia','multiesportivo',
'narnia','nobel',
'patrimonio','peixes','politicos','pokemon','potter','primatas',
'repteis','riogrande','rock'
'saude','segundaguerra',
'unesco','virus']

msg = {
    'alemanha':          (u'Alemanha',
                          u'Alemanha/Marca',
                          u'',
                          0,
                          u'Portal:Alemanha/Matriz',
                          u'Portal:Alemanha/estatísticas',
                          u'Portal:Alemanha/afluentes',
                          2000,
                         ),
    'anarquismo':        (u'Anarquismo',
                          u'Anarquismo/Marca',
                          u'',
                          0,
                          u'Portal:Anarquia/Mutirão Anarquista Wikipediano/Predefinição:Matriz dos artigos sobre Anarquismo',
                          u'Portal:Anarquia/Mutirão Anarquista Wikipediano/estatísticas',
                          u'Portal:Anarquia/Mutirão Anarquista Wikipediano/afluentes',
                          2000,
                         ),
    'anfibios':          (u'anfíbios',
                          u'Anfíbios/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Anfíbios/matriz',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Estatísticas/Anfíbios',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Anfíbios/afluentes',
                          2000,
                         ),
    'artropodes':        (u'artrópodes',
                          u'Artrópodes/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Artrópodes/matriz',
                          u'Wikipedia:Projetos/Artrópodes/Estatísticas',
                          u'Wikipedia:Projetos/Artrópodes/afluentes',
                          2000,
                         ),
    'asia':              (u'Ásia',
                          u'Ásia/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Países/Ásia/matriz',
                          u'Wikipedia:Projetos/Países/Ásia/estatísticas',
                          u'Wikipedia:Projetos/Países/Ásia/afluentes',
                          2000,
                         ),
    'aves':              (u'Aves',
                          u'Aves/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Aves/matriz',
                          u'Wikipedia:Projetos/Aves/Estatísticas',
                          u'Wikipedia:Projetos/Aves/afluentes',
                          2000,
                         ),                         
    'astronomia':        (u'astronomia',
                          u'Astronomia/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Astronomia/matriz',
                          u'Wikipedia:Projetos/Astronomia/lista',
                          u'Wikipedia:Projetos/Astronomia/afluentes',
                          2000,
                         ),
    'asteroides':        (u'asteróides',
                          u'Asteróide/Marca',
                          u'Predef',
                          ur'\{\{Info',
                          u'Wikipedia:Projetos/Astronomia/Asteróides/matriz',
                          u'Wikipedia:Projetos/Astronomia/Asteróides/lista',
                          u'Wikipedia:Projetos/Astronomia/Asteróides/afluentes',
                          2000,
                         ),
    'automobilismo':     (u'automobilismo',
                          u'Automobilismo/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Automobilismo/matriz',
                          u'Wikipedia:Projetos/Automobilismo/estatísticas',
                          u'Wikipedia:Projetos/Automobilismo/afluentes',
                          2000,
                         ),
    'bacterias':         (u'bactérias',
                          u'Bactérias/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Árvore da Vida/Bactérias/matriz',
                          u'Wikipedia:Projetos/Árvore da Vida/Bactérias/estatísticas',
                          u'Wikipedia:Projetos/Árvore da Vida/Bactérias/afluentes',
                          2000,
                         ),
    'bandas':            (u'bandas',
                          u'Classificação/Bandas',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Música/Bandas/matriz',
                          u'Wikipedia:Projetos/Música/Bandas/lista',
                          u'Wikipedia:Projetos/Música/Bandas/afluentes',
                          2000,
                         ),
    'bd':                (u'banda desenhada',
                          u'Projetobd',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Banda_Desenhada/matriz',
                          u'Wikipedia:Projetos/Banda_Desenhada/lista',
                          u'Wikipedia:Projetos/Banda_Desenhada/afluentes',
                          2000,
                         ),
    'brasil':            (u'Brasil',
                          u'Brasil/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Países/Brasil/matriz',
                          u'Wikipedia:Projetos/Países/Brasil/lista',
                          u'Wikipedia:Projetos/Países/Brasil/afluentes',
                          2000,
                         ),
    'caes':              (u'cães',
                          u'Cães/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Cães/matriz',
                          u'Wikipedia:Projetos/Cães/estatísticas',
                          u'Wikipedia:Projetos/Cães/afluentes',
                          2000,
                         ),
    'capitais':          (u'capitais',
                          u'Capital/Marca',
                          u'Predef',
                          ur'\{\{[Ii]nfo',
                          u'Wikipedia:Projetos/Capitais/matriz',
                          u'Wikipedia:Projetos/Capitais/lista',
                          u'Wikipedia:Projetos/Capitais/afluentes',
                          2000,
                         ),
    'catolicismo':       (u'catolicismo',
                          u'Catolicismo/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Catolicismo/matriz',
                          u'Wikipedia:Projetos/Catolicismo/estatísticas',
                          u'Wikipedia:Projetos/Catolicismo/afluentes',
                          2000,
                         ),
    'cinema':            (u'cinema',
                          u'Cinema/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Cinema/matriz',
                          u'Wikipedia:Projetos/Cinema/estatísticas',
                          u'Wikipedia:Projetos/Cinema/afluentes',
                          2000,
                         ),

    'direitosanimais':   (u'direitos animais',
                          u'Direitos animais/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Direitos Animais/Matriz',
                          u'Wikipedia:Projetos/Direitos Animais/estatísticas',
                          u'Wikipedia:Projetos/Direitos Animais/afluentes',
                          2000,
                         ),

    'carnaval':          (u'carnaval',
                          u'Carnaval/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Carnaval/matriz',
                          u'Wikipedia:Projetos/Carnaval/estatísticas',
                          u'Wikipedia:Projetos/Carnaval/afluentes',
                          2000,
                         ),
    'empresas':          (u'empresas',
                          u'Empresas/Marca',
                          u'Predef',
                          ur'\{\{[Ii]nfo',
                          u'Wikipedia:Projetos/Empresas/matriz',
                          u'Wikipedia:Projetos/Empresas/lista',
                          u'Wikipedia:Projetos/Empresas/afluentes',
                          2000,
                         ),

    'enxadrismo':        (u'Enxadrismo',
                          u'Enxadrismo/marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Enxadrismo/matriz',
                          u'Wikipedia:Projetos/Enxadrismo/estatísticas',
                          u'Wikipedia:Projetos/Enxadrismo/afluentes',
                          2000,
                         ),

    'europa':            (u'Europa',
                          u'Europa/Marca',
                          u'Pdf',
                          ur'\{\{[Ii]nfo',
                          u'Wikipedia:Projetos/Países/Europa/matriz',
                          u'Wikipedia:Projetos/Países/Europa/estatísticas',
                          u'Wikipedia:Projetos/Países/Europa/afluentes',
                          2000,
                         ),
    'eurovisao':         (u'Eurovisão',
                          u'Eurovisão/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Eurovisão/matriz',
                          u'Wikipedia:Projetos/Eurovisão/estatísticas',
                          u'Wikipedia:Projetos/Eurovisão/afluentes',
                          2000,
                         ),
    'evolucao':          (u'Evolução',
                          u'Evolução/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Evolução/Matriz',
                          u'Wikipedia:Projetos/Evolução/lista',
                          u'Wikipedia:Projetos/Evolução/afluentes',
                          2000,
                         ),
    'fisica':            (u'física',
                          u'Física/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Física/matriz',
                          u'Wikipedia:Projetos/Física/lista',
                          u'Wikipedia:Projetos/Física/afluentes',
                          2000,
                         ),
    'forcasarmadas':     (u'forças armadas',
                          u'Forças Armadas/Marca',
                          u'Pdf',
                          ur'\{\{([Dd]ados|[Ii]nfo)',
                          u'Wikipedia:Projetos/Forças Armadas/matriz',
                          u'Wikipedia:Projetos/Forças Armadas/estatísticas',
                          u'Wikipedia:Projetos/Forças Armadas/afluentes',
                          2000,
                         ),
    'galaxias':          (u'galáxias',
                          u'Galáxia/Marca',
                          u'Predef',
                          ur'\{\{[Gg]aláxia',
                          u'Wikipedia:Projetos/Astronomia/Galáxias/matriz',
                          u'Wikipedia:Projetos/Astronomia/Galáxias/lista',
                          u'Wikipedia:Projetos/Astronomia/Galáxias/afluentes',
                          2000,
                         ),
    'geografia':         (u'Geografia',
                          u'Geografia/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Geografia/matriz',
                          u'Wikipedia:Projetos/Geografia/estatísticas',
                          u'Wikipedia:Projetos/Geografia/afluentes',
                          2000,
                         ),
    'ginastica':         (u'Ginástica',
                          u'Ginástica/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Ginástica/matriz',
                          u'Wikipedia:Projetos/Ginástica/estatísticas',
                          u'Wikipedia:Projetos/Ginástica/afluentes',
                          2000,
                         ),
    'hiphop':            (u'hip hop',
                          u'Hip hop/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Música/Hip hop/matriz',
                          u'Wikipedia:Projetos/Música/Hip hop/estatísticas',
                          u'Wikipedia:Projetos/Música/Hip hop/afluentes',
                          2000,
                         ),
    'historiamilitar':   (u'história militar',
                          u'História militar/Marca',
                          u'Pdf',
                          ur'\{\{([Dd]ados|[Ii]nfo)',
                          u'Wikipedia:Projetos/História militar/matriz',
                          u'Wikipedia:Projetos/História militar/estatísticas',
                          u'Wikipedia:Projetos/História militar/afluentes',
                          2000,
                         ),
    'invertebrados':     (u'invertebrados',
                          u'Invertebrados/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Invertebrados/matriz',
                          u'Wikipedia:Projetos/Invertebrados/Estatísticas',
                          u'Wikipedia:Projetos/Invertebrados/afluentes',
                          2000,
                         ),
    'lgbt':              (u'LGBT',
                          u'LGBT/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Estudos_LGBT/matriz',
                          u'Wikipedia:Projetos/Estudos_LGBT/lista',
                          u'Wikipedia:Projetos/Estudos_LGBT/afluentes',
                          2000,
                         ),
    'localidades':       (u'localidades de Portugal',
                          u'Classificação/Localidades de Portugal',
                          u'Predef',
                          ur'\{\{([Ii]nfo|[Dd]ados)',
                          u'Wikipedia:Projectos/Países/Portugal/Localidades/matriz',
                          u'Wikipedia:Projectos/Países/Portugal/Localidades/lista',
                          u'Wikipedia:Projectos/Países/Portugal/Localidades/afluentes',
                          2000,
                         ),
    'mamiferos':         (u'mamíferos',
                          u'Mamíferos/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Mamíferos/matriz',
                          u'Wikipedia:Projetos/Mamíferos/Estatísticas',
                          u'Wikipedia:Projetos/Mamíferos/afluentes',
                          2000,
                         ),
    'mercosul':          (u'Mercosul',
                          u'Mercosul/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Mercosul/matriz',
                          u'Wikipedia:Projetos/Mercosul/estatísticas',
                          u'Wikipedia:Projetos/Mercosul/afluentes',
                          2000,
                         ),                         
    'mitologia':         (u'mitologia',
                          u'Mitologia/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Mitologia/matriz',
                          u'Wikipedia:Projetos/Mitologia/estatísticas',
                          u'Wikipedia:Projetos/Mitologia/afluentes',
                          2000,
                         ),
    'multiesportivo':    (u'Eventos multi-esportivos',
                          u'Eventos multi-esportivos/Marca',
                          u'Box',
                          ur'\{\{[Ii]nfo',
                          u'Wikipedia:Projetos/Eventos multiesportivos/matriz',
                          u'Wikipedia:Projetos/Eventos multiesportivos/estatísticas',
                          u'Wikipedia:Projetos/Eventos multiesportivos/afluentes',
                          2000,
                         ),
    'narnia':            (u'As Crônicas de Nárnia',
                          u'As Crônicas de Nárnia/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/As Crônicas de Nárnia/matriz',
                          u'Wikipedia:Projetos/As Crônicas de Nárnia/estatísticas',
                          u'Wikipedia:Projetos/As Crônicas de Nárnia/afluentes',
                          2000,
                         ),
    'nobel':             (u'Nobel',
                          u'Nobel/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Nobel/matriz',
                          u'Wikipedia:Projetos/Nobel/lista',
                          u'Wikipedia:Projetos/Nobel/afluentes',
                          2000,
                         ),
    'patrimonio':        (u'património de Portugal',
                          u'Classificação/Património de Portugal',
                          u'Predef',
                          ur'\{\{[Ii]nfo/Castelo',
                          u'Wikipedia:Projectos/Países/Portugal/Património/matriz',
                          u'Wikipedia:Projectos/Países/Portugal/Património/lista',
                          u'Wikipedia:Projectos/Países/Portugal/Património/afluentes',
                          2000,
                         ),
    'peixes':            (u'peixes',
                          u'Peixes/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Peixes/matriz',
                          u'Wikipedia:Projetos/Peixes/lista',
                          u'Wikipedia:Projetos/Peixes/afluentes',
                          2000,
                         ),
    'politicos':         (u'políticos',
                          u'Políticos/Marca',
                          u'Pdf',
                          ur'\{\{[Pp]olítico',
                          u'Wikipedia:Projetos/Biografias/Políticos/matriz',
                          u'Wikipedia:Projetos/Biografias/Políticos/estatísticas',
                          u'Wikipedia:Projetos/Biografias/Políticos/afluentes',
                          2000,
                         ),
    'pokemon':           (u'pokémon',
                          u'Pokémon/Marca',
                          u'Pdf',
                          ur'\{\{[Pp]olítico',
                          u'Wikipedia:Projetos/Pokémon/matriz',
                          u'Wikipedia:Projetos/Pokémon/estatísticas',
                          u'Wikipedia:Projetos/Pokémon/afluentes',
                          2000,
                         ),                   
    'potter':            (u'Harry Potter',
                          u'Harry Potter/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Harry Potter/matriz',
                          u'Wikipedia:Projetos/Harry Potter/estatísticas',
                          u'Wikipedia:Projetos/Harry Potter/afluentes',
                          2000,
                         ),
    'plantas':           (u'plantas',
                          u'Plantas/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Plantas/matriz',
                          u'Wikipedia:Projetos/Plantas/lista',
                          u'Wikipedia:Projetos/Plantas/afluentes',
                          2000,
                         ),
    'primatas':          (u'primatas',
                          u'Primatas/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Primatas/matriz',
                          u'Wikipedia:Projetos/Primatas/Estatísticas',
                          u'Wikipedia:Projetos/Primatas/afluentes',
                          2000,
                         ),
    'repteis':           (u'répteis',
                          u'Répteis/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Répteis/matriz',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Estatísticas/Répteis',
                          u'Wikipedia:Projetos/Anfíbios e Répteis/Répteis/afluentes',
                          2000,
                         ),
    'rock':              (u'rock',
                          u'Rock/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Música/Rock/matriz',
                          u'Wikipedia:Projetos/Música/Rock/Estatísticas',
                          u'Wikipedia:Projetos/Música/Rock/afluentes',
                          2000,
                         ),
    'riogrande':         (u'Rio Grande do Sul',
                          u'Rio Grande do Sul/Marca',
                          u'',
                          0,
                          u'Portal:Rio Grande do Sul/matriz',
                          u'Portal:Rio Grande do Sul/Estatísticas',
                          u'Portal:Rio Grande do Sul/afluentes',
                          2000,
                         ),
    'saude':             (u'saúde',
                          u'Saúde/Marca',
                          u'',
                          0,
                          u'Wikipedia:Projetos/Saúde/matriz',
                          u'Wikipedia:Projetos/Saúde/lista',
                          u'Wikipedia:Projetos/Saúde/afluentes',
                          2000,
                         ),
    'segundaguerra':     (u'Segunda Guerra Mundial',
                          u'Segunda Guerra Mundial/Marca',
                          u'',
                          0,
                          u'Predefinição:Segunda Guerra Mundial/Matriz',
                          u'Portal:Segunda Guerra Mundial/estatísticas',
                          u'Portal:Segunda Guerra Mundial/afluentes',
                          2000,
                         ),
    'virus':             (u'vírus',
                          u'Vírus/Marca',
                          u'Tax',
                          ur'\{\{[Tt]axo(caixa|box)',
                          u'Wikipedia:Projetos/Árvore da Vida/Vírus/matriz',
                          u'Wikipedia:Projetos/Árvore da Vida/Vírus/estatísticas',
                          u'Wikipedia:Projetos/Árvore da Vida/Vírus/afluentes',
                          2000,
                         ),
    'unesco':            (u'património Mundial da UNESCO',
                          u'Património Mundial da UNESCO/Marca',
                          u'',
                          ur'\{\{[Pp]atrimónio',
                          u'Wikipedia:Projetos/Património Mundial da UNESCO/matriz',
                          u'Wikipedia:Projetos/Património Mundial da UNESCO/lista',
                          u'Wikipedia:Projetos/Património Mundial da UNESCO/afluentes',
                          2000,
                         ),
}

def matriz(projectlist):

  project = sys.argv[1]
  if project != "all":
    projectlist = []
    projectlist.insert(0, project)

  for project in projectlist:
  
    sobre            = wikipedia.translate(project, msg)[0]
    predefs_class    = wikipedia.translate(project, msg)[1]
    titpredefs_lista = wikipedia.translate(project, msg)[2]
    predefs_lista    = wikipedia.translate(project, msg)[3]
    salvar_matriz    = wikipedia.translate(project, msg)[4]
    salvar_lista     = wikipedia.translate(project, msg)[5]
    salvar_artigo    = wikipedia.translate(project, msg)[6]
    minimo           = wikipedia.translate(project, msg)[7]
  
    
    wikipedia.output( u"\n\n" )
    soma = 0
    q5i0 = 0
    q5i1 = 0
    q5i2 = 0
    q5i3 = 0
    q5i4 = 0
    q4i0 = 0
    q4i1 = 0
    q4i2 = 0
    q4i3 = 0
    q4i4 = 0
    q3i0 = 0
    q3i1 = 0
    q3i2 = 0
    q3i3 = 0
    q3i4 = 0
    q2i0 = 0
    q2i1 = 0
    q2i2 = 0
    q2i3 = 0
    q2i4 = 0
    q1i0 = 0
    q1i1 = 0
    q1i2 = 0
    q1i3 = 0
    q1i4 = 0
    q0i0 = 0
    q0i1 = 0
    q0i2 = 0
    q0i3 = 0
    q0i4 = 0

    site=wikipedia.Site('pt','wikipedia')
    sp=wikipedia.Page(site,u"Template:"+predefs_class)
      
    gen = pagegenerators.ReferringPageGenerator(sp,followRedirects=True,onlyTemplateInclusion=True)
    gen = pagegenerators.NamespaceFilterPageGenerator(gen,[1])
    preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 50)
    for page in preloadingGen:


      url = 'http://pt.wikipedia.org/w/api.php?action=query&titles=%s&generator=categories' % (page.urlname())

      try:
        socket.setdefaulttimeout(20)
        url = urllib2.urlopen(url)
      except urllib2.URLError, (err):
        time.sleep(30)
        socket.setdefaulttimeout(20)
        url = urllib2.urlopen(url)

      url = url.read()
      url = unicode(url, 'utf-8')
    
      soma = soma + 1
      
      
      cat1 = u"qualidade 1 sobre %s" % (sobre)
      cat2 = u"qualidade 2 sobre %s" % (sobre)
      cat3 = u"qualidade 3 sobre %s" % (sobre)
      cat4 = u"qualidade 4 sobre %s" % (sobre)
      cat5 = u"qualidade 5 sobre %s" % (sobre)
      if cat1 in url:
        qualidade = 1
      elif cat2 in url:
        qualidade = 2
      elif cat3 in url:
        qualidade = 3
      elif cat4 in url:
        qualidade = 4
      elif cat5 in url:
        qualidade = 5
      else:
        qualidade = 0
        
      cat1 = u"importância 1 sobre %s" % (sobre)
      cat2 = u"importância 2 sobre %s" % (sobre)
      cat3 = u"importância 3 sobre %s" % (sobre)
      cat4 = u"importância 4 sobre %s" % (sobre)
      if cat1 in url:
        importancia = 1
      elif cat2 in url:
        importancia = 2
      elif cat3 in url:
        importancia = 3
      elif cat4 in url:
        importancia = 4
      else:
        importancia = 0
  
        
      wikipedia.output( u"# \03{lightred}Q = %s\03{default}  \03{lightgreen}I = %s\03{default} -> [[%s]] " % (qualidade,importancia,page.title()) )
  
      if qualidade == 0:
        if importancia == 0:
          q0i0 = q0i0 + 1
        if importancia == 1:
          q0i1 = q0i1 + 1
        if importancia == 2:
          q0i2 = q0i2 + 1
        if importancia == 3:
          q0i3 = q0i3 + 1
        if importancia == 4:
          q0i4 = q0i4 + 1
  
      if qualidade == 1:
        if importancia == 0:
          q1i0 = q1i0 + 1
        if importancia == 1:
          q1i1 = q1i1 + 1
        if importancia == 2:
          q1i2 = q1i2 + 1
        if importancia == 3:
          q1i3 = q1i3 + 1
        if importancia == 4:
          q1i4 = q1i4 + 1
  
      if qualidade == 2:
        if importancia == 0:
          q2i0 = q2i0 + 1
        if importancia == 1:
          q2i1 = q2i1 + 1
        if importancia == 2:
          q2i2 = q2i2 + 1
        if importancia == 3:
          q2i3 = q2i3 + 1
        if importancia == 4:
          q2i4 = q2i4 + 1
  
      if qualidade == 3:
        if importancia == 0:
          q3i0 = q3i0 + 1
        if importancia == 1:
          q3i1 = q3i1 + 1
        if importancia == 2:
          q3i2 = q3i2 + 1
        if importancia == 3:
          q3i3 = q3i3 + 1
        if importancia == 4:
          q3i4 = q3i4 + 1
  
      if qualidade == 4:
        if importancia == 0:
          q4i0 = q4i0 + 1
        if importancia == 1:
          q4i1 = q4i1 + 1
        if importancia == 2:
          q4i2 = q4i2 + 1
        if importancia == 3:
          q4i3 = q4i3 + 1
        if importancia == 4:
          q4i4 = q4i4 + 1
  
      if qualidade == 5:
        if importancia == 0:
          q5i0 = q5i0 + 1
        if importancia == 1:
          q5i1 = q5i1 + 1
        if importancia == 2:
          q5i2 = q5i2 + 1
        if importancia == 3:
          q5i3 = q5i3 + 1
        if importancia == 4:
          q5i4 = q5i4 + 1
  
    saida=u""
    saida+=u"{{Matriz da Classificação\n"
    saida+=u"| %s | %s | %s | %s | %s\n" % (q5i4,q5i3,q5i2,q5i1,q5i0)
    saida+=u"| %s | %s | %s | %s | %s\n" % (q4i4,q4i3,q4i2,q4i1,q4i0)
    saida+=u"| %s | %s | %s | %s | %s\n" % (q3i4,q3i3,q3i2,q3i1,q3i0)
    saida+=u"| %s | %s | %s | %s | %s\n" % (q2i4,q2i3,q2i2,q2i1,q2i0)
    saida+=u"| %s | %s | %s | %s | %s\n" % (q1i4,q1i3,q1i2,q1i1,q1i0)
    saida+=u"| %s | %s | %s | %s | %s\n" % (q0i4,q0i3,q0i2,q0i1,q0i0)
    saida+=u"|sobre=%s\n" % sobre
    saida+=u"}}\n"
    saida+=u"<small>'''última actualização''': ~~~~~</small>\n"
  
    wikipedia.output( u"\n\n\03{lightyellow}Foram verificados %s artigos\03{default}" % (soma) )
    sp=wikipedia.Page(site,salvar_matriz)
  
    texto = sp.get()
    if u"###" in texto:
  
      antes = texto.split(u'<!-- ### inicio ### -->')[0]
      fim = texto.split(u'<!-- ### fim ### -->')[1]
  
  
      saida = antes + u'<!-- ### inicio ### -->' + saida + u'\n<!-- ### fim ### -->' + fim
  
  
    comentario= u"Bot: Actualizar matriz (analizados %s artigos)" % (soma)
    sp.put(saida,comment=comentario, minorEdit=False)





def cor(tam,rango=[500,1000,2000,5000,8000,10000,15000,20000,30000,50000]):
  if tam < rango[0]:
    tam_s='bgcolor="#ff0000" | %d' % (tam)
  elif tam < rango[1]:
    tam_s='bgcolor="#ff3000" | %d' % (tam)
  elif tam < rango[2]:
    tam_s='bgcolor="#ff6000" | %d' % (tam)
  elif tam < rango[3]:
    tam_s='bgcolor="#ff9000" | %d' % (tam)
  elif tam < rango[4]:
    tam_s='bgcolor="#ffc000" | %d' % (tam)
  elif tam < rango[5]:
    tam_s='bgcolor="#ffff00" | %d' % (tam)
  elif tam < rango[6]:
    tam_s='bgcolor="#ccff00" | %d' % (tam)
  elif tam < rango[7]:
    tam_s='bgcolor="#99ff00" | %d' % (tam)
  elif tam < rango[8]:
    tam_s='bgcolor="#66ff00" | %d' % (tam)
  elif tam < rango[9]:
    tam_s='bgcolor="#33ff00" | %d' % (tam)
  else:
    tam_s='bgcolor="#00ff00" | %d' % (tam)
  return tam_s


def tabelacores(titulo=u"Código de cores",rango=[500,1000,2000,5000,8000,10000,15000,20000,30000,50000]):
  saida=u""
  saida+=u"{| style=\"font-size:85%;\" {{prettytable}}\n"
  saida+=u"|+ '''%s'''\n" % (titulo)
  saida+=u"! Cor\n"
  saida+=u"! Escala (bytes)\n"
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ff0000\"| || 0-%d\n" % (rango[0])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ff3000\"| || %d-%d\n" % (rango[0]+1,rango[1])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ff6000\"| || %d-%d\n" % (rango[1]+1,rango[2])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ff9000\"| || %d-%d\n" % (rango[2]+1,rango[3])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ffc000\"| || %d-%d\n" % (rango[3]+1,rango[4])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ffff00\"| || %d-%d\n" % (rango[4]+1,rango[5])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#ccff00\"| || %d-%d\n" % (rango[5]+1,rango[6])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#99ff00\"| || %d-%d\n" % (rango[6]+1,rango[7])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#66ff00\"| || %d-%d\n" % (rango[7]+1,rango[8])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#33ff00\"| || %d-%d\n" % (rango[8]+1,rango[9])
  saida+=u"|-\n"
  saida+=u"| bgcolor=\"#00ff00\"| || >%d\n" % (rango[9]+1)
  saida+=u"|}\n\n"
  return saida

def lista(projectlist):

  project = sys.argv[1]
  if project != "all":
    projectlist = []
    projectlist.insert(0, project)
    projectlist.sort()

  for project in projectlist:
  
    sobre            = wikipedia.translate(project, msg)[0]
    predefs_class    = wikipedia.translate(project, msg)[1]
    titpredefs_lista = wikipedia.translate(project, msg)[2]
    predefs_lista    = wikipedia.translate(project, msg)[3]
    salvar_matriz    = wikipedia.translate(project, msg)[4]
    salvar_lista     = wikipedia.translate(project, msg)[5]
    salvar_artigo    = wikipedia.translate(project, msg)[6]
    minimo           = wikipedia.translate(project, msg)[7]

    saida_lista=u""
    saida_artigo=u""
    
    wikipedia.output( u"\n\n" )
  
    saida_lista+=u"{| class=\"prettytable sortable\" style=\"font-size:85%;\"\n"
    saida_lista+=u"! width=\"400\" | Artigo\n"
    saida_lista+=u"! Tamanho\n"
    saida_lista+=u"! Img\n"
    saida_lista+=u"! Iws\n"
    saida_lista+=u"! %s\n" % (titpredefs_lista)
    saida_lista+=u"! [[Imagem:LinkFA-star.png]]\n"
  
  
    site=wikipedia.Site('pt','wikipedia')
    sp=wikipedia.Page(site,u"Template:"+predefs_class)
    gen = pagegenerators.ReferringPageGenerator(sp,followRedirects=True,onlyTemplateInclusion=True)
    gen = pagegenerators.NamespaceFilterPageGenerator(gen,[1])
      
    preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 50)
    for page in preloadingGen:
      talk = page.title()
      title = page.titleWithoutNamespace()
      page  = wikipedia.Page(wikipedia.getSite(), title)
  
      if page.isRedirectPage():
        continue
      
      saida_artigo+=u"\n[[%s]] | " % (talk)
  
      texto = page.get()
      tam = len(texto)
      
      wikipedia.output( u">>> \03{lightpurple}%s\03{default} <<<" % (title) )
  
  
      imagem="n"
      if re.search(ur"\.(jpg|JPG|jpeg|JPEG|png|gif)",texto):
        imagem="s"
  
      interwiki="n"
      if len(page.interwiki())>0:
        interwiki="s"
  
      if predefs_lista == 0:
        pdf=""
      else:
        pdf="n"
        if re.search(predefs_lista,texto):
          pdf="s"
      destaque=""
      if re.search(ur"\{\{[Aa]rtigo[ _]destacado\}\}",texto):
        destaque="*"
          
      saida_lista+=u"|--\n| [[%s]] || %s || %s || %s || %s || %s " % (title,cor(tam),imagem,interwiki,pdf,destaque)
  
      saida_lista+=u"\n"
  
  
    saida_lista+=u"|}\n"
    saida_lista+=u"<small>'''última actualização''': ~~~~~</small>\n"
    saida_lista+=tabelacores(titulo=u"Código de cores")
  
  
  
    sp=wikipedia.Page(site,salvar_lista)
    texto = sp.get()
    if u"###" in texto:
  
      antes = texto.split(u'<!-- ### inicio ### -->')[0]
      fim = texto.split(u'<!-- ### fim ### -->')[1]
  
  
      saida_lista= antes + u'<!-- ### inicio ### -->' + saida_lista + u'\n<!-- ### fim ### -->' + fim
  
  
    sp.put(saida_lista,comment=u"Bot: Actualizar lista", minorEdit= False)



    sp=wikipedia.Page(site,salvar_artigo)
    texto = sp.get()
    if u"###" in texto:
  
      antes = texto.split(u'<!-- ### inicio ### -->')[0]
      fim = texto.split(u'<!-- ### fim ### -->')[1]
  
  
      saida_artigo= antes + u'<!-- ### inicio ### -->' + saida_artigo + u'\n<!-- ### fim ### -->' + fim
  
  
    sp.put(saida_artigo,comment=u"Bot: Actualizar lista", minorEdit= False)
  

def afluentes(projectlist):
  project = sys.argv[1]
  if project != "all":
    projectlist = []
    projectlist.insert(0, project)
    projectlist.sort()

  for project in projectlist:
  
    sobre            = wikipedia.translate(project, msg)[0]
    predefs_class    = wikipedia.translate(project, msg)[1]
    titpredefs_lista = wikipedia.translate(project, msg)[2]
    predefs_lista    = wikipedia.translate(project, msg)[3]
    salvar_matriz    = wikipedia.translate(project, msg)[4]
    salvar_lista     = wikipedia.translate(project, msg)[5]
    salvar_artigo    = wikipedia.translate(project, msg)[6]
    minimo           = wikipedia.translate(project, msg)[7]
    
    
    saida_artigo=u""
    wikipedia.output( u"\n\n" )
  
  
    site=wikipedia.Site('pt','wikipedia')
    sp=wikipedia.Page(site,u"Template:"+predefs_class)
    gen = pagegenerators.ReferringPageGenerator(sp,followRedirects=True,onlyTemplateInclusion=True)
    gen = pagegenerators.NamespaceFilterPageGenerator(gen,[1])
      
    preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 50)
    for page in preloadingGen:
      talk = page.title()
  
      if page.isRedirectPage():
        continue
      
      saida_artigo+=u"\n[[%s]] | " % (talk)
      wikipedia.output( u">>> \03{lightpurple}%s\03{default} <<<" % (talk) )
  
  
    sp=wikipedia.Page(site,salvar_artigo)
    texto = sp.get()
    if u"###" in texto:
  
      antes = texto.split(u'<!-- ### inicio ### -->')[0]
      fim = texto.split(u'<!-- ### fim ### -->')[1]
  
  
      saida_artigo= antes + u'<!-- ### inicio ### -->' + saida_artigo + u'\n<!-- ### fim ### -->' + fim
  
    
    
    sp.put(saida_artigo,comment=u"Bot: Actualizar lista", minorEdit= False)





if __name__ == "__main__":
  try:
    project = None
    accao = None

    print """

Lista de projectos:

 alemanha
 anarquismo
 anfibios
 artropodes
 asia
 aves
 astronomia
 automobilismo
 bacterias
 bandas
 bd
 brasil
 caes
 capitais
 catolicismo
 carnaval
 cinema
 direitosanimais
 empresas
 enxadrismo
 europa
 eurovisao
 evolucao
 fisica
 forcasarmadas
 ginastica
 geografia
 hiphop
 historiamilitar
 invertebrados
 lgbt
 localidades
 mamiferos
 mercosul
 mitologia
 multiesportivo
 narnia
 nobel
 patrimonio
 peixes
 politicos
 pokemon
 potter
 primatas
 riogrande
 repteis
 rock
 saude
 segundaguerra
 unesco
 virus

Funções:

 matriz      Actualizar a matriz
 lista       Actualizar a lista e afluentes ao mesmo tempo
 afluentes   Actualizar os afluentes



ex: python statsmicro.py mamiferos matriz
ex: python statsmicro.py mamiferos lista
ex: python statsmicro.py mamiferos afluentes


para gerar para todos os projectos, mas demora muito tempo, nao muito aconselhavel usar
ex: python statsmicro.py all [matriz|lista|afluentes]


"""

    accao = sys.argv[2]
    if accao=="matriz":
      matriz(projectlist)
    if accao=="lista":
      lista(projectlist)
    if accao=="afluentes":
      afluentes(projectlist)



  finally:
    wikipedia.stopme()