|
|
@@ -0,0 +1,40 @@
|
|
|
+#!/usr/bin/python
|
|
|
+
|
|
|
+import mailbox
|
|
|
+import datetime
|
|
|
+import matplotlib.pyplot as plt
|
|
|
+import matplotlib.dates as mdates
|
|
|
+import argparse
|
|
|
+
|
|
|
+
|
|
|
+parser = argparse.ArgumentParser()
|
|
|
+parser.add_argument('mbox', help='Mailbox to analyze.')
|
|
|
+parser.add_argument('--plotfile', '-p', default=False, action='store',
|
|
|
+ help='Name of output plotting file.')
|
|
|
+args = parser.parse_args()
|
|
|
+
|
|
|
+plt.figure()
|
|
|
+plt.ylim([0, 24])
|
|
|
+plt.ylabel('Hour')
|
|
|
+plt.xlabel('Date')
|
|
|
+a = mailbox.mbox(args.mbox)
|
|
|
+for msg in a:
|
|
|
+ if msg['date'] is not None:
|
|
|
+ try:
|
|
|
+ z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %z')
|
|
|
+ except ValueError:
|
|
|
+ try:
|
|
|
+ z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %Z')
|
|
|
+ except ValueError:
|
|
|
+ print("Skipping message from " + msg['date'])
|
|
|
+ continue
|
|
|
+ plt.plot_date(z.date(),
|
|
|
+ z.hour + z.minute/60.,
|
|
|
+ fmt='r.',
|
|
|
+ # tz=z.tzname(),
|
|
|
+ xdate=True)
|
|
|
+
|
|
|
+if args.plotfile:
|
|
|
+ plt.savefig(args.plotfile)
|
|
|
+else:
|
|
|
+ plt.savefig('email_times.png')
|