From 2d77bbe784e5f107a3823f5b780e879478d1b37a Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 2 Dec 2014 12:36:47 +0100 Subject: New addon RestartSlow --- module/plugins/hooks/RestartSlow.py | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 module/plugins/hooks/RestartSlow.py (limited to 'module/plugins/hooks/RestartSlow.py') diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py new file mode 100644 index 000000000..0e9e213de --- /dev/null +++ b/module/plugins/hooks/RestartSlow.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +from pycurl import LOW_SPEED_LIMIT, LOW_SPEED_TIME + +from module.plugins.Hook import Hook + + +class RestartSlow(Hook): + __name__ = "RestartSlow" + __type__ = "hook" + __version__ = "0.01" + + __config__ = [("free_limit" , "int", "Transfer speed threshold in kilobytes" , 100 ), + ("free_time" , "int", "Sample interval in minutes" , 5 ), + ("premium_limit", "int", "Transfer speed threshold for premium download in kilobytes", 300 ), + ("premium_time" , "int", "Sample interval for premium download in minutes" , 2 ), + ("safe" , "bool", "Restart if download is resumable" , True)] + + __description__ = """Restart slow downloads""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + event_list = ["downloadStarts"] + + + def downloadStarts(self, pyfile, url, filename): + if self.getConfig("safe") and not pyfile.plugin.resumeDownload: + return + + type = "premium" if pyfile.plugin.premium else "free" + + pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, max(30, self.getConfig("%s_time" % type) * 60)) + pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, max(5, self.getConfig("%s_limit" % type) * 1024)) + + + def downloadFailed(self, pyfile): + pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, 30) + pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, 5) -- cgit v1.2.3 From 88ad8e28d9405992bcf31732e5fc38bd0e88f3b4 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 6 Dec 2014 17:09:51 +0100 Subject: [RestartSlow] Temp removed --- module/plugins/hooks/RestartSlow.py | 39 ------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 module/plugins/hooks/RestartSlow.py (limited to 'module/plugins/hooks/RestartSlow.py') diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py deleted file mode 100644 index 0e9e213de..000000000 --- a/module/plugins/hooks/RestartSlow.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- - -from pycurl import LOW_SPEED_LIMIT, LOW_SPEED_TIME - -from module.plugins.Hook import Hook - - -class RestartSlow(Hook): - __name__ = "RestartSlow" - __type__ = "hook" - __version__ = "0.01" - - __config__ = [("free_limit" , "int", "Transfer speed threshold in kilobytes" , 100 ), - ("free_time" , "int", "Sample interval in minutes" , 5 ), - ("premium_limit", "int", "Transfer speed threshold for premium download in kilobytes", 300 ), - ("premium_time" , "int", "Sample interval for premium download in minutes" , 2 ), - ("safe" , "bool", "Restart if download is resumable" , True)] - - __description__ = """Restart slow downloads""" - __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - - - event_list = ["downloadStarts"] - - - def downloadStarts(self, pyfile, url, filename): - if self.getConfig("safe") and not pyfile.plugin.resumeDownload: - return - - type = "premium" if pyfile.plugin.premium else "free" - - pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, max(30, self.getConfig("%s_time" % type) * 60)) - pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, max(5, self.getConfig("%s_limit" % type) * 1024)) - - - def downloadFailed(self, pyfile): - pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, 30) - pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, 5) -- cgit v1.2.3 From c6a54414f340efe1d649c72786ec25c505e94172 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 8 Dec 2014 19:03:23 +0100 Subject: [RestartSlow] New fixed version re-added --- module/plugins/hooks/RestartSlow.py | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 module/plugins/hooks/RestartSlow.py (limited to 'module/plugins/hooks/RestartSlow.py') diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py new file mode 100644 index 000000000..587799235 --- /dev/null +++ b/module/plugins/hooks/RestartSlow.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +import pycurl + +from module.plugins.Hook import Hook + + +class RestartSlow(Hook): + __name__ = "RestartSlow" + __type__ = "hook" + __version__ = "0.02" + + __config__ = [("free_limit" , "int" , "Transfer speed threshold in kilobytes" , 100 ), + ("free_time" , "int" , "Sample interval in minutes" , 5 ), + ("premium_limit", "int" , "Transfer speed threshold for premium download in kilobytes", 300 ), + ("premium_time" , "int" , "Sample interval for premium download in minutes" , 2 ), + ("safe_mode" , "bool", "Don't restart if download is not resumable" , True)] + + __description__ = """Restart slow downloads""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + event_list = ["downloadStarts"] + + + def setup(self): + self.info = {'chunk': {}} + + + def initPeriodical(self): + pass + + + def periodical(self): + if not self.pyfile.req.dl: + return + + if self.getConfig("safe_mode") and not self.pyfile.plugin.resumeDownload: + time = 30 + limit = 5 + else: + type = "premium" if self.pyfile.plugin.premium else "free" + time = max(30, self.getConfig("%s_time" % type) * 60) + limit = max(5, self.getConfig("%s_limit" % type) * 1024) + + chunks = [chunk for chunk in self.pyfile.req.dl.chunks \ + if chunk.id not in self.info['chunk'] or self.info['chunk'][chunk.id] not is (time, limit)] + + for chunk in chunks: + chunk.c.setopt(pycurl.LOW_SPEED_TIME , time) + chunk.c.setopt(pycurl.LOW_SPEED_LIMIT, limit) + + self.info['chunk'][chunk.id] = (time, limit) + + + def downloadStarts(self, pyfile, url, filename): + if self.cb or (self.getConfig("safe_mode") and not pyfile.plugin.resumeDownload): + return + + super(RestartSlow, self).initPeriodical() -- cgit v1.2.3 From 3d27f5ccee412d38102873a5b02e3f236375eb97 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 16 Dec 2014 03:44:15 +0100 Subject: Update plugins (2) --- module/plugins/hooks/RestartSlow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/hooks/RestartSlow.py') diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py index 587799235..c2fdf6f95 100644 --- a/module/plugins/hooks/RestartSlow.py +++ b/module/plugins/hooks/RestartSlow.py @@ -8,7 +8,7 @@ from module.plugins.Hook import Hook class RestartSlow(Hook): __name__ = "RestartSlow" __type__ = "hook" - __version__ = "0.02" + __version__ = "0.03" __config__ = [("free_limit" , "int" , "Transfer speed threshold in kilobytes" , 100 ), ("free_time" , "int" , "Sample interval in minutes" , 5 ), @@ -45,7 +45,7 @@ class RestartSlow(Hook): limit = max(5, self.getConfig("%s_limit" % type) * 1024) chunks = [chunk for chunk in self.pyfile.req.dl.chunks \ - if chunk.id not in self.info['chunk'] or self.info['chunk'][chunk.id] not is (time, limit)] + if chunk.id not in self.info['chunk'] or self.info['chunk'][chunk.id] is not (time, limit)] for chunk in chunks: chunk.c.setopt(pycurl.LOW_SPEED_TIME , time) -- cgit v1.2.3