Resolvi usar a linguagem Python para resolver alguns problemas que tenho no dia a dia, o primeiro deles é os e-mails que recebo da lista EFR, são dicas incríveis de inglês e gosto de guardá-las para estudo.
Meu problema é que o Thunderbird salva em formato EML e convenhamos que não é muito agradável armazenar estas dicas neste formato. Dentro deste arquivo existe o conteúdo da aula que está em formato HTML e, além disso, algumas dicas vem com um link para baixar o Áudio da aula. Deste modo tinha que realizar os seguintes passos:
Meu problema é que o Thunderbird salva em formato EML e convenhamos que não é muito agradável armazenar estas dicas neste formato. Dentro deste arquivo existe o conteúdo da aula que está em formato HTML e, além disso, algumas dicas vem com um link para baixar o Áudio da aula. Deste modo tinha que realizar os seguintes passos:
- Salvar com o Thunderbird o arquivo em formato EML.
- Abrir o arquivo com um editor e copiar a parte HTML com o conteúdo desejado.
- Salvar em um arquivo com a extensão HTML.
- Abrir este arquivo, clicar no link contendo o áudio da aula e realizar o download.
Baixe aqui um exemplo deste arquivo.
Concordo que são ações bem simples em se fazer e gasto no máximo 5 minutos para realizá-las, porém são 3 emails por dia, ou seja 21 emails por semana o que pode tornar 5 minutos em 01:45 por semana. Já aprendi que tempo é muito valioso e não quero perdê-lo assim.
Concordo que são ações bem simples em se fazer e gasto no máximo 5 minutos para realizá-las, porém são 3 emails por dia, ou seja 21 emails por semana o que pode tornar 5 minutos em 01:45 por semana. Já aprendi que tempo é muito valioso e não quero perdê-lo assim.
Python é uma linguagem muito simples, principalmente para aqueles que conhecem algum derivado do C como Java ou mesmo PHP e C#. No Linux já está instalado por padrão e nos outros ambiente basta baixar do site oficial. Aqui está o código que fiz para realizar todo o serviço descrito sobre o arquivo:
# ---------------------------------------------------------------------------------
# Script: LendoArqs.py
# Linguagem: Python
# Autor: Fernando Anselmo
# Criado em: 23/06/2015
# Funcionalidade:
# Converter o email da lista 'Aprendendo Ingles para HTML e baixar o arquivo MP3,
# caso exista.
# Arquivo de Entrada: formato EML (salvar pelo Thunderbird)
# ---------------------------------------------------------------------------------
import wget
class Leitura:
def obterArquivo(self):
print('=' * 60)
print('Converter o email da lista \'Aprendendo Ingl\u00EAs\' para HTML')
print('E baixar o arquivo MP3, caso exista.')
print('Por Fernando Anselmo - Vers\u00E3o 1.0')
print('Arquivo de Entrada: formato EML (salvar pelo Thunderbird)')
print('Site: http://www.aprendendoingles.com.br/')
print('=' * 60)
self.nomeArq = input('Informe o nome do arquivo (ex. EFR_0001): ')
self.caminho = input('Informe a pasta que se encontra o arquivo (ex. F:/): ')
self.url = ''
# Montagem do arquivo
def montagem(self):
entrada = open(self.caminho + self.nomeArq + '.eml', 'r+')
saida = open(self.caminho + self.nomeArq + '.html', 'w')
inicia = False
mostra1 = True
mostra2 = True
print('Passo 1. Gerando arquivo...')
for linha in entrada:
if linha.strip().startswith('<!DOCTYPE'):
inicia = True
if '<div align="center">' in linha:
mostra1 = False
if linha.strip().startswith('<div id="fromDMARC"'):
mostra2 = False
if not mostra2 and linha.strip().startswith('</body>'):
mostra2 = True
if inicia and mostra1 and mostra2 and len(linha.strip()) > 0:
if (".mp3" in linha):
self.url = linha
saida.write(linha)
if not mostra1 and linha.strip().startswith('</div>'):
mostra1 = True
if linha.strip().startswith('</html>'):
break
print('Passo 2. Arquivo gerado.')
# Fechar o arquivo
entrada.closed
saida.closed
# Baixar (se caso) o arquivo MP3
def baixarArquivo(self):
if (len(self.url) > 0):
print('Passo 3. Baixando arquivo MP3...')
self.url = self.url[self.url.index('http'):self.url.index('.mp3')+4]
wget.download(self.url, self.caminho + self.nomeArq + '.mp3')
print('Passo 4. Arquivo MP3 Baixado.')
else:
print('Passo 3. N\u00E3o cont\u00E9m arquivo MP3 para baixar.')
# Metodo principal
def main():
ler = Leitura()
ler.obterArquivo()
ler.montagem()
ler.baixarArquivo()
# Chamada inicial
if __name__ == '__main__':
main()
# Final do Arquivo
Para executá-lo basta salvar o arquivo com o nome LendoArqs.py e na janela de comandos digitar: python LendoArqs.py e o programa pedirá as informações necessárias. Lembro que para Python 2 essas informações devem ser entre aspas simples.
Baixe aqui o resultado em HTML após a execução do programa.
Não pretendo aqui dar aula de Python, recomendo se deseja aprender, faça o download gratuito do livro "Thinking in Python". Este programa está dividido em 3 partes, a primeira solicita as informações necessárias para converter o arquivo, a segunda acha o trecho correto dos códigos HTML e salva um arquivo de mesmo nome com a extensão HTML e a última verifica a existência do arquivo MP3 e procede, caso exista, seu download.
ATENÇÃO: Este programa requer o módulo wget que pode ser obtido neste site. Basta descompactar o arquivo wget.py para a pasta de instalação do Python (ex. No Linux em /usr/lib).
Outra observação é que tudo poderia ser bem mais simples, mas resolvi deixar em formato de uma classe seguindo os conceitos da Orientação a Objetos de modo que possa aproveitá-lo em outras construções.
Obrigado e até a próxima
Fernando Anselmo
Baixe aqui o resultado em HTML após a execução do programa.
Não pretendo aqui dar aula de Python, recomendo se deseja aprender, faça o download gratuito do livro "Thinking in Python". Este programa está dividido em 3 partes, a primeira solicita as informações necessárias para converter o arquivo, a segunda acha o trecho correto dos códigos HTML e salva um arquivo de mesmo nome com a extensão HTML e a última verifica a existência do arquivo MP3 e procede, caso exista, seu download.
ATENÇÃO: Este programa requer o módulo wget que pode ser obtido neste site. Basta descompactar o arquivo wget.py para a pasta de instalação do Python (ex. No Linux em /usr/lib).
Outra observação é que tudo poderia ser bem mais simples, mas resolvi deixar em formato de uma classe seguindo os conceitos da Orientação a Objetos de modo que possa aproveitá-lo em outras construções.
Obrigado e até a próxima
Fernando Anselmo
