Browse Source

proof of concept that plots email time against day

George C. Privon 11 năm trước cách đây
mục cha
commit
cf257004ca
1 tập tin đã thay đổi với 40 bổ sung0 xóa
  1. 40 0
      email_stats.py

+ 40 - 0
email_stats.py

@@ -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')