Guest User

timestamp.py

a guest
Jun 12th, 2012
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # timestamp.py
  3. # Author: Zachary Cutlip
  4. #         twitter: @zcutlip
  5. # Purpose: A program to fix sorting of mail messages that have been POPed or IMAPed in the wrong order
  6. #          Compares time stamp sent and timestamp received on an RFC822-formatted email message,
  7. #          and renames the message file using the most recent timestamp that is no more than 24 hours
  8. #          after the date sent.  Updates the file's atime/mtime with the timestamp, as well. Does not
  9. #          modify the headers or contents of the message.
  10.  
  11. import sys
  12. import os
  13. import email
  14. import email.utils
  15. import re
  16. regex=re.compile("([0-9]+)(\..*$)")
  17.  
  18. msg_filename=sys.argv[1]
  19. print msg_filename
  20. msg=email.message_from_file(open(msg_filename,"r"))
  21.  
  22. datesent=email.utils.mktime_tz(email.utils.parsedate_tz(msg.get("Date")))
  23.  
  24. #print datesent
  25. date_rx=0
  26. for rx_hdr in msg.get_all("Received"):
  27.     rx_date_str=rx_hdr.split(";")[-1]
  28.     #print rx_date_str
  29.     tmp_rx=email.utils.mktime_tz(email.utils.parsedate_tz(rx_date_str))
  30.     if(tmp_rx - datesent) > (24*60*60):
  31.         continue
  32.  
  33.     date_rx=tmp_rx
  34.     break
  35.  
  36. #print date_rx
  37.  
  38.  
  39. #received header missing?
  40. if(date_rx < 1):
  41.     date_rx = datesent
  42.  
  43. m=regex.match(msg_filename)
  44.  
  45. if len(m.groups()) == 2:
  46.     newfilename=str(int(date_rx))+m.groups()[1]
  47.     print newfilename
  48.     if os.path.isfile(newfilename):
  49.         print "File exists!: "+newfilename
  50.     else:    
  51.         os.rename(msg_filename,newfilename)
  52.         os.utime(newfilename,(date_rx,date_rx))
Advertisement
Add Comment
Please, Sign In to add comment