From e60aecc0973c21a22807b3eb16023e64efcbb503 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 28 Mar 2015 00:45:36 +0100 Subject: [MultiHook] Periodically loadAccount --- module/plugins/internal/MultiHook.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 5855f7ece..291063268 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -10,7 +10,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.40" + __version__ = "0.41" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -66,10 +66,10 @@ class MultiHook(Hook): self.pluginname = None self.plugintype = None - self._initPlugin() + self.initPlugin() - def _initPlugin(self): + def initPlugin(self): plugin, type = self.core.pluginManager.findPlugin(self.__name__) if not plugin: @@ -82,7 +82,7 @@ class MultiHook(Hook): self.pluginclass = getattr(self.pluginmodule, self.__name__) - def _loadAccount(self): + def loadAccount(self): self.account = self.core.accountManager.getAccountPlugin(self.pluginname) if self.account and not self.account.canUse(): @@ -93,10 +93,6 @@ class MultiHook(Hook): self.setConfig('activated', False) - def coreReady(self): - self._loadAccount() - - def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 """ see HTTPRequest for argument list """ h = pyreq.getHTTPRequest(timeout=120) @@ -199,6 +195,8 @@ class MultiHook(Hook): def periodical(self): """reload plugin list periodically""" + self.loadAccount() + if self.getConfig("reload", True): self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_RELOAD_INTERVAL) else: -- cgit v1.2.3 From 589121e80835c63aea0880a53c6678de5c31c16e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 28 Mar 2015 01:59:01 +0100 Subject: Spare code cosmetics --- module/plugins/internal/CaptchaService.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index fcb8f0095..3978a96c4 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -251,8 +251,8 @@ class AdsCaptcha(CaptchaService): __authors__ = [("pyLoad Team", "admin@pyload.org")] - CAPTCHAID_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*CaptchaId=(\d+)' - PUBLICKEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*PublicKey=([\w-]+)' + CAPTCHAID_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?.*?CaptchaId=(\d+)' + PUBLICKEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?.*?PublicKey=([\w-]+)' def detect_key(self, html=None): @@ -358,7 +358,7 @@ class SolveMedia(CaptchaService): html = self.plugin.req.load("http://api.solvemedia.com/papi/challenge.noscript", get={'k': key}) try: - challenge = re.search(r'', + challenge = re.search(r'', html).group(1) server = "http://api.solvemedia.com/papi/media" -- cgit v1.2.3 From d15eb15645a91185a0eef553653df19e1e3858ff Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 30 Mar 2015 01:08:22 +0200 Subject: [GoogledriveCom] Fix handleDirect --- module/plugins/internal/SimpleCrypter.py | 2 +- module/plugins/internal/SimpleHoster.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 9946bb115..892144ef4 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -20,7 +20,7 @@ class SimpleCrypter(Crypter, SimpleHoster): __description__ = """Simple decrypter plugin""" __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com" )] + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] """ diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index bcdd1cbef..f9a273d5e 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -253,7 +253,7 @@ class SimpleHoster(Hoster): __description__ = """Simple hoster plugin""" __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com" )] + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] """ -- cgit v1.2.3 From fcaf6c9e4c5c618b8c2741ca7ee5676787b4c3f0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 31 Mar 2015 23:58:33 +0200 Subject: Temp fixup to `filename*=UTF-8` bug --- module/plugins/internal/SimpleHoster.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index f9a273d5e..9f3e56eb8 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -5,6 +5,7 @@ import mimetypes import os import re import time +import urllib2 from inspect import isclass from urllib import unquote @@ -246,7 +247,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.31" + __version__ = "1.32" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -308,7 +309,7 @@ class SimpleHoster(Hoster): DIRECT_LINK = None #: Set to True to looking for direct link (as defined in handleDirect method), set to None to do it if self.account is True else False MULTI_HOSTER = False #: Set to True to leech other hoster link (as defined in handleMulti method) LOGIN_ACCOUNT = False #: Set to True to require account login - DISPOSITION = True #: Work-around to `filename*=UTF-8` bug; remove in 0.4.10 + DISPOSITION = True #: Set to True to use any content-disposition value in http header as file name directLink = getFileURL #@TODO: Remove in 0.4.10 @@ -486,7 +487,7 @@ class SimpleHoster(Hoster): self.logDebug("Handled as free download") self.handleFree(pyfile) - self.downloadLink(self.link, self.DISPOSITION) #: Remove `self.DISPOSITION` in 0.4.10 + self.downloadLink(self.link, self.DISPOSITION) self.checkFile() except Fail, e: #@TODO: Move to PluginThread in 0.4.10 @@ -497,6 +498,16 @@ class SimpleHoster(Hoster): raise Fail(e) + #: Work-around to `filename*=UTF-8` bug; remove in 0.4.10 + def download(self, url, get={}, post={}, ref=True, cookies=True, disposition=False): + try: + if disposition: + content = urllib2.urlopen(self.link).info()['Content-Disposition'].split(';') + self.pyfile.name = content[1].split('filename=')[1][1:-1] + finally: + return super(SimpleHoster, self).download(url, get, post, ref, cookies, False) + + def downloadLink(self, link, disposition=True): if link and isinstance(link, basestring): self.correctCaptcha() -- cgit v1.2.3 From 8e498789b5015896fe8d8e7a8379ce6be139bf92 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 1 Apr 2015 00:08:24 +0200 Subject: Temp fixup to `filename*=UTF-8` bug (2) --- module/plugins/internal/SimpleHoster.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 9f3e56eb8..6f1c7409d 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -247,7 +247,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.32" + __version__ = "1.33" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -502,8 +502,8 @@ class SimpleHoster(Hoster): def download(self, url, get={}, post={}, ref=True, cookies=True, disposition=False): try: if disposition: - content = urllib2.urlopen(self.link).info()['Content-Disposition'].split(';') - self.pyfile.name = content[1].split('filename=')[1][1:-1] + content = urllib2.urlopen(url).info()['Content-Disposition'].split(';') + self.pyfile.name = content[1].split('filename=')[1][1:-1] or self.pyfile.name finally: return super(SimpleHoster, self).download(url, get, post, ref, cookies, False) -- cgit v1.2.3 From 1cfc960fd3ec384364ffb1e09d3ee98fc657eddb Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 16:51:14 +0200 Subject: [SimpleDereferer][SimpleHoster] Update user-agent --- module/plugins/internal/SimpleDereferer.py | 3 ++- module/plugins/internal/SimpleHoster.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleDereferer.py b/module/plugins/internal/SimpleDereferer.py index 360cd7c30..41c6aa985 100644 --- a/module/plugins/internal/SimpleDereferer.py +++ b/module/plugins/internal/SimpleDereferer.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import getFileURL, set_cookies class SimpleDereferer(Crypter): __name__ = "SimpleDereferer" __type__ = "crypter" - __version__ = "0.08" + __version__ = "0.09" __pattern__ = r'^unmatchable$' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), @@ -70,6 +70,7 @@ class SimpleDereferer(Crypter): self.html = "" self.req.setOption("timeout", 120) + self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 6f1c7409d..4446eed00 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -3,6 +3,7 @@ import datetime import mimetypes import os +import pycurl import re import time import urllib2 @@ -247,7 +248,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.33" + __version__ = "1.34" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -315,7 +316,7 @@ class SimpleHoster(Hoster): @classmethod - def parseInfos(cls, urls): #@TODO: Built-in in 0.4.10 core, then remove from plugins + def parseInfos(cls, urls): #@TODO: Built-in in 0.4.10 core (remove from plugins) for url in urls: url = replace_patterns(url, cls.URL_REPLACEMENTS) yield cls.getInfo(url) @@ -433,6 +434,7 @@ class SimpleHoster(Hoster): self.fail(_("Required account not found")) self.req.setOption("timeout", 120) + self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) -- cgit v1.2.3 From 665770b16e6ace161e9c358c6b23f1f269b5dd4b Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 16:59:23 +0200 Subject: [SimpleDereferer] Update user-agent (2) --- module/plugins/internal/SimpleDereferer.py | 5 +++-- module/plugins/internal/SimpleHoster.py | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleDereferer.py b/module/plugins/internal/SimpleDereferer.py index 41c6aa985..bdb2d773c 100644 --- a/module/plugins/internal/SimpleDereferer.py +++ b/module/plugins/internal/SimpleDereferer.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +import pycurl import re from urllib import unquote @@ -11,7 +12,7 @@ from module.plugins.internal.SimpleHoster import getFileURL, set_cookies class SimpleDereferer(Crypter): __name__ = "SimpleDereferer" __type__ = "crypter" - __version__ = "0.09" + __version__ = "0.10" __pattern__ = r'^unmatchable$' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), @@ -70,7 +71,7 @@ class SimpleDereferer(Crypter): self.html = "" self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") + self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 4446eed00..0474a5af5 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -239,7 +239,7 @@ def secondsToMidnight(gmt=0): if hasattr(td, 'total_seconds'): res = td.total_seconds() - else: #: work-around for python 2.5 and 2.6 missing datetime.timedelta.total_seconds + else: #@NOTE: work-around for python 2.5 and 2.6 missing datetime.timedelta.total_seconds res = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 return int(res) @@ -434,7 +434,7 @@ class SimpleHoster(Hoster): self.fail(_("Required account not found")) self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") + self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) @@ -500,7 +500,7 @@ class SimpleHoster(Hoster): raise Fail(e) - #: Work-around to `filename*=UTF-8` bug; remove in 0.4.10 + #@NOTE: Work-around to `filename*=UTF-8` bug; remove in 0.4.10 def download(self, url, get={}, post={}, ref=True, cookies=True, disposition=False): try: if disposition: -- cgit v1.2.3 From 2f763ffd0c6f87c25ba814db3ed12e3504531efd Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 19:22:11 +0200 Subject: [SimpleDereferer][SimpleHoster] Update user-agent (3) --- module/plugins/internal/SimpleDereferer.py | 3 ++- module/plugins/internal/SimpleHoster.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleDereferer.py b/module/plugins/internal/SimpleDereferer.py index bdb2d773c..99077bfc3 100644 --- a/module/plugins/internal/SimpleDereferer.py +++ b/module/plugins/internal/SimpleDereferer.py @@ -71,7 +71,8 @@ class SimpleDereferer(Crypter): self.html = "" self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 + self.req.http.c.setopt(pycurl.USERAGENT, + "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 0474a5af5..87e136f08 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -434,7 +434,8 @@ class SimpleHoster(Hoster): self.fail(_("Required account not found")) self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 + self.req.http.c.setopt(pycurl.USERAGENT, + "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) -- cgit v1.2.3 From c99421d6385e0f6b8bd9095c705becbc35f873a0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 22:08:58 +0200 Subject: Traceback code cosmetics --- module/plugins/internal/MultiHook.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 291063268..942c044c2 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -2,6 +2,7 @@ import re import time +import traceback from module.plugins.Hook import Hook from module.utils import decode, remove_chars @@ -10,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.41" + __version__ = "0.42" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -188,7 +189,7 @@ class MultiHook(Hook): except Exception, e: self.core.log.error(_("Error executing hooks: %s") % str(e)) if self.core.debug: - print_exc() + traceback.print_exc() self.cb = self.core.scheduler.addJob(self.interval, self._periodical) -- cgit v1.2.3 From 48abd898139b3f40d52b17680c9d5b8a674545c6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 00:10:43 +0200 Subject: [UserAgentSwitcher] Default activated set to True --- module/plugins/internal/SimpleDereferer.py | 5 +---- module/plugins/internal/SimpleHoster.py | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleDereferer.py b/module/plugins/internal/SimpleDereferer.py index 99077bfc3..743a98721 100644 --- a/module/plugins/internal/SimpleDereferer.py +++ b/module/plugins/internal/SimpleDereferer.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -import pycurl import re from urllib import unquote @@ -12,7 +11,7 @@ from module.plugins.internal.SimpleHoster import getFileURL, set_cookies class SimpleDereferer(Crypter): __name__ = "SimpleDereferer" __type__ = "crypter" - __version__ = "0.10" + __version__ = "0.11" __pattern__ = r'^unmatchable$' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), @@ -71,8 +70,6 @@ class SimpleDereferer(Crypter): self.html = "" self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, - "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 87e136f08..79b7c0534 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -3,7 +3,6 @@ import datetime import mimetypes import os -import pycurl import re import time import urllib2 @@ -248,7 +247,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.34" + __version__ = "1.35" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -434,8 +433,6 @@ class SimpleHoster(Hoster): self.fail(_("Required account not found")) self.req.setOption("timeout", 120) - self.req.http.c.setopt(pycurl.USERAGENT, - "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0") #@NOTE: Work-around to old user-agent bug; remove in 0.4.10 if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) -- cgit v1.2.3 From 02e3ede3edcf4415ac466fbea9d4f25d9ccc8671 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 15:38:01 +0200 Subject: Spare code cosmetics --- module/plugins/internal/SimpleHoster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 79b7c0534..8b1527b3e 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -30,7 +30,7 @@ def _error(self, reason, type): type = "unknown" msg = _("%s error") % type.strip().capitalize() if type else _("Error") - msg += ": %s" % reason.strip() if reason else "" + msg += (": %s" % reason.strip()) if reason else "" msg += _(" | Plugin may be out of date") raise Fail(msg) -- cgit v1.2.3 From 348a386486d081d86363774e64525484ef159cd6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 19:23:06 +0200 Subject: Fix https://github.com/pyload/pyload/issues/1157 --- module/plugins/internal/MultiHook.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 942c044c2..6ef803f7a 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.42" + __version__ = "0.43" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -71,16 +71,15 @@ class MultiHook(Hook): def initPlugin(self): - plugin, type = self.core.pluginManager.findPlugin(self.__name__) + self.pluginname = self.__name__.rsplit("Hook", 1)[0] + plugin, self.plugintype = self.core.pluginManager.findPlugin(self.pluginname) - if not plugin: + if plugin: + self.pluginmodule = self.core.pluginManager.loadModule(type, self.pluginname) + self.pluginclass = getattr(self.pluginmodule, self.pluginname) + else: self.logWarning("Hook plugin will be deactivated due missing plugin reference") self.setConfig('activated', False) - else: - self.pluginname = self.__name__ - self.plugintype = type - self.pluginmodule = self.core.pluginManager.loadModule(type, self.__name__) - self.pluginclass = getattr(self.pluginmodule, self.__name__) def loadAccount(self): -- cgit v1.2.3 From 944f0d42fcc335e5727e6e2e0b42f1177d9c6a18 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 19:43:51 +0200 Subject: Fix https://github.com/pyload/pyload/issues/1157 (2) --- module/plugins/internal/MultiHook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 6ef803f7a..51c8ea89f 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.43" + __version__ = "0.44" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -75,7 +75,7 @@ class MultiHook(Hook): plugin, self.plugintype = self.core.pluginManager.findPlugin(self.pluginname) if plugin: - self.pluginmodule = self.core.pluginManager.loadModule(type, self.pluginname) + self.pluginmodule = self.core.pluginManager.loadModule(self.plugintype, self.pluginname) self.pluginclass = getattr(self.pluginmodule, self.pluginname) else: self.logWarning("Hook plugin will be deactivated due missing plugin reference") -- cgit v1.2.3 From 73f99ea811d01a2e113a882fe5ab86b0aa9c4f4c Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 9 Apr 2015 00:22:51 +0200 Subject: [SimpleHoster] Improve file name handling --- module/plugins/internal/SimpleHoster.py | 37 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 8b1527b3e..ac5fbf391 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -5,11 +5,9 @@ import mimetypes import os import re import time +import urllib import urllib2 - -from inspect import isclass -from urllib import unquote -from urlparse import urljoin, urlparse +import urlparse from module.PyFile import statusMap as _statusMap from module.network.CookieJar import CookieJar @@ -109,8 +107,8 @@ def parseFileInfo(plugin, url="", html=""): info = plugin.getInfo(url, html) res = info['name'], info['size'], info['status'], info['url'] else: - url = unquote(url) - url_p = urlparse(url) + url = urllib.unquote(url) + url_p = urlparse.urlparse(url) res = ((url_p.path.split('/')[-1] or url_p.query.split('=', 1)[::-1][0].split('&', 1)[0] or url_p.netloc.split('.', 1)[0]), @@ -186,10 +184,10 @@ def getFileURL(self, url, follow_location=None): elif 'location' in header and header['location'].strip(): location = header['location'] - if not urlparse(location).scheme: - url_p = urlparse(url) + if not urlparse.urlparse(location).scheme: + url_p = urlparse.urlparse(url) baseurl = "%s://%s" % (url_p.scheme, url_p.netloc) - location = urljoin(baseurl, location) + location = urlparse.urljoin(baseurl, location) if 'code' in header and header['code'] == 302: link = location @@ -199,7 +197,7 @@ def getFileURL(self, url, follow_location=None): continue else: - extension = os.path.splitext(urlparse(url).path.split('/')[-1])[-1] + extension = os.path.splitext(urlparse.urlparse(url).path.split('/')[-1])[-1] if 'content-type' in header and header['content-type'].strip(): mimetype = header['content-type'].split(';')[0].strip() @@ -247,7 +245,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.35" + __version__ = "1.36" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -323,8 +321,8 @@ class SimpleHoster(Hoster): @classmethod def apiInfo(cls, url="", get={}, post={}): - url = unquote(url) - url_p = urlparse(url) + url = urllib.unquote(url) + url_p = urlparse.urlparse(url) return {'name' : (url_p.path.split('/')[-1] or url_p.query.split('=', 1)[::-1][0].split('&', 1)[0] or url_p.netloc.split('.', 1)[0]), @@ -391,7 +389,7 @@ class SimpleHoster(Hoster): info['status'] = 2 if 'N' in info['pattern']: - info['name'] = replace_patterns(unquote(info['pattern']['N'].strip()), + info['name'] = replace_patterns(urllib.unquote(info['pattern']['N'].strip()), cls.NAME_REPLACEMENTS) if 'S' in info['pattern']: @@ -503,7 +501,9 @@ class SimpleHoster(Hoster): try: if disposition: content = urllib2.urlopen(url).info()['Content-Disposition'].split(';') - self.pyfile.name = content[1].split('filename=')[1][1:-1] or self.pyfile.name + self.pyfile.name = (content[1].split('filename=')[1][1:-1] + or urlparse.urlparse(urllib.unquote(url)).path.split('/')[-1] + or self.pyfile.name) finally: return super(SimpleHoster, self).download(url, get, post, ref, cookies, False) @@ -512,10 +512,10 @@ class SimpleHoster(Hoster): if link and isinstance(link, basestring): self.correctCaptcha() - if not urlparse(link).scheme: - url_p = urlparse(self.pyfile.url) + if not urlparse.urlparse(link).scheme: + url_p = urlparse.urlparse(self.pyfile.url) baseurl = "%s://%s" % (url_p.scheme, url_p.netloc) - link = urljoin(baseurl, link) + link = urlparse.urljoin(baseurl, link) self.download(link, ref=False, disposition=disposition) @@ -679,7 +679,6 @@ class SimpleHoster(Hoster): if link: self.logInfo(_("Direct download link detected")) - self.link = link else: self.logDebug("Direct download link not found") -- cgit v1.2.3 From 0099cce1f73598ad271bbb8685362f8e10a6c3ba Mon Sep 17 00:00:00 2001 From: zapp-brannigan Date: Thu, 9 Apr 2015 11:28:01 +0200 Subject: Update CaptchaService.py Fix ReCaptchaV2 --- module/plugins/internal/CaptchaService.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index 3978a96c4..ec938079a 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -15,7 +15,7 @@ from module.plugins.Plugin import Base class CaptchaService(Base): __name__ = "CaptchaService" __type__ = "captcha" - __version__ = "0.25" + __version__ = "0.26" __description__ = """Base captcha service plugin""" __license__ = "GPLv3" @@ -45,7 +45,7 @@ class CaptchaService(Base): class ReCaptcha(CaptchaService): __name__ = "ReCaptcha" __type__ = "captcha" - __version__ = "0.14" + __version__ = "0.15" __description__ = """ReCaptcha captcha service plugin""" __license__ = "GPLv3" @@ -201,21 +201,12 @@ class ReCaptcha(CaptchaService): token2 = re.search(r'"finput","(.*?)",', html) self.logDebug("Token #2: %s" % token2.group(1)) - token3 = re.search(r'."asconf".\s,".*?".\s,"(.*?)".', html) + token3 = re.search(r'"rresp","(.*?)",', html) self.logDebug("Token #3: %s" % token3.group(1)) - html = self.plugin.req.load("https://www.google.com/recaptcha/api2/reload", - post={'k' : key, - 'c' : token2.group(1), - 'reason': "fi", - 'fbg' : token3.group(1)}) - - token4 = re.search(r'"rresp","(.*?)",', html) - self.logDebug("Token #4: %s" % token4.group(1)) - millis_captcha_loading = int(round(time.time() * 1000)) captcha_response = self.plugin.decryptCaptcha("https://www.google.com/recaptcha/api2/payload", - get={'c':token4.group(1), 'k':key}, + get={'c':token3.group(1), 'k':key}, cookies=True, forceUser=True) response = b64encode('{"response":"%s"}' % captcha_response) @@ -227,16 +218,16 @@ class ReCaptcha(CaptchaService): html = self.plugin.req.load("https://www.google.com/recaptcha/api2/userverify", post={'k' : key, - 'c' : token4.group(1), + 'c' : token3.group(1), 'response': response, 't' : timeToSolve, 'ct' : timeToSolveMore, 'bg' : botguardstring}) - token5 = re.search(r'"uvresp","(.*?)",', html) - self.logDebug("Token #5: %s" % token5.group(1)) + token4 = re.search(r'"uvresp","(.*?)",', html) + self.logDebug("Token #4: %s" % token4.group(1)) - result = token5.group(1) + result = token4.group(1) return result, None -- cgit v1.2.3 From ac24e99387460201cad5848bf325638aef2fed0b Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 10 Apr 2015 11:50:06 +0200 Subject: [SimpleHoster] Fix https://github.com/pyload/pyload/issues/1341 --- module/plugins/internal/SimpleHoster.py | 6 +++--- module/plugins/internal/XFSHoster.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'module/plugins/internal') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index ac5fbf391..910731f95 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -245,7 +245,7 @@ def secondsToMidnight(gmt=0): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "1.36" + __version__ = "1.37" __pattern__ = r'^unmatchable$' __config__ = [("use_premium", "bool", "Use premium account if available", True)] @@ -599,8 +599,8 @@ class SimpleHoster(Hoster): except Exception: waitmsg = m.group(0).strip() - wait_time = sum(int(v) * {"hr": 3600, "hour": 3600, "min": 60, "sec": 1}[u.lower()] for v, u in - re.findall(r'(\d+)\s*(hr|hour|min|sec)', waitmsg, re.I)) + wait_time = sum(int(v) * {"hr": 3600, "hour": 3600, "min": 60, "sec": 1, "": 1}[u.lower()] for v, u in + re.findall(r'(\d+)\s*(hr|hour|min|sec|)', waitmsg, re.I)) self.wait(wait_time, wait_time > 300) self.info.pop('error', None) diff --git a/module/plugins/internal/XFSHoster.py b/module/plugins/internal/XFSHoster.py index 9e60a5aa5..027e68236 100644 --- a/module/plugins/internal/XFSHoster.py +++ b/module/plugins/internal/XFSHoster.py @@ -16,7 +16,7 @@ from module.utils import html_unescape class XFSHoster(SimpleHoster): __name__ = "XFSHoster" __type__ = "hoster" - __version__ = "0.45" + __version__ = "0.46" __pattern__ = r'^unmatchable$' @@ -193,8 +193,8 @@ class XFSHoster(SimpleHoster): self.logWarning(re.sub(r"<.*?>", " ", self.errmsg)) if 'wait' in self.errmsg: - wait_time = sum(int(v) * {"hr": 3600, "hour": 3600, "min": 60, "sec": 1}[u.lower()] for v, u in - re.findall(r'(\d+)\s*(hr|hour|min|sec)', self.errmsg, re.I)) + wait_time = sum(int(v) * {"hr": 3600, "hour": 3600, "min": 60, "sec": 1, "": 1}[u.lower()] for v, u in + re.findall(r'(\d+)\s*(hr|hour|min|sec|)', self.errmsg, re.I)) self.wait(wait_time, wait_time > 300) elif 'country' in self.errmsg: -- cgit v1.2.3