]> git.phdru.name Git - xsetbg.git/blobdiff - xsetbg.py
Parse timedelta in ymdThms format.
[xsetbg.git] / xsetbg.py
index a2eff700d30e58007dc6fa0e9cf90898eb8d5960..6237ac729bf12f2e209cd97b50abb05785347913 100755 (executable)
--- a/xsetbg.py
+++ b/xsetbg.py
@@ -7,12 +7,8 @@ using xli program.
 
 """
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
-
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2000-2012 PhiloSoft Design"
 __license__ = "GNU GPL"
 
 __all__ = ['host', 'port', 'change']
@@ -22,13 +18,14 @@ import sys, os
 from ConfigParser import SafeConfigParser
 
 import anydbm
+from datetime import timedelta
 import random
+import re
 import shelve
 import subprocess
 from time import time
 from fcntl import flock, LOCK_EX, LOCK_UN, LOCK_NB
 
-
 def error(error_str, error_code=1):
    sys.stderr.write("%s: Error: %s\n" % (sys.argv[0], error_str))
    sys.exit(error_code)
@@ -80,7 +77,21 @@ else:
 
 # minimum time in seconds between occurences of the same image
 if config.has_option("xsetbg", "min_delay"):
-   min_delay = config.getint("xsetbg", "min_delay")
+   min_delay = config.get("xsetbg", "min_delay")
+
+   # Borrowed from http://stackoverflow.com/a/2765366
+   td_re  = re.compile('(?:(?P<years>\d+)y)?(?:(?P<months>\d+)m)?(?:(?P<days>\d+)d)?(?:T(?:(?P<hours>\d+)h)?(?:(?P<minutes>\d+)m)?(?:(?P<seconds>\d+)s)?)?')
+   td_dict = td_re.match(min_delay).groupdict(0)
+   delta = timedelta(days=int(td_dict['days']) + (int(td_dict['months']) * 30) + (int(td_dict['years']) * 365),
+                     hours=int(td_dict['hours']),
+                     minutes=int(td_dict['minutes']),
+                     seconds=int(td_dict['seconds']))
+
+   if delta:
+      min_delay = delta.days * 24*3600 + delta.seconds
+   else:
+      min_delay = int(min_delay)
+
 else:
    min_delay = 3600*24 # 24 hours