Wikipédia:Robôs/Pedidos de aprovação/Efeldbot

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

pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util

Operator: Eduardofeld

Automatic or manually assisted: automático

Programming language(s): php

Function summary: efetuar as tarefas listadas na documentação respectiva. Suas tarefas são essencialmente inofensivas, consistindo tarefas já testadas por operação manual (listas de candidatos a estatutos e listas de abstinência).

Requer a dispensa das cinquenta edições, tendo em vista o pequeno número de edições que será feito nesta primeira tarefa..

Edit period(s) (e.g. continuous, daily, one time run): a tarefa de elaboração de listas é semestral. Assim, a cada semestre serão geradas cerca de três listas (abstinência, autorrevisor e de reversor), além de um pedido automático de reversor para cada um dos candidatos.

Edit rate requested: não precisará inicialmente do estatuto de bot, portanto, terá, para a primeira tarefa, a mesma limitação de editores em geral. Poderá gerar, no máximo, uma página por minuto.

Already has a bot flag (Y/N):

Function details: se aprovado, será automatizada a operação da realização de listas de candidaturas e de abstinência. Posteriormente, dependendo de aprovação na esplanada e novo pedido de aprovação aqui, com período de testes com as cinquenta edições, deverá avisar a usuários cadastrados e criar requerimentos nas seguintes situações:

  • Há discussões com tempo expirado.
  • Há páginas a proteger, que não foram objeto de pedido e estão sendo insistentemente vandalizadas.
  • Há discussões a arquivar.
  • Seu nome foi citado numa discussão.
  • Um assunto que lhe interessa é objeto de uma discussão

Discussion[editar código-fonte]

Até onde eu saiba, bots não podem dar boas vindas a novos usuários. Rjclaudio msg 11h40min de 10 de janeiro de 2013 (UTC)[responder]

