Frequência de envio de emails
Preciso de horários mais humanos à frente do computador…
… o gráfico foi gerado agregando todos os emails que enviei nos últimos seis anos[1] por hora e dividindo pelo total. Achei interessante que um bloco bem grande de horas tenha valores parecidos.
E o script para gerá-lo começa por pegar o campo Date de todos os emails, depois o divide em colunas separadas por “:” para se livrar do “Date:” inicial, remove as entradas inválidas, como emails em HTML[2], emails com data não padrão (usando “/” para separação), emails com especificação de hora estranha (a remoção do “at”
[3]. Depois disso, as datas são passadas para o comando date do unix, convertidas para UTC, pois queria todas as horas em UTC-3, e as horas são repassadas ao script de plotagem:
SENT_MAIL=/caminho/para/emails/enviados
grep -r ^Date: ${SENT_MAIL} | \
cut --complement -d : -f 1-3 | \
grep -v \<br\> | grep -v \/ | grep -v 'at' | \
date -f /dev/stdin -u +%H | \
./plot.py
O script de plotagem recebe as horas, as soma e, por fim, as exibe:
import numpy as np
from pylab import *
from math import sqrt
bins = {}
for line in sys.stdin:
hour = int(line.strip()) - 3
if hour < 0:
hour += 24
bins[hour] = bins.get(hour, 0) + 1
SAMPLES = len(bins)
width = 0.35 * 0.5
total = float(sum(bins.values()))
stuff = [i/total for i in bins.values()]
ind = np.arange(SAMPLES + 1)
ind = 0.5 * (ind[1:]+ind[:-1])
fdata = figure()
p = bar(ind, stuff)
xticks(ind + width/2 + 0.3, [i + 1 for i in range(SAMPLES + 1)])
title('Chance de eu enviar um email por hora')
xlabel('Hora do dia')
ylabel('"Probabilidade"')
defsize = fdata.get_size_inches()
golden = (sqrt(5) - 1)/2
fdata.set_size_inches(defsize[0], defsize[1] * golden)
grid()
fdata.savefig('mails.png')
Sentia falta de escrever esses scripts inúteis. Esses webmails da vida bem que poderiam exibir uns dados assim. Garanto que eles têm esse tipo de informação.
Fiz um script em Python capaz de coletar as datas dos emails enviados do Gmail via IMAP. Obviamente, o acesso IMAP deve ser habilitado para que o script funcione. O script deve funcionar em qualquer Python da série 2.x na versão 2.4 ou superior.
#!/usr/bin/python
import getpass, imaplib
ssl = True
host = 'imap.gmail.com'
mbox = '[Gmail]/Sent Mail'
port = 993 if ssl else None
imapmethod = imaplib.IMAP4_SSL if ssl else imaplib.IMAP4
def main():
user = raw_input('Username: ')
conn = imapmethod(host, port)
conn.login(user, getpass.getpass())
conn.select(mailbox = mbox)
typ, data = conn.search(None, 'ALL')
for mnum in data[0].split():
_, tmp = conn.fetch(mnum, '(BODY[HEADER.FIELDS (DATE)])')
date = tmp[0][1].strip()
print date
conn.close()
conn.logout()
if __name__ == '__main__':
main()
Notas
Textos Relacionados (gerado automaticamente):
Sobre esta página
Atualmente, você está lendo “Frequência de envio de emails,” uma página do Vale do Trovão
- Publicado em:
- 7.12.10 / 12pm
- Categoria:
- programação

View Comments
Ir para o formulário de comentários | comments rss [?] | trackback uri [?]