Ir para o conteúdo

Aurium

Voltar a Blog
Tela cheia

Coletando e-mails no histórico do GMail

10 de Julho de 2012, 21:00 , por Desconhecido - 0sem comentários ainda | No one following this article yet.
Visualizado 261 vezes

Como já foi noticiado, a ASL perdeu seu servidor mais antigo, e nele estava o serviço de listas que unia várias comunidades temáticas de Software Livre no Brasil. Para tristeza geral da nação, não existia back-up, por conta da velha máxima: "cachorro com muito dono, morre de fome".

Lição aprendida e novo servidor levantado. E agora? Como reconstruir as listas?

Os owners, moderadores ou interessados foram convidados a requisitar a recriação de suas listas. Mas depois da lista recriada, como reencontrar os antigos membros? Tudo o que eu e outros temos é o histórico da lista em seu e-mail pessoal. No meu caso tudo estava no GMail, mas seria um esforço inviável ver cada e-mail enviado para a lista e copiar o endereço do remetente. Mas todo problema tem seu hack...

Bem, filtrar os e-mail para uma lista é fácil, basta buscar por to:grupo@list-host. Você já deve ter notado que ao parar o mouse sobre o nome da pessoa, ali na lista de e-mails, o GMail mostra o endereço da pessoa. Pois bem essa informação está em no atributo "email" da tag "span" que contém o nome do sujeito. Sendo assim, abri o console e comecei a tentar formas de extrair esse valor de todos os nomes listados na página. Beleza! (o código te dará detalhes de outras "descobertas")

Se você precisar coletar todos os endereços de e-mail em seu histórico, comece fazendo a busca. Então abra o console javascript e insira este código:

Array.prototype.unique = function() {
  // Thanks to Shamasis Bhattacharya:
  // http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array
  var o = {}, i, l = this.length, r = [];
  for(i=0; i<l;i+=1) o[this[i]] = this[i];
  for(i in o) r.push(o[i]);
  return r;
};

// Find and return elements inside GMail interface by its class:
function byClass(c) {
  return document.getElementById('canvas_frame')
         .contentDocument.getElementsByClassName(c);
}

// Store e-mails:
var list = [];
// Collect all e-mail senders on the page and and store them:
function collectEmails() {
  for(var p,i=0; p=byClass('yP')[i]; i++) {  // read e-mail
    list.push(p.getAttribute('email'));
  }
  for(var p,i=0; p=byClass('zF')[i]; i++) {  // unread e-mail
    list.push(p.getAttribute('email'));
  }
  list = list.unique();
}

Coletar e-mails - passo 1

Entre em cada página de resultado da sua busca e execute collectEmails().

Por fim, veja os e-mails coletados com list.join(' ').

Coletar e-mails - passo 2

Agora basta copiar a lista gerada e convidar o povo.

Limitação: Só foi possível recuperar aqueles que já haviam enviado algum e-mail para a lista, os ouvintes foram perdidos e, infelizmente, eram maioria.

Atenção: Só depois de recuperar as listas de Inkscape e GIMP que percebi que o GMail faz cache das paginações em uma parte oculta do DOM, por isso quando voltamos para a listagem de e-mails a mudança é instantânea. Por conta disto, o script localizava o e-mail de pessoas que não estavam na busca, mas que foram listadas durante meu uso do GMail. Solução: Depois de fazer sua busca, recarregue a página. O comando da busca permanecerá na URL e o GMail reiniciará na pagina de busca que você estava, mas sem o cache das paginações anteriores.


Fonte: http://softwarelivre.org/aurium/blog/coletando-e-mails-no-historico-do-gmail

0sem comentários ainda

    Enviar um comentário

    Os campos realçados são obrigatórios.

    Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.

    Cancelar