Está escrito em que página? Efeldbot (discussão) 11h43min de 10 de janeiro de 2013 (UTC)[responder]
Tema recorrente, já foi discutido algumas vezes. Provavelmente não está na documentação q bots não podem dar boas vindas, mas não significa q não possa apenas q ninguém colocou. Olhando por isso tem Wikipédia:Esplanada/propostas/Automatizar bem-vindo a novos contribuintes (19ago2009), Wikipédia:Esplanada/geral/Idéia para bot para dar boas-vindas a usuários novatos que editam automaticamente (23dez2011) e Wikipédia:Esplanada/geral/Bem-vindo(a) (2jan2012), todas sem consenso para usar o bot. O costume de não usar bot para boas vindas é mais antigo e não saberia indicar onde foi a discussão. Mas o costume existe. Se for pra um bot fazer isso seria bom uma discussão na esplanada.
Alias, tb seria bom uma discussão na esplanada para o bot dar avisos a discussões, como falei aqui, já q esse assunto de avisar os outros já rendeu várias discussões e sem consenso.
Rjclaudio msg 18h23min de 10 de janeiro de 2013 (UTC)[responder]
De preferência levar pra esplanada em tópicos específicos sobre o tema. Criar um tópico para dar boas vindas por bot, e outro tópico para avisar usuários q há discussões de seu interesse. Rjclaudio msg 18h27min de 10 de janeiro de 2013 (UTC)[responder]
As discussões com tempo expirado seria oq? Discussão de bloqueio, PE, e outras? Já temos cat para isso, mas poderia ser útil um bot para manter uma página de 'pendências administrativas' atualizada.
As tarefas de candidatos e de abstinência ambas já foram executadas e usadas, então a comunidade não é contra, podendo ser aprovada.
E já tendo sido feita, precisaria fazer as 50 edições? Se o script não é para fazer várias edições, sendo só paras listas, não há pq pedir as 50 edições para essas 2 tarefas. Pras outras tarefas aí sim precisaria das 50 edições de teste para ter a aprovação para serem feitas, então qnd o script para essas tiver pronto faz um novo pedido de aprovação para fazer as edições de teste e aprovar as novas tarefas.
Rjclaudio msg 18h32min de 10 de janeiro de 2013 (UTC)[responder]
Não vejo por que fazer um novo pedido. Podemos aproveitar este pedido e ressalvar que algumas destas funcionalidades só serão usadas se aprovadas em discussão específica. Quanto às boas-vindas, seria uma forma de fazer as 50 edições e testar se o bot funciona, mas se não tiver de fazer as 50 edições, eu retiro as boas-vindas (este não seria, de todo modo, uma tarefa que ficaria a posteriori, mas só na fase de testes, mas já que foi tão rejeitado assim, eu retiro). E. Feld fala 20h04min de 10 de janeiro de 2013 (UTC)[responder]
Feitas as alterações no pedido (ver acima os trechos sublinhados). E. Feld fala 20h08min de 10 de janeiro de 2013 (UTC)[responder]
Citação: Não vejo por que fazer um novo pedido - é q me parece ser assim q funciona. Veja Wikipédia:Robôs/Pedidos de aprovação/Aleth Bot 5 e Wikipédia:Robôs/Pedidos de aprovação/Aleth Bot 6, as duas tarefas já tinham aprovação da comunidade e mesmo assim se fez um novo pedido para a tarefa. Se não me engano o bot do chico pra central de fiabilidade tb foi algo do tipo, mesmo tendo aprovação da comunidade e já tendo sido aprovado pra uso na central de fusões ainda precisou de uma nova aprovação (q podia até ser no mesmo pedido) para a central de fiabilidade.
Não sei se está assim nas regras, mas é assim q se tem feito. Cada tarefa é um novo pedido (q pode ser na mesma página, mas ainda assim são processos separados), um novo período de testes, uma nova análise das edições de teste, e uma nova aprovação. Não é pq o bot já recebeu a flag q a partir daí basta ter a aprovação da comunidade q não se precisa mais fazer pedidos de aprovação nem edições de teste.
Rjclaudio msg 20h38min de 10 de janeiro de 2013 (UTC)[responder]
Feito E. Feld fala 20h57min de 10 de janeiro de 2013 (UTC)[responder]
Efeld, dá uma leitura a Wikipédia:Política de robôs, e podes encontrar alguns exemplos de pedidos semelhantes em Usuária:Aleth_Bot. Na Wikipédia:Política de robôs podes encontrar em Wikipédia:Política de robôs#Requisitos técnicos os principais requisitos para um robô, tais como:
2. É útil, ou seja, permite aumentar a quantidade e qualidade de conteúdo, ou a sua verificabilidade.
Ou seja, o resultado das edições do robô têm de ter valor acrescentado, seja melhorando os artigos, seja tornando a edição ou o sistema da wikipédia mais funcional.
4. Executa apenas as tarefas para as quais há consenso.
Ou seja, antes de ser solicitada a aprovação, a tarefa tem de ser consensual. Se outro bot já realizar a mesma tarefa, depreende-se de que é aceite pela comunidade, mas novas tarefas têm de passar primeiro pelo crivo da comunidade, até para que se manifeste interessada em utilizar esses recursos. Por exemplo, suponhamos que o bot é aprovado com estas tarefas propostas, se depois ninguém as utilizar, acabam por ir contra o ponto 2, da sua utilidade que não é aplicada, logo não trás valor acrescentado.
Há ainda alguns ajustes a fazer no pedido:
Edit period - pelas tarefas, parece-me que o script correria de x em x tempo, se assim for, convém indicar ai.
Edit rate requested - Aqui tens de fazer uma estimativa de quantas páginas deve editar por minuto. Se for somente para criar listas, aí basta indicar que deve fazer x alterações cada vez que correr.
Um dos meus bots já faz vários arquivamentos de discussão (Wikipédia:Robôs/Pedidos de aprovação/Aleth Bot 4, Wikipédia:Robôs/Pedidos de aprovação/Aleth Bot 5) e há outro pedido em andamento para arquivar discussões de forma diferente (Wikipédia:Robôs/Pedidos de aprovação/Hazard-Bot). Podes desenvolver um pouco mais que páginas e como arquivará, e de que forma é complementar aos dois bots?
Sobre os pedidos para cada tarefa, há referência às tarefas aprovadas na política de bot, mas não está devidamente explicita, será algo a rever numa futura actualização da política. Alchimista Fala comigo! 15h59min de 11 de janeiro de 2013 (UTC)[responder]
Quanto aos itens faltantes no formulário, Feito.
Quanto às tarefas adicionais (avisos), pode não ter ficado claro, mas, após o diálogo com o Rjclaudio, estes itens ficaram para depois, ou seja, este pedido é só para as listas (que já são feitas) poderem ser feitas pelo script, automaticamente (só e somente isto), o que não me parece um "big deal". Assim, prefiro entrar no extenso debate sobre os avisos num próximo pedido, ficando definido que tais itens são apenas de caráter informativo, tipo "pretendo, futuramente...", tanto que já consta que dependerão de novo pedido.
Quanto à utilidade e à "consensualidade" do bot de criar listas, isto já está justificado, mas especificamente no debate acima com o Rjclaudio, sendo que o mesmo concordou com a aprovação imediata desta parte, já que isto já passou pela esplanada e pelo consenso. A utilidade das listas é indireta, ou seja
  • candidatos a autorrevisor que passaram despercebidos podem estar sobrecarregando os patrulhadores
  • candidatos a reversor que passaram despercebidos podem estar com um potencial desperdiçado para combater vandalismo por ferramentas como Huggle.
  • editores com estatuto e inativos podem causar dano, por exemplo, pelo possível "roubo" da conta por terceiros.

