Resgatando antigos e-mails do Yahoo Groups com Python

codigo em Python

Mais um post pra deixar registrado algo que estava brincando há um tempinho.

Então, havia no Yahoo Grupos, no início deste século, uma lista de discussão sobre gibis chamada GibiHouse. Ali se reuniam grandes colecionadores e o pessoal desta indústria nacional e, muitas vezes, saiam informações que só vi ali e em nenhum outro lugar. Como aconteceu com muita coisa na Internet as redes sociais tomaram conta de tudo, a discussão migrou e a lista esfriou.

Por volta de 2012 usei um script para salvar as mensagens da GibiHouse em um arquivo que ficou guardado nos backups. Lá no fim dos grupos do Yahoo eles forneceram uma ferramenta pra fazer a mesma coisa e entregavam um arquivo em MBX. Perdi essa oportunidade e fiquei com o que tinha salvo antes, no formato de banco de dados mdb. O formato MBX é bem mais fácil de converter para algo navegável, tipo o que foi feito com a lista de videogames antigos Canal3. Parece que o pessoal do Internet Archieve salvou muita coisa do Yahoo Groups, mas é difícil encontrar alguma coisa por lá.

O mdb da lista ficou guardado aqui e as vezes eu tentava dar uma olhada nele, pra achar alguma mensagem da época. O problema é que o script usado salvava uma grande tabela onde o campo 'message' era o e-mail inteiro em html. Isso dificultava ler alguma coisa no LibreOffice Base, por exemplo. O ideal era extrair esse conteúdo e deixar de forma mais legível. Tentei algumas vezes converter o arquivão (327 MB), sem sucesso. Até que nas minhas últimas férias consegui gerar um html para cada mensagem da lista.

O primeiro passo foi converter o mdb para csv, formato que eu gosto e consigo tratar de forma mais rápida. Usando o MDBTools no Linux ficou bem fácil. Listei as tabelas do mdb com o comando mdb-tables e converti para csv com o comando mdb-export. A tabela que importava era a Ygr_GibiHouse.csv que continha as quase 24000 mensagens, de 2001 até 2012.

Com o arquivo num formato mais familiar foi só usar um pouco de Python pra extrair e salvar mensagem por mensagem num arquivo HTML pra abrir no navegador. Segue abaixo o código final, que também coloquei no meu Github, vai que sirva pra mais alguém. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import csv
import os

dir_path = "path"

#open the file Ygr_GibiHouse.csv with UTF-8 character map
with open('Ygr_GibiHouse.csv', encoding='utf-8') as csvfile:
    #read one row at a time
    reader = csv.DictReader(csvfile)
    #create a list of dictionaries
    data = list(reader)

    for i in range(0, len(data)): 
        k = i // 1000   #divide by 1000 to get the thousandth digit

        #create a directory in dir_path
        if not os.path.exists(dir_path + str(k)):
            os.makedirs(dir_path + str(k))

        #create a html file
        # open the file
        with open(dir_path + str(k) + '\\gibi' + str(i) + '.html', 'w', encoding='utf-8') as html:  
            # write the html header
            html.write('<html>\n')
            # write the html body
            html.write('<body>\n')

            # write de email in the body       
            html.write(data[i]['RecDate'] + '<br>\n')    
            html.write(data[i]['From'] + '<br><br>\n')           
            html.write(data[i]['Subject'] + '<br><br>\n')                         
            html.write(data[i]['Message'] + '<br>\n')   

            # write the html footer
            html.write('</body>\n')
            html.write('</html>\n')

            # close the file
            html.close()

    #close the file
    csvfile.close()

Numa versão anterior salvei todas as mensagens num grande e único arquivo HTML (86MB) que ficou bem ruim de usar no navegador. Mais pra frente vou ver se implemento um sistema para navegar pelas mensagens por data, assunto, etc. Por agora já me serve pra encontrar meus e-mails da época, como o primeiro com a lista de edições especiais da revista MAD nacional:

E-mail

Um comentário:

  1. Gostei bastante da ideia, principalmente do motivo que o fez aprender.
    Tenho algumas edições da MAD, mas muitos quadrinhos, cadastrei minha coleção no Guia dos Quadrinhos.Parabéns pelo blog!

    ResponderExcluir

1. Alguns comentários são moderados automaticamente. Caso isso ocorra pode levar algum tempo até que eu veja e o libere.
2. Comentários fora do assunto do post podem ser apagados.
3. Não, eu não posso consertar os seus aparelhos!