Usuário:Chicocvenancio/ListarMediação.py
Código
editar<source lang="python">
- -------------------------------------------------------------------------------
- Name: Listar Mediação
- Purpose: Listar os casos novos e casos a espera para mediação na subpágina
- de mediação.
- Author: Chico Venancio
- Created: 25/02/2012
- Copyright: (c) Chico Venancio 2012
- Licence: GNU General Public License
- See http://www.gnu.org/licenses/gpl.txt for full text of the license
- -------------------------------------------------------------------------------
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