E. Feld fala 16h13min de 11 de janeiro de 2013 (UTC)[responder]

Peço a apreciação deste pedido, pois já estou preparando o segundo. E. Feld fala 18h41min de 24 de janeiro de 2013 (UTC)[responder]

Como as listagens vão ser feitas com um espaço de meses, e vai editar somente no domínio usuário, não me parece ser necessária a flag, mas prefiro ouvir outras opiniões. Contudo fiquei curioso no método que o bot usa para criar as listagens através da API, podes explicar quais os procedimentos usados pelo bot? Alchimista Fala comigo! 15h58min de 13 de fevereiro de 2013 (UTC)[responder]
Melhor do que isto, eu posso colocar o programa no Sourceforge. Antes disto, entretanto, devo esclarecer que (agora que entendo que as autorizações são para cada tarefa), neste momento exato, não estou pedindo a flag de robô, mas a autorização para que o programa, ele próprio, faça as edições. Do pouco que eu entendo sobre os procedimentos de validação dos robôs, não é permitido fazer edições automáticas por robôs que não foram oficialmente autorizados, com ou sem flag. Não é isto? Caso eu esteja errado, eu simplesmente peço o cancelamento deste pedido e parto para os pedidos subsequentes, sobre as demais tarefas. Um abç. E. Feld fala 16h12min de 13 de fevereiro de 2013 (UTC)[responder]
Oficialmente, qualquer robõ precisa de autorização, seja para operar com ou sem flag, há, por exemplo, um robô que de vez em quando actualiza algumas estatísticas, mas ai, como são poucas edições, espaçadas no tempo e onde a API apenas é precisa para gravar uma edição, não tem havido grande problema por parte da comunidade. Agora no caso da listagem, como são nas sub-páginas e espaçadas no tempo, pode-se aplicar o mesmo sistema, a questão de saber como forma as listagens prendem-se com a possibilidade de a flag trazer benefícios em termos de utilização da API. Alchimista Fala comigo! 16h01min de 25 de fevereiro de 2013 (UTC)[responder]
Por hora tb não me parece preciso a flag, são edições espaçadas (agora um pouco mais espaçadas -espero- pq absenteísmo de autorrevisor aumentou para cinco anos), mas isso me parece detalhe pois se pretende ter mais tarefas q essas sim precisarão da flag, então deixa esse detalhe para ser definido depois. Não vejo problema com essas tarefas, por mim aprovamos e vamos logo para a próxima. Rjclaudio msg 16h06min de 25 de fevereiro de 2013 (UTC)[responder]
Rj, o problema prende-se com a forma como a API é usada para obter as listagens, eu não tenho ideia de como o bot está a fazer, e pode haver vantanges em ter flag, mesmo editando espaçadamente, pois por exemplo, com a flag, consegue obter listagens com 500 resultados em vez de 10 ou 500. Além do mais, é preciso ter a certeza de que a API não está a ser sobrecarregada com querys desnecessárias ou excessivas, dai ter solicitado a explicação sobre como o robô obtêm a informação.Alchimista Fala comigo! 17h51min de 26 de fevereiro de 2013 (UTC)[responder]
Não sei bem o que quer dizer "uso da API", mas, por intuição, me parece que se trata do conjunto de ferramentas disponíveis para o software Mediawiki interagir com os robôs. Se é esta a questão, não haverá esta sobrecarga, pois as listagens são realizadas por procedimentos que um humano poderia fazer (com a única diferença que quem faz é um programa). Em outras palavras, eu carrego as url's com as informações necessárias e trato-as com o objetivo de filtrar os usuários. No final de tudo, aí sim, eu uso a API para editar. Dou aqui exemplos de trechos de programa de cada caso.

Primeira situação: carregamento de dados (autorrevisores inativos - autorrev_inativo.php)

<?php
  require '../lib/lib_abstin.php';
  ini_set("user_agent", "GlobalGuide/1.0");
  $texto = file_get_contents('http://pt.wikipedia.org/w/index.php?title=Especial:Lista_de_utilizadores/autoreviewer&offset=&limit=500&group=autoreviewer');
  $opurl = fopen('url_lista_autorrev.txt','w');
  fwrite($opurl,$texto);
  fclose($opurl);
  $op = fopen('lista_autorrev.txt','w'); 
  //ciclo de definição de trechos de usuários
  $i = 0;
  $primciclo =  TRUE;
  while (!empty($texto)){
    $posusu = strpos($texto,'title="Usu');
    if ($posusu !== FALSE){ 
      $trecho = substr($texto,0,$posusu);
      $texto = substr($texto,$posusu + 12);
      //definição do usuário e estatutos
      if (!$primciclo){
        if (substr($trecho,3,3) == '(a)'){
          $trecho = substr($trecho,7);
        }
        else{
          $trecho = substr($trecho,4);
        }
        $posfimusu = strpos($trecho,'" class');
        $nomeusu = substr($trecho,0,$posfimusu);
        $nomeusu = str_replace(' ','_',$nomeusu);
        if (substr($nomeusu,0,7) != 'Discuss' && ($nomeusu != '')){
          fwrite($op,$nomeusu.'@');
          $diasedic = dias_ultima_edicao($nomeusu);
          fwrite($op,' '.$diasedic);
          if ($diasedic > 180) fwrite($op,'INATIVO');
          fwrite($op,chr(13).chr(10));
        }
      }
    }
    else{
      $trecho = $texto;
      $texto = '';
    }
    $primciclo = FALSE;
  }
  fclose($op);
?>

Segunda situação: editando uma página já pronta:

<?php
        global $cont;
        global $settings;
        $settings['wikiroot'] = "http://pt.wikipedia.org";
        $settings['user'] = "Eduardofeld";
        $settings['pass'] = "";
        $settings['cookiefile'] = "cookies1.txt";
        try {
                $token = login($settings['user'], $settings['pass']);
                login($settings['user'], $settings['pass'], $token);
                echo ("SUCCESS");
                echo httpRequest('http://pt.wikipedia.org/w/index.php?title=Usu%C3%A1rio:Eduardofeld&action=submit','wpTextbox1=aaa&wpSummary=não se assuste, robô em teste&wpMinoredit=&wpWatchthis=wpSection=&wpScrolltop=&wpEditToken='.urlencode('c3c07f2cac147b3357f8cb095b2e1524+\\').'&wpStarttime=20130109232448&wpEdittime=20121228163112');
        } catch (Exception $e) {
                die("FAILED: " . $e->getMessage());
        }
}
?>

Note que as duas situações já foram testadas sem prévia autorização e não causaram qualquer problema (espero não ser bloqueado por isto . A primeira não usa a API, mas apenas carrega url's e faz filtragens. A segunda é, igualmente, inofensiva, pois apenas apresenta um texto para edição e, no caso específico das listas, serão poucos textos. Assim, não há, de modo algum, qualquer sobrecarga. E. Feld fala 19h52min de 26 de fevereiro de 2013 (UTC)[responder]

Não te preocupes que a intenção não é bloquear ;). Vejamos o primeiro caso. Apesar de ser apenas uma chamada de tempos em tempos, da forma como está, ao não usar a API, leva a que mal se atinja o limite de utilizadores por página, e o resultado seja apresentado em duas páginas, o script vai apanhar somente os da primeira página, isto pelo que vi. Além do mais, para verificares se editou nos últimos 180 dias, presumo que verifiques quando um user fez a última edit um por um, estou correcto? Uma vez mais, reforço que não estou aqui a censurar o teu trabalho, encara isto como um aprimorar do script por forma a torna-lo mais eficaz, e por isso perguntei sobre o modo como ele opera, porque é da forma que evitas problemas futuros. Por exemplo, em vez de usares a página especial no primeiro caso, podes usar a API, ora experimenta este link: https://pt.wikipedia.org/w/api.php?action=query&list=allusers&augroup=autoreviewer&aulimit=500&auprop=editcount. Vês como tens logo a listagem, já com o editcount de cada user? Para usares no bot, basta colocares no final "format=xml" (Link) e automáticamente tens tudo o que precisas, pois guardando o editcount, da próxima vez que correres o script já podes verificar se efectuou alguma edição nos entretantos. Como estás a verificar a última edição? Alchimista Fala comigo! 23h06min de 26 de fevereiro de 2013 (UTC)[responder]

Sim, vc tem toda a razão: há consultas desnecessárias, se levarmos em conta que há uma API que favorece a otimização desses recursos. O programa pode (e deve) ser aprimorado com vistas a se tornar mais eficiente com o uso da API. Mas, para isto, é preciso autorização. Assim, este teste inicial não tem de modo algum a pretensão de demonstrar eficiência máxima, mas apenas revelar um protótipo, a partir do qual, com autorização, posso ir passo a passo, com segurança, substituindo as consultas obsoletas por aquelas mais adequadas. Esta é uma situação parecida com a do recém-formado, que fica num loop infinito: para conseguir emprego, é preciso experiência, mas para ter experiência, é preciso ter emprego. Entendo que seus conselhos são muito corretos, mas ficarei pisando em ovos se esta autorização inicial não for dada. Pense bem: se vc me autoriza esta primeira tarefa, eu posso, com tranquilidade, sem temer que alguém diga que estou operando sem autorização, fazer as alterações que vc indicou e, assim aprendendo, possa reaproveitá-las nas próximas tarefas. E, para isto, volto a repetir que, apesar da ineficiência inicial, não haverá riscos para a integridade do sistema (não além do que um humano pode fazer). E. Feld fala 23h24min de 26 de fevereiro de 2013 (UTC)[responder]
A última edição vem do Toolserver, um a um. Também agradeço indicações de otimização. E. Feld fala 23h30min de 26 de fevereiro de 2013 (UTC)[responder]
Pode me passar um link da documentação das urls das queries da API? E. Feld fala 23h31min de 26 de fevereiro de 2013 (UTC)Ok, já vi a documentação na raíz. E. Feld fala 23h36min de 26 de fevereiro de 2013 (UTC)[responder]

Cancelamento. Agora, entendendo melhor o problema, peço o cancelamento deste pedido, para que eu possa fazer as mudanças de otimização e, após, fazer um novo pedido, se referindo a este como antecedente. E. Feld fala 23h36min de 26 de fevereiro de 2013 (UTC)[responder]

Não precisas de cancelar o pedido, para os pedidos serem aprovados é necessário o bot estar em conformidade cm as políticas, e estes pedidos não são rígidos ao ponto de um bot que ainda não está devidamente apurado ter de ser cancelado, podes aproveitar este espaço para ir tirando as dúvidas,e se quiseres, vou dando-te a ajuda que precisares, aqui ou na minha página de discussão. Até porque se analisares bem o caso, como a API já dá o resultado num formato xml, não é necessário filtrar a informação a partir do html, basta usar um módulo de xml que tens os dados bem mais rápido. Repito que tanto aqui como na minha discussão, no que precisares podes contar com a minha ajuda, a API pode parecer algo confusa, mas tem a sua lógica. Alchimista Fala comigo! 14h58min de 27 de fevereiro de 2013 (UTC)[responder]
Ok, já entendi a lógica da API, vou reformular os programas usando estes conceitos e, após, volto a comentar, aqui mesmo. Grato. Eduardo. E. Feld fala 17h26min de 27 de fevereiro de 2013 (UTC)[responder]