Saltar para o conteúdo

Usuário:Danilo.bot/listadebots.py

Origem: Wikipédia, a enciclopédia livre.
# -*- coding: utf-8  -*-
"""
Atualiza a lista de robôs
"""
import re, time
import wikipedia as pywikibot
import query

bop = re.compile(u'(\| *operador *= *|{{[Bb]ot\|)(site=)?([^}\|\n]*)\|?(site=)?([^}\|\n]*)') #busca o operador
bl = re.compile(u'\| *linguagem *= *(.*)') #busca a linguagem
bt = re.compile(u'\| *tarefas *= *(.*)') #busca as tarefas

def main():
    site = pywikibot.getSite()
    params = {'action':'query','list':'allusers','augroup':'bot','aulimit':'500'}
    botparams = {'action':'query','list':'usercontribs','ucuser':'','uclimit':'1'}
    bots = query.GetData(params, encodeTitle = False)
    ativ = u''
    tabela = u'{|class="wikitable sortable"\n|-\n!Robô||Operador||Linguagem||Tarefas||Atividade\n'
    for bot in bots['query']['allusers']:
	botparams['ucuser'] = bot['name']
	dados = query.GetData(botparams, encodeTitle = False)
	data = re.search(r'(\d\d\d\d)-(\d\d)-(\d\d)',dados['query']['usercontribs'][0]['timestamp'])
	data = data.group(1)+data.group(2)+data.group(3)
	if int(data) < int(time.strftime('%Y%m%d', time.gmtime(time.time()-5184000))): ativ = '<font color=#b00>Inativo</font>'
	else: ativ = '<font color=#080>Ativo</font>'
	botpage =  pywikibot.Page(site,u'Usuário:'+bot['name']).get(get_redirect=True)
	botop = bop.search(botpage)
	if not botop: user = u'???'
	elif botop.group(2): user = u'[[:{1}:user:{0}|{0}]] <small>({1}) [[:{1}:user talk:{0}|D]][[:{1}:special:Contributions/{0}|C]]</small>'.format(botop.group(5), botop.group(3))
	elif botop.group(4): user = u'[[:{1}:user:{0}|{0}]] <small>({1}) [[:{1}:user talk:{0}|D]][[:{1}:special:Contributions/{0}|C]]</small>'.format(botop.group(3), botop.group(5))
	else: user = u'{{usuário2|%s}}' % botop.group(3)
	botling = bl.search(botpage)
	if botling: botling = botling.group(1)
	else: botling = u' '
	bottar = bt.search(botpage)
	if bottar: bottar = bottar.group(1)
	else: bottar = u' '
	tabela += u'|-\n|{{usuário2|%s}}||%s||%s||%s||%s\n' % (bot['name'],user,botling,bottar,ativ)
    tabela += u'|}\n'
    lista = pywikibot.Page(site,u'Wikipédia:Robôs/Lista').get()
    lista = re.sub(ur'(?s)== Todos robôs marcados ==.*?\n==',u'== Todos robôs marcados ==\n{0}\n=='.format(tabela),lista)
    pywikibot.Page(site,u'Wikipédia:Robôs/Lista').put(lista,u'Bot: Atualizando tabela de robôs marcados')
    


if __name__ == "__main__":
    try: main()
    finally: pywikibot.stopme()