]> git.phdru.name Git - xsetbg.git/commitdiff
Parse timedelta in ymdThms format.
authorOleg Broytman <phd@phdru.name>
Sun, 19 Aug 2012 15:16:59 +0000 (15:16 +0000)
committerOleg Broytman <phd@phdru.name>
Sun, 19 Aug 2012 15:16:59 +0000 (15:16 +0000)
git-svn-id: file:///home/phd/archive/SVN/xsetbg/trunk@56 143022c7-580b-0410-bae3-87f2bf5d3141

xsetbg.py

index 10f76db5378f847ee5a56b0a450a743975916076..6237ac729bf12f2e209cd97b50abb05785347913 100755 (executable)
--- a/xsetbg.py
+++ b/xsetbg.py
@@ -18,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)
@@ -76,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