Merge pull request #16 from robweber/master

Merge Master with Frodo
This commit is contained in:
robweber 2012-09-13 07:53:36 -07:00
commit 3892a16778
2 changed files with 38 additions and 16 deletions

View File

@ -4,7 +4,9 @@ import xbmcaddon
__addon_id__= 'script.xbmcbackup'
__Addon = xbmcaddon.Addon(__addon_id__)
#global functions for logging and encoding
def data_dir():
return __Addon.getAddonInfo('profile')
def log(message,loglevel=xbmc.LOGNOTICE):
xbmc.log(encode(__addon_id__ + ": " + message),level=loglevel)

View File

@ -1,6 +1,7 @@
import xbmc
import datetime
import time
import os
import resources.lib.utils as utils
from resources.lib.croniter import croniter
from resources.lib.backup import XbmcBackup
@ -8,6 +9,7 @@ from resources.lib.backup import XbmcBackup
class BackupScheduler:
enabled = "false"
next_run = 0
settings_update_time = 0
def __init__(self):
self.enabled = utils.getSetting("enable_scheduler")
@ -18,12 +20,22 @@ class BackupScheduler:
def setup(self):
#scheduler was turned on, find next run time
utils.log("scheduler enabled, finding next run time")
self.findNextRun(time.time())
self.findNextRun(time.time(),True)
utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
def start(self):
while(not xbmc.abortRequested):
if(self.enabled == "true"):
current_enabled = utils.getSetting("enable_scheduler")
if(current_enabled == "true" and self.enabled == "false"):
#scheduler was just turned on
self.enabled = current_enabled
self.setup()
elif (current_enabled == "false" and self.enabled == "true"):
#schedule was turn off
self.enabled = current_enabled
elif(self.enabled == "true"):
#scheduler is still on
now = time.time()
if(self.next_run <= now):
@ -34,15 +46,23 @@ class BackupScheduler:
backup.run(XbmcBackup.Backup,True)
self.findNextRun(now)
else:
self.enabled = utils.getSetting("enable_scheduler")
if(self.enabled == "true"):
self.setup()
time.sleep(10)
def findNextRun(self,now):
def findNextRun(self,now,forceUpdate = False):
mod_time = self.settings_update_time
#check if the schedule has been modified
try:
#get the last modified time of the file
mod_time = os.path.getmtime(xbmc.translatePath(utils.data_dir()) + "settings.xml")
except:
#don't do anything here
mod_time = self.settings_update_time
if(mod_time > self.settings_update_time or forceUpdate):
self.settings_update_time = mod_time
#find the cron expression and get the next run time
cron_exp = self.parseSchedule()