diff --git a/packages/addons/service/downloadmanager/SABnzbd-Suite/changelog.txt b/packages/addons/service/downloadmanager/SABnzbd-Suite/changelog.txt index 65aca672fe..fb33e5a3a8 100644 --- a/packages/addons/service/downloadmanager/SABnzbd-Suite/changelog.txt +++ b/packages/addons/service/downloadmanager/SABnzbd-Suite/changelog.txt @@ -1,6 +1,7 @@ 2.1.7 - update to SABnzbd-0.7.0 - update to Headphones-89c2a8c +- perform "Keep awake while downloading" and "Wake up periodically" only if sabnzbd is enabled 2.1.6 - fixed another startup bug diff --git a/packages/addons/service/downloadmanager/SABnzbd-Suite/source/default.py b/packages/addons/service/downloadmanager/SABnzbd-Suite/source/default.py index 8618a767be..48569c495b 100644 --- a/packages/addons/service/downloadmanager/SABnzbd-Suite/source/default.py +++ b/packages/addons/service/downloadmanager/SABnzbd-Suite/source/default.py @@ -61,6 +61,9 @@ sabNzbdQueue = 'http://' + sabNzbdAddress + '/sabnzbd/api?mode=queue&output # start checking SABnzbd for activity and prevent sleeping if necessary socket.setdefaulttimeout(timeout) +# check for launching sabnzbd +sabNzbdLaunch = (__settings__.getSetting('SABNZBD_LAUNCH').lower() == 'true') + # perform some initial checks and log essential settings shouldKeepAwake = (__settings__.getSetting('SABNZBD_KEEP_AWAKE').lower() == 'true') wakePeriodically = (__settings__.getSetting('SABNZBD_PERIODIC_WAKE').lower() == 'true') @@ -73,45 +76,46 @@ if wakePeriodically: while (not xbmc.abortRequested): - # reread setting in case it has changed - shouldKeepAwake = (__settings__.getSetting('SABNZBD_KEEP_AWAKE').lower() == 'true') - wakePeriodically = (__settings__.getSetting('SABNZBD_PERIODIC_WAKE').lower() == 'true') - wakeHourIdx = int(__settings__.getSetting('SABNZBD_WAKE_AT')) + if sabNzbdLaunch: + # reread setting in case it has changed + shouldKeepAwake = (__settings__.getSetting('SABNZBD_KEEP_AWAKE').lower() == 'true') + wakePeriodically = (__settings__.getSetting('SABNZBD_PERIODIC_WAKE').lower() == 'true') + wakeHourIdx = int(__settings__.getSetting('SABNZBD_WAKE_AT')) - # check if SABnzbd is downloading - sabIsActive = False - req = urllib2.Request(sabNzbdQueue) - try: handle = urllib2.urlopen(req) - except IOError, e: - xbmc.log('SABnzbd-Suite: could not determine SABnzbds status', level=xbmc.LOGERROR) - else: - queue = handle.read() - handle.close() - sabIsActive = (queue.find('Downloading') >= 0) + # check if SABnzbd is downloading + sabIsActive = False + req = urllib2.Request(sabNzbdQueue) + try: handle = urllib2.urlopen(req) + except IOError, e: + xbmc.log('SABnzbd-Suite: could not determine SABnzbds status', level=xbmc.LOGERROR) + else: + queue = handle.read() + handle.close() + sabIsActive = (queue.find('Downloading') >= 0) - # reset idle timer when we're close to idle sleep/shutdown - if (shouldKeepAwake and sabIsActive): - response = xbmc.executehttpapi("GetGUISetting(0;powermanagement.shutdowntime)").replace('
  • ','') - shutdownTime = int(response) * 60 - idleTime = xbmc.getGlobalIdleTime() - timeToShutdown = shutdownTime - idleTime + # reset idle timer when we're close to idle sleep/shutdown + if (shouldKeepAwake and sabIsActive): + response = xbmc.executehttpapi("GetGUISetting(0;powermanagement.shutdowntime)").replace('
  • ','') + shutdownTime = int(response) * 60 + idleTime = xbmc.getGlobalIdleTime() + timeToShutdown = shutdownTime - idleTime + + if (sabIsActive and timeToShutdown <= checkInterval - timeout): + xbmc.log('SABnzbd-Suite: still downloading. Resetting XBMC idle timer.') + xbmc.executehttpapi("SendKey(0xF000)") + + # calculate and set the time to wake up at (if any) + if (wakePeriodically): + wakeHour = wakeHourIdx * 2 + 1 + timeOfDay = datetime.time(hour=wakeHour) + now = datetime.datetime.now() + wakeTime = now.combine(now.date(),timeOfDay) + if now.time() > timeOfDay: + wakeTime += datetime.timedelta(days=1) + secondsSinceEpoch = time.mktime(wakeTime.timetuple()) + open("/sys/class/rtc/rtc0/wakealarm", "w").write("0") + open("/sys/class/rtc/rtc0/wakealarm", "w").write(str(secondsSinceEpoch)) - if (sabIsActive and timeToShutdown <= checkInterval - timeout): - xbmc.log('SABnzbd-Suite: still downloading. Resetting XBMC idle timer.') - xbmc.executehttpapi("SendKey(0xF000)") - - # calculate and set the time to wake up at (if any) - if (wakePeriodically): - wakeHour = wakeHourIdx * 2 + 1 - timeOfDay = datetime.time(hour=wakeHour) - now = datetime.datetime.now() - wakeTime = now.combine(now.date(),timeOfDay) - if now.time() > timeOfDay: - wakeTime += datetime.timedelta(days=1) - secondsSinceEpoch = time.mktime(wakeTime.timetuple()) - open("/sys/class/rtc/rtc0/wakealarm", "w").write("0") - open("/sys/class/rtc/rtc0/wakealarm", "w").write(str(secondsSinceEpoch)) - time.sleep(0.250) subprocess.Popen(__stop__, shell=True, close_fds=True) diff --git a/packages/addons/service/downloadmanager/SABnzbd-Suite/source/resources/settings.xml b/packages/addons/service/downloadmanager/SABnzbd-Suite/source/resources/settings.xml index 1cd5c2b8b7..b41c86dd36 100644 --- a/packages/addons/service/downloadmanager/SABnzbd-Suite/source/resources/settings.xml +++ b/packages/addons/service/downloadmanager/SABnzbd-Suite/source/resources/settings.xml @@ -19,8 +19,8 @@ - - + +