email_stats.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/python
  2. import mailbox
  3. import datetime
  4. import matplotlib.pyplot as plt
  5. import matplotlib.dates as mdates
  6. import argparse
  7. parser = argparse.ArgumentParser()
  8. parser.add_argument('mbox', help='Mailbox to analyze.')
  9. parser.add_argument('--plotfile', '-p', default=False, action='store',
  10. help='Name of output plotting file.')
  11. args = parser.parse_args()
  12. plt.figure()
  13. plt.ylim([0, 24])
  14. plt.ylabel('Hour')
  15. plt.xlabel('Date')
  16. a = mailbox.mbox(args.mbox)
  17. for msg in a:
  18. if msg['date'] is not None:
  19. try:
  20. z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %z')
  21. except ValueError:
  22. try:
  23. z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %Z')
  24. except ValueError:
  25. print("Skipping message from " + msg['date'])
  26. continue
  27. plt.plot_date(z.date(),
  28. z.hour + z.minute/60.,
  29. fmt='r.',
  30. # tz=z.tzname(),
  31. xdate=True)
  32. if args.plotfile:
  33. plt.savefig(args.plotfile)
  34. else:
  35. plt.savefig('email_times.png')