Saltar para o conteúdo

Usuário:Chicocvenancio/ListarMediação.py

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

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

<source lang="python">

  1. -------------------------------------------------------------------------------
  2. Name: Listar Mediação
  3. Purpose: Listar os casos novos e casos a espera para mediação na subpágina
  4. de mediação.
  5. Author: Chico Venancio
  6. Created: 25/02/2012
  7. Copyright: (c) Chico Venancio 2012
  8. Licence: GNU General Public License
  9. See http://www.gnu.org/licenses/gpl.txt for full text of the license
  10. -------------------------------------------------------------------------------

import wikipedia import catlib import pagegenerators import add_text import cPickle def listar_mediations():

   """listar os casos de mediação presentes em Categoria:Casos novos de mediação e Categoria:Casos a espera de mediação
   dentro da subpágina de mediação"""
   pagina = wikipedia.Page(site, u'Wikipédia:Mediação/Casos')
   #pagina = wikipedia.Page(site, u'Usuário:chicocvenancio/teste') #para testes
   #conteudo a ficar na pagina acima dos casos novos
   conteudo = u'=== Casos novos ===\n'
   texto_casos_novos = u'*Casos novos:0 (Pedidos feitos recentemente)\n'
   texto_casos_espera = u'* Casos a espera:0 (Pedidos a mais de uma semana sem ter a mediação iniciada)\n'
   casos_novos = set()
   casos_espera= set()
   espera_listados=set()
   novos_listados=set()
   diferenca = {'novosmais':0, 'esperamais':0, 'novosmenos':0, 'esperamenos':0}
   #adicionar casos novos ao conteudo
   for Page in pagegenerators.CategorizedPageGenerator(catlib.Category(site,
       "%s:%s" % (site.namespace(14), u'Casos novos de mediação'))):
       texto_casos_novos += u'::' + Page.title() + '\n'
       casos_novos.add(Page)
  #adicionar casos a espera ao conteudo
   for Page in pagegenerators.CategorizedPageGenerator(catlib.Category(site,
       "%s:%s" % (site.namespace(14), u'Casos a espera de mediação'))):
       texto_casos_espera +=  u'::' + Page.title() + u'\n'
       casos_espera.add(Page)
   texto_casos_novos += u'\n'
   texto_casos_espera += u'\n'
   conteudo += texto_casos_novos + texto_casos_espera
   novos_na_pagina = pagina.get().split(u)[1] \
       .replace('', '').replace(u'\n', '' '::').replace('', ).split('::')
   espera_na_pagina = pagina.get().split(u)[3] \
       .replace('', '').replace(u'\n', '' '::').replace('', ).split('::')
   for Caso in pagegenerators.PagesFromTitlesGenerator([x for x in novos_na_pagina if x]):
       novos_listados.add(Caso)
   for Caso in pagegenerators.PagesFromTitlesGenerator([x for x in espera_na_pagina if x]):
       espera_listados.add(Caso)
   sumario = u'Robô '
   #escrevendo sumário
   if casos_novos != novos_listados:
       for Caso in casos_novos - novos_listados:
           diferenca['novosmais']+= 1
       for Caso in novos_listados - casos_novos:
           diferenca['novosmenos']+= 1
   if casos_espera != espera_listados:
       for Caso in casos_espera - espera_listados:
           diferenca['esperamais']+=1
       for Caso in espera_listados - casos_espera:
           diferenca['esperamenos']+=1
   if diferenca['novosmais']: sumario+= u'Adicionando ' + str(diferenca['novosmais'])+ u' caso(s) novo(s)' + ', '
   if diferenca['novosmenos']: sumario+= u'Removendo ' + str(diferenca['novosmenos'])+ u' caso(s) novo(s)' + ', '
   if diferenca['esperamais']: sumario+= u'Adicionando ' + str(diferenca['esperamais'])+ u' caso(s) a espera(s)' + ', '
   if diferenca['esperamenos']: sumario+= u'Removendo ' + str(diferenca['esperamenos'])+ u' caso(s) a espera(s)' + ', '


   #conteudo que fica abaixo dos casos a espera
   conteudo += '=== Casos abertos ===' + pagina.get().split('=== Casos abertos ===', 1)[1]
   if pagina.get() != conteudo: #só mexer se for diferente
       pagina.put(conteudo, sumario)
   wikipedia.showDiff(pagina.get(), conteudo) # para testes, apresenta o diff no output
   print sumario