From 54604011b314ab36cb8811d4191d1d2f6c6d819d Mon Sep 17 00:00:00 2001 From: Michael Krayer Date: Fri, 22 May 2020 11:42:05 +0200 Subject: [PATCH] added younger than routines --- archivemail | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/archivemail b/archivemail index 80375cd..8668270 100755 --- a/archivemail +++ b/archivemail @@ -1012,11 +1012,17 @@ def should_archive(message): old = is_older_than_days(time_message, options.days_old_max) else: old = is_older_than_time(time_message, options.date_old_max) + if options.date_old_min == None: + new = is_younger_than_days(time_message, options.days_old_min) + else: + new = is_younger_than_time(time_message, options.date_old_min) # I could probably do this in one if statement, but then I wouldn't # understand it. if not old: return False + if not new: + return False if not options.include_flagged and is_flagged(message): return False if options.min_size and is_smaller(message, options.min_size): @@ -1065,6 +1071,45 @@ def is_older_than_days(time_message, max_days): return True return False +def is_younger_than_time(time_message, min_time): + """Return true if a message is newer than the specified time, + false otherwise. + + Arguments: + time_message -- the delivery date of the message measured in seconds + since the epoch + min_time -- minimum time allowed for message + + """ + days_old = (min_time - time_message) / 24 / 60 / 60 + if time_message >= min_time: + vprint("message is %.2f days newer than the specified date" % days_old) + return True + vprint("message is %.2f days older than the specified date" % \ + abs(days_old)) + return False + + +def is_younger_than_days(time_message, min_days): + """Return true if a message is newer than the specified number of days, + false otherwise. + + Arguments: + time_message -- the delivery date of the message measured in seconds + since the epoch + min_days -- minimum number of days before message is considered old + """ + time_now = time.time() + if time_message > time_now: + vprint("warning: message has date in the future") + return False + secs_old_min = (min_days * 24 * 60 * 60) + days_old = (time_now - time_message) / 24 / 60 / 60 + vprint("message is %.2f days old" % days_old) + if ((time_message + secs_old_min) >= time_now): + return True + return False + def build_imap_filter(): """Return an imap filter string"""