diff options
Diffstat (limited to 'pyload/plugins/addons')
| -rw-r--r-- | pyload/plugins/addons/RestartFailed.py | 63 | 
1 files changed, 44 insertions, 19 deletions
| diff --git a/pyload/plugins/addons/RestartFailed.py b/pyload/plugins/addons/RestartFailed.py index 3bf6fe365..64853194a 100644 --- a/pyload/plugins/addons/RestartFailed.py +++ b/pyload/plugins/addons/RestartFailed.py @@ -1,32 +1,57 @@  # -*- coding: utf-8 -*- +""" +    This program is free software; you can redistribute it and/or modify +    it under the terms of the GNU General Public License as published by +    the Free Software Foundation; either version 3 of the License, +    or (at your option) any later version. + +    This program is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +    See the GNU General Public License for more details. + +    You should have received a copy of the GNU General Public License +    along with this program; if not, see <http://www.gnu.org/licenses/>. + +    @author: Walter Purcaro +""" +  from module.plugins.Hook import Hook  class RestartFailed(Hook):      __name__ = "RestartFailed" -    __version__ = "1.52" -    __description__ = "restartedFailed Packages after defined time" +    __version__ = "1.53" +    __description__ = "Periodically restart all failed downloads in queue"      __config__ = [("activated", "bool", "Activated", "False"), -                  ("interval", "int", "Interval in Minutes", "15")] - -    __author_name__ = ("bambie") -    __author_mail__ = ("bambie@gulli.com") +                  ("interval", "int", "Interval in minutes", "90")] +    __author_name__ = ("Walter Purcaro") +    __author_mail__ = ("vuolter@gmail.com") -    interval = 300 +    event_list = ["pluginConfigChanged"] -    def setup(self): -        self.info = {"running": False} - -    def coreReady(self): -        self.info["running"] = True -        self.logInfo("loaded") -        self.interval = self.getConfig("interval") * 60 -        self.logDebug("interval is set to %s" % self.interval) +    MIN_INTERVAL = 15 * 60 #seconds      def periodical(self): -        self.logDebug("periodical called") -        if self.getConfig("interval") * 60 != self.interval: -            self.interval = self.getConfig("interval") * 60 -            self.logDebug("interval is set to %s" % self.interval) +        self.logDebug("Restart all failed downloads now")          self.core.api.restartFailed() + +    def restartPeriodical(self, interval): +        self.logDebug("Set periodical interval to %s seconds" % interval) +        if self.cb: +            self.core.scheduler.removeJob(self.cb) +        self.interval = interval +        self.cb = self.core.scheduler.addJob(interval, self._periodical, threaded=False) + +    def pluginConfigChanged(self, plugin, name, value): +        value *= 60 +        if name == "interval": +            if self.interval != value > self.MIN_INTERVAL: +                self.restartPeriodical(value) +            else: +                self.logWarning("Cannot change interval: given value is equal to the current or \ +                                 smaller than %s seconds" % self.MIN_INTERVAL) + +    def coreReady(self): +        self.pluginConfigChanged(plugin="RestartFailed", name="interval", value=self.getConfig("interval")) | 
