diff options
42 files changed, 16 insertions, 685 deletions
| diff --git a/module/plugins/hoster/RehostTo.py b/module/plugins/hoster/RehostTo.py deleted file mode 100644 index 9c07364ec..000000000 --- a/module/plugins/hoster/RehostTo.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- - -import urllib - -from module.plugins.internal.MultiHoster import MultiHoster, create_getInfo - - -class RehostTo(MultiHoster): -    __name__    = "RehostTo" -    __type__    = "hoster" -    __version__ = "0.21" - -    __pattern__ = r'https?://.*rehost\.to\..+' -    __config__  = [("use_premium", "bool", "Use premium account if available", True)] - -    __description__ = """Rehost.com multi-hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org")] - - -    def handlePremium(self, pyfile): -        self.download("http://rehost.to/process_download.php", -                      get={'user': "cookie", -                           'pass': self.account.getAccountInfo(self.user)['session'], -                           'dl'  : pyfile.url}, -                      disposition=True) - - -getInfo = create_getInfo(RehostTo) diff --git a/module/plugins/hoster/XVideosCom.py b/module/plugins/hoster/XVideosCom.py deleted file mode 100644 index a8f291824..000000000 --- a/module/plugins/hoster/XVideosCom.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import urllib - -from module.plugins.Hoster import Hoster - - -class XVideosCom(Hoster): -    __name__    = "XVideos.com" -    __type__    = "hoster" -    __version__ = "0.10" - -    __pattern__ = r'http://(?:www\.)?xvideos\.com/video(\d+)' - -    __description__ = """XVideos.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [] - - -    def process(self, pyfile): -        site = self.load(pyfile.url) -        pyfile.name = "%s (%s).flv" % ( -            re.search(r"<h2>([^<]+)<span", site).group(1), -            re.match(self.__pattern__, pyfile.url).group(1), -        ) -        self.download(urllib.unquote(re.search(r"flv_url=([^&]+)&", site).group(1))) diff --git a/module/plugins/hoster/ZeveraCom.py b/module/plugins/hoster/ZeveraCom.py deleted file mode 100644 index 617e00e58..000000000 --- a/module/plugins/hoster/ZeveraCom.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import urlparse - -from module.plugins.internal.MultiHoster import MultiHoster, create_getInfo - - -class ZeveraCom(MultiHoster): -    __name__    = "ZeveraCom" -    __type__    = "hoster" -    __version__ = "0.29" - -    __pattern__ = r'https?://(?:www\.)zevera\.com/(getFiles\.ashx|Members/download\.ashx)\?.*ourl=.+' -    __config__  = [("use_premium", "bool", "Use premium account if available", True)] - -    __description__ = """Zevera.com multi-hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    def handlePremium(self, pyfile): -        self.link = "https://%s/getFiles.ashx?ourl=%s" % (self.account.HOSTER_DOMAIN, pyfile.url) - - -    def checkFile(self, rules={}): -        if self.checkDownload({"error": 'action="ErrorDownload.aspx'}): -            self.fail(_("Error response received")) - -        return super(ZeveraCom, self).checkFile(rules) - - -getInfo = create_getInfo(ZeveraCom) diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py deleted file mode 100644 index b6afad22a..000000000 --- a/module/plugins/internal/CaptchaService.py +++ /dev/null @@ -1,517 +0,0 @@ -# -*- coding: utf-8 -*- - -import random -import re -import time -import urlparse - -from base64 import b64encode - -from module.common.json_layer import json_loads -from module.plugins.Plugin import Base - - -#@TODO: Extend (new) Plugin class; remove all `html` args -class CaptchaService(Base): -    __name__    = "CaptchaService" -    __type__    = "captcha" -    __version__ = "0.26" - -    __description__ = """Base captcha service plugin""" -    __license__     = "GPLv3" -    __authors__     = [("pyLoad Team", "admin@pyload.org")] - - -    key = None  #: last key detected - - -    def __init__(self, plugin): -        self.plugin = plugin -        super(CaptchaService, self).__init__(plugin.core) - - -    def detect_key(self, html=None): -        raise NotImplementedError - - -    def challenge(self, key=None, html=None): -        raise NotImplementedError - - -    def result(self, server, challenge): -        raise NotImplementedError - - -class ReCaptcha(CaptchaService): -    __name__    = "ReCaptcha" -    __type__    = "captcha" -    __version__ = "0.15" - -    __description__ = """ReCaptcha captcha service plugin""" -    __license__     = "GPLv3" -    __authors__     = [("pyLoad Team", "admin@pyload.org"), -                       ("Walter Purcaro", "vuolter@gmail.com"), -                       ("zapp-brannigan", "fuerst.reinje@web.de")] - - -    KEY_V2_PATTERN = r'(?:data-sitekey=["\']|["\']sitekey["\']:\s*["\'])([\w-]+)' -    KEY_V1_PATTERN = r'(?:recaptcha(?:/api|\.net)/(?:challenge|noscript)\?k=|Recaptcha\.create\s*\(\s*["\'])([\w-]+)' - - -    def detect_key(self, html=None): -        if not html: -            if hasattr(self.plugin, "html") and self.plugin.html: -                html = self.plugin.html -            else: -                errmsg = _("ReCaptcha html not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        m = re.search(self.KEY_V2_PATTERN, html) or re.search(self.KEY_V1_PATTERN, html) -        if m: -            self.key = m.group(1).strip() -            self.logDebug("Key: %s" % self.key) -            return self.key -        else: -            self.logDebug("Key not found") -            return None - - -    def challenge(self, key=None, html=None, version=None): -        if not key: -            if self.detect_key(html): -                key = self.key -            else: -                errmsg = _("ReCaptcha key not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        if version in (1, 2): -            return getattr(self, "_challenge_v%s" % version)(key) - -        elif not html and hasattr(self.plugin, "html") and self.plugin.html: -            version = 2 if re.search(self.KEY_V2_PATTERN, self.plugin.html) else 1 -            return self.challenge(key, self.plugin.html, version) - -        else: -            errmsg = _("ReCaptcha html not found") -            self.plugin.fail(errmsg) -            raise TypeError(errmsg) - - -    def _challenge_v1(self, key): -        html = self.plugin.req.load("http://www.google.com/recaptcha/api/challenge", -                                    get={'k': key}) -        try: -            challenge = re.search("challenge : '(.+?)',", html).group(1) -            server    = re.search("server : '(.+?)',", html).group(1) - -        except AttributeError: -            errmsg = _("ReCaptcha challenge pattern not found") -            self.plugin.fail(errmsg) -            raise AttributeError(errmsg) - -        self.logDebug("Challenge: %s" % challenge) - -        return self.result(server, challenge), challenge - - -    def result(self, server, challenge): -        result = self.plugin.decryptCaptcha("%simage" % server, -                                            get={'c': challenge}, -                                            cookies=True, -                                            forceUser=True, -                                            imgtype="jpg") - -        self.logDebug("Result: %s" % result) - -        return result - - -    def _collectApiInfo(self): -        html = self.plugin.req.load("http://www.google.com/recaptcha/api.js") -        a    = re.search(r'po.src = \'(.*?)\';', html).group(1) -        vers = a.split("/")[5] - -        self.logDebug("API version: %s" %vers) - -        language = a.split("__")[1].split(".")[0] - -        self.logDebug("API language: %s" % language) - -        html = self.plugin.req.load("https://apis.google.com/js/api.js") -        b    = re.search(r'"h":"(.*?)","', html).group(1) -        jsh  = b.decode('unicode-escape') - -        self.logDebug("API jsh-string: %s" % jsh) - -        return vers, language, jsh - - -    def _prepareTimeAndRpc(self): -        self.plugin.req.load("http://www.google.com/recaptcha/api2/demo") - -        millis = int(round(time.time() * 1000)) - -        self.logDebug("Time: %s" % millis) - -        rand = random.randint(1, 99999999) -        a    = "0.%s" % str(rand * 2147483647) -        rpc  = int(100000000 * float(a)) - -        self.logDebug("Rpc-token: %s" % rpc) - -        return millis, rpc - - -    def _challenge_v2(self, key, parent=None): -        if parent is None: -            try: -                parent = urlparse.urljoin("http://", urlparse.urlparse(self.plugin.pyfile.url).netloc) - -            except Exception: -                parent = "" - -        botguardstring      = "!A" -        vers, language, jsh = self._collectApiInfo() -        millis, rpc         = self._prepareTimeAndRpc() - -        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/anchor", -                                    get={'k'       : key, -                                         'hl'      : language, -                                         'v'       : vers, -                                         'usegapi' : "1", -                                         'jsh'     : "%s#id=IO_%s" % (jsh, millis), -                                         'parent'  : parent, -                                         'pfname'  : "", -                                         'rpctoken': rpc}) - -        token1 = re.search(r'id="recaptcha-token" value="(.*?)">', html) -        self.logDebug("Token #1: %s" % token1.group(1)) - -        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/frame", -                                    get={'c'      : token1.group(1), -                                         'hl'     : language, -                                         'v'      : vers, -                                         'bg'     : botguardstring, -                                         'k'      : key, -                                         'usegapi': "1", -                                         'jsh'    : jsh}).decode('unicode-escape') - -        token2 = re.search(r'"finput","(.*?)",', html) -        self.logDebug("Token #2: %s" % token2.group(1)) - -        token3 = re.search(r'"rresp","(.*?)",', html) -        self.logDebug("Token #3: %s" % token3.group(1)) - -        millis_captcha_loading = int(round(time.time() * 1000)) -        captcha_response       = self.plugin.decryptCaptcha("https://www.google.com/recaptcha/api2/payload", -                                                            get={'c':token3.group(1), 'k':key}, -                                                            cookies=True, -                                                            forceUser=True) -        response               = b64encode('{"response":"%s"}' % captcha_response) - -        self.logDebug("Result: %s" % response) - -        timeToSolve     = int(round(time.time() * 1000)) - millis_captcha_loading -        timeToSolveMore = timeToSolve + int(float("0." + str(random.randint(1, 99999999))) * 500) - -        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/userverify", -                                    post={'k'       : key, -                                          'c'       : token3.group(1), -                                          'response': response, -                                          't'       : timeToSolve, -                                          'ct'      : timeToSolveMore, -                                          'bg'      : botguardstring}) - -        token4 = re.search(r'"uvresp","(.*?)",', html) -        self.logDebug("Token #4: %s" % token4.group(1)) - -        result = token4.group(1) - -        return result, None - - -class AdsCaptcha(CaptchaService): -    __name__    = "AdsCaptcha" -    __type__    = "captcha" -    __version__ = "0.08" - -    __description__ = """AdsCaptcha captcha service plugin""" -    __license__     = "GPLv3" -    __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-]+)' - - -    def detect_key(self, html=None): -        if not html: -            if hasattr(self.plugin, "html") and self.plugin.html: -                html = self.plugin.html -            else: -                errmsg = _("AdsCaptcha html not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        m = re.search(self.PUBLICKEY_PATTERN, html) -        n = re.search(self.CAPTCHAID_PATTERN, html) -        if m and n: -            self.key = (m.group(1).strip(), n.group(1).strip())  #: key is the tuple(PublicKey, CaptchaId) -            self.logDebug("Key|id: %s | %s" % self.key) -            return self.key -        else: -            self.logDebug("Key or id not found") -            return None - - -    def challenge(self, key=None, html=None): -        if not key: -            if self.detect_key(html): -                key = self.key -            else: -                errmsg = _("AdsCaptcha key not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        PublicKey, CaptchaId = key - -        html = self.plugin.req.load("http://api.adscaptcha.com/Get.aspx", -                                    get={'CaptchaId': CaptchaId, -                                         'PublicKey': PublicKey}) -        try: -            challenge = re.search("challenge: '(.+?)',", html).group(1) -            server    = re.search("server: '(.+?)',", html).group(1) - -        except AttributeError: -            errmsg = _("AdsCaptcha challenge pattern not found") -            self.plugin.fail(errmsg) -            raise AttributeError(errmsg) - -        self.logDebug("Challenge: %s" % challenge) - -        return self.result(server, challenge), challenge - - -    def result(self, server, challenge): -        result = self.plugin.decryptCaptcha("%sChallenge.aspx" % server, -                                            get={'cid': challenge, 'dummy': random.random()}, -                                            cookies=True, -                                            imgtype="jpg") - -        self.logDebug("Result: %s" % result) - -        return result - - -class SolveMedia(CaptchaService): -    __name__    = "SolveMedia" -    __type__    = "captcha" -    __version__ = "0.12" - -    __description__ = """SolveMedia captcha service plugin""" -    __license__     = "GPLv3" -    __authors__     = [("pyLoad Team", "admin@pyload.org")] - - -    KEY_PATTERN = r'api\.solvemedia\.com/papi/challenge\.(?:no)?script\?k=(.+?)["\']' - - -    def detect_key(self, html=None): -        if not html: -            if hasattr(self.plugin, "html") and self.plugin.html: -                html = self.plugin.html -            else: -                errmsg = _("SolveMedia html not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        m = re.search(self.KEY_PATTERN, html) -        if m: -            self.key = m.group(1).strip() -            self.logDebug("Key: %s" % self.key) -            return self.key -        else: -            self.logDebug("Key not found") -            return None - - -    def challenge(self, key=None, html=None): -        if not key: -            if self.detect_key(html): -                key = self.key -            else: -                errmsg = _("SolveMedia key not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        html = self.plugin.req.load("http://api.solvemedia.com/papi/challenge.noscript", -                                    get={'k': key}) -        try: -            challenge = re.search(r'<input type=hidden name="adcopy_challenge" id="adcopy_challenge" value="(.+?)">', -                                  html).group(1) -            server    = "http://api.solvemedia.com/papi/media" - -        except AttributeError: -            errmsg = _("SolveMedia challenge pattern not found") -            self.plugin.fail(errmsg) -            raise AttributeError(errmsg) - -        self.logDebug("Challenge: %s" % challenge) - -        result = self.result(server, challenge) - -        try: -            magic = re.search(r'name="magic" value="(.+?)"', html).group(1) - -        except AttributeError: -            self.logDebug("Magic code not found") - -        else: -            if not self._verify(key, magic, result, challenge): -                self.logDebug("Captcha code was invalid") - -        return result, challenge - - -    def _verify(self, key, magic, result, challenge, ref=None):  #@TODO: Clean up -        if ref is None: -            try: -                ref = self.plugin.pyfile.url - -            except Exception: -                ref = "" - -        html = self.plugin.req.load("http://api.solvemedia.com/papi/verify.noscript", -                                    post={'adcopy_response'  : result, -                                          'k'                : key, -                                          'l'                : "en", -                                          't'                : "img", -                                          's'                : "standard", -                                          'magic'            : magic, -                                          'adcopy_challenge' : challenge, -                                          'ref'              : ref}) -        try: -            html      = self.plugin.req.load(re.search(r'URL=(.+?)">', html).group(1)) -            gibberish = re.search(r'id=gibberish>(.+?)</textarea>', html).group(1) - -        except Exception: -            return False - -        else: -            return True - - -    def result(self, server, challenge): -        result = self.plugin.decryptCaptcha(server, -                                            get={'c': challenge}, -                                            cookies=True, -                                            imgtype="gif") - -        self.logDebug("Result: %s" % result) - -        return result - - -class AdYouLike(CaptchaService): -    __name__    = "AdYouLike" -    __type__    = "captcha" -    __version__ = "0.05" - -    __description__ = """AdYouLike captcha service plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    AYL_PATTERN      = r'Adyoulike\.create\s*\((.+?)\)' -    CALLBACK_PATTERN = r'(Adyoulike\.g\._jsonp_\d+)' - - -    def detect_key(self, html=None): -        if not html: -            if hasattr(self.plugin, "html") and self.plugin.html: -                html = self.plugin.html -            else: -                errmsg = _("AdYouLike html not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        m = re.search(self.AYL_PATTERN, html) -        n = re.search(self.CALLBACK_PATTERN, html) -        if m and n: -            self.key = (m.group(1).strip(), n.group(1).strip()) -            self.logDebug("Ayl|callback: %s | %s" % self.key) -            return self.key   #: key is the tuple(ayl, callback) -        else: -            self.logDebug("Ayl or callback not found") -            return None - - -    def challenge(self, key=None, html=None): -        if not key: -            if self.detect_key(html): -                key = self.key -            else: -                errmsg = _("AdYouLike key not found") -                self.plugin.fail(errmsg) -                raise TypeError(errmsg) - -        ayl, callback = key - -        # {"adyoulike":{"key":"P~zQ~O0zV0WTiAzC-iw0navWQpCLoYEP"}, -        # "all":{"element_id":"ayl_private_cap_92300","lang":"fr","env":"prod"}} -        ayl = json_loads(ayl) - -        html = self.plugin.req.load("http://api-ayl.appspot.com/challenge", -                                    get={'key'     : ayl['adyoulike']['key'], -                                         'env'     : ayl['all']['env'], -                                         'callback': callback}) -        try: -            challenge = json_loads(re.search(callback + r'\s*\((.+?)\)', html).group(1)) - -        except AttributeError: -            errmsg = _("AdYouLike challenge pattern not found") -            self.plugin.fail(errmsg) -            raise AttributeError(errmsg) - -        self.logDebug("Challenge: %s" % challenge) - -        return self.result(ayl, challenge), challenge - - -    def result(self, server, challenge): -        # Adyoulike.g._jsonp_5579316662423138 -        # ({"translations":{"fr":{"instructions_visual":"Recopiez « Soonnight » ci-dessous :"}}, -        # "site_under":true,"clickable":true,"pixels":{"VIDEO_050":[],"DISPLAY":[],"VIDEO_000":[],"VIDEO_100":[], -        # "VIDEO_025":[],"VIDEO_075":[]},"medium_type":"image/adyoulike", -        # "iframes":{"big":"<iframe src=\"http://www.soonnight.com/campagn.html\" scrolling=\"no\" -        # height=\"250\" width=\"300\" frameborder=\"0\"></iframe>"},"shares":{},"id":256, -        # "token":"e6QuI4aRSnbIZJg02IsV6cp4JQ9~MjA1","formats":{"small":{"y":300,"x":0,"w":300,"h":60}, -        # "big":{"y":0,"x":0,"w":300,"h":250},"hover":{"y":440,"x":0,"w":300,"h":60}}, -        # "tid":"SqwuAdxT1EZoi4B5q0T63LN2AkiCJBg5"}) - -        if isinstance(server, basestring): -            server = json_loads(server) - -        if isinstance(challenge, basestring): -            challenge = json_loads(challenge) - -        try: -            instructions_visual = challenge['translations'][server['all']['lang']]['instructions_visual'] -            result = re.search(u'«(.+?)»', instructions_visual).group(1).strip() - -        except AttributeError: -            errmsg = _("AdYouLike result not found") -            self.plugin.fail(errmsg) -            raise AttributeError(errmsg) - -        result = {'_ayl_captcha_engine' : "adyoulike", -                  '_ayl_env'            : server['all']['env'], -                  '_ayl_tid'            : challenge['tid'], -                  '_ayl_token_challenge': challenge['token'], -                  '_ayl_response'       : response} - -        self.logDebug("Result: %s" % result) - -        return result diff --git a/pyload/plugin/Captcha.py b/pyload/plugin/Captcha.py index d7a506979..3bf64eb19 100644 --- a/pyload/plugin/Captcha.py +++ b/pyload/plugin/Captcha.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.Plugin import Base diff --git a/pyload/plugin/Crypter.py b/pyload/plugin/Crypter.py index 3c1413f09..22afe74d8 100644 --- a/pyload/plugin/Crypter.py +++ b/pyload/plugin/Crypter.py @@ -1,6 +1,6 @@  # -*- coding: utf-8 -*- -from urlparse import urlparse +import urlparse  from pyload.plugin.Plugin import Plugin  from pyload.utils import decode, safe_filename @@ -98,7 +98,7 @@ class Crypter(Plugin):                  elif not folder_per_package or name != folder:                      if not folder: -                        folder = urlparse(name).path.split("/")[-1] +                        folder = urlparse.urlparse(name).path.split("/")[-1]                      setFolder(safe_filename(folder))                      self.logDebug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder}) diff --git a/pyload/plugin/account/DropboxCom.py b/pyload/plugin/account/DropboxCom.py index 80dfd6cea..055c28195 100644 --- a/pyload/plugin/account/DropboxCom.py +++ b/pyload/plugin/account/DropboxCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/account/EasybytezCom.py b/pyload/plugin/account/EasybytezCom.py index c1f641669..6419369e8 100644 --- a/pyload/plugin/account/EasybytezCom.py +++ b/pyload/plugin/account/EasybytezCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.XFSAccount import XFSAccount diff --git a/pyload/plugin/account/TusfilesNet.py b/pyload/plugin/account/TusfilesNet.py index b18d49748..f651fa0e1 100644 --- a/pyload/plugin/account/TusfilesNet.py +++ b/pyload/plugin/account/TusfilesNet.py @@ -1,6 +1,5 @@  # -*- coding: utf-8 -*- -import re  import time  from pyload.plugin.internal.XFSAccount import XFSAccount diff --git a/pyload/plugin/captcha/AdsCaptcha.py b/pyload/plugin/captcha/AdsCaptcha.py index a0ccdda58..c2caa7bf6 100644 --- a/pyload/plugin/captcha/AdsCaptcha.py +++ b/pyload/plugin/captcha/AdsCaptcha.py @@ -1,9 +1,8 @@  # -*- coding: utf-8 -*- +import random  import re -from random import random -  from pyload.plugin.Captcha import Captcha @@ -71,7 +70,7 @@ class AdsCaptcha(Captcha):      def result(self, server, challenge):          result = self.plugin.decryptCaptcha("%sChallenge.aspx" % server, -                                            get={'cid': challenge, 'dummy': random()}, +                                            get={'cid': challenge, 'dummy': random.random()},                                              cookies=True,                                              imgtype="jpg") diff --git a/pyload/plugin/captcha/ReCaptcha.py b/pyload/plugin/captcha/ReCaptcha.py index 9c75c2212..dc431f2ea 100644 --- a/pyload/plugin/captcha/ReCaptcha.py +++ b/pyload/plugin/captcha/ReCaptcha.py @@ -1,11 +1,11 @@  # -*- coding: utf-8 -*- +import random  import re  import time +import urlparse  from base64 import b64encode -from random import randint -from urlparse import urljoin, urlparse  from pyload.plugin.Captcha import Captcha @@ -122,7 +122,7 @@ class ReCaptcha(Captcha):          self.logDebug("Time: %s" % millis) -        rand = randint(1, 99999999) +        rand = random.randint(1, 99999999)          a    = "0.%s" % str(rand * 2147483647)          rpc  = int(100000000 * float(a)) @@ -134,7 +134,7 @@ class ReCaptcha(Captcha):      def _challenge_v2(self, key, parent=None):          if parent is None:              try: -                parent = urljoin("http://", urlparse(self.plugin.pyfile.url).netloc) +                parent = urlparse.urljoin("http://", urlparse.urlparse(self.plugin.pyfile.url).netloc)              except Exception:                  parent = "" @@ -181,7 +181,7 @@ class ReCaptcha(Captcha):          self.logDebug("Result: %s" % response)          timeToSolve     = int(round(time.time() * 1000)) - millis_captcha_loading -        timeToSolveMore = timeToSolve + int(float("0." + str(randint(1, 99999999))) * 500) +        timeToSolveMore = timeToSolve + int(float("0." + str(random.randint(1, 99999999))) * 500)          html = self.plugin.req.load("https://www.google.com/recaptcha/api2/userverify",                                      post={'k'       : key, diff --git a/pyload/plugin/crypter/CloudzillaTo.py b/pyload/plugin/crypter/CloudzillaTo.py index 7042f7750..a12b2736c 100644 --- a/pyload/plugin/crypter/CloudzillaTo.py +++ b/pyload/plugin/crypter/CloudzillaTo.py @@ -1,7 +1,6 @@  # -*- coding: utf-8 -*-  import re -import urlparse  from pyload.plugin.internal.SimpleCrypter import SimpleCrypter diff --git a/pyload/plugin/crypter/DataHu.py b/pyload/plugin/crypter/DataHu.py index ce480dacb..a6c219d29 100644 --- a/pyload/plugin/crypter/DataHu.py +++ b/pyload/plugin/crypter/DataHu.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.SimpleCrypter import SimpleCrypter diff --git a/pyload/plugin/crypter/FilerNet.py b/pyload/plugin/crypter/FilerNet.py index 6ff4c279c..a57f2908a 100644 --- a/pyload/plugin/crypter/FilerNet.py +++ b/pyload/plugin/crypter/FilerNet.py @@ -1,4 +1,4 @@ -import re +# -*- coding: utf-8 -*-  from pyload.plugin.internal.SimpleCrypter import SimpleCrypter diff --git a/pyload/plugin/hoster/AlldebridCom.py b/pyload/plugin/hoster/AlldebridCom.py index 7474e62e8..9f7497e72 100644 --- a/pyload/plugin/hoster/AlldebridCom.py +++ b/pyload/plugin/hoster/AlldebridCom.py @@ -1,8 +1,5 @@  # -*- coding: utf-8 -*- -import re -import urllib -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster  from pyload.utils import parseFileSize diff --git a/pyload/plugin/hoster/DataHu.py b/pyload/plugin/hoster/DataHu.py index ba3576d10..16b3c2737 100644 --- a/pyload/plugin/hoster/DataHu.py +++ b/pyload/plugin/hoster/DataHu.py @@ -3,8 +3,6 @@  # Test links:  #   http://data.hu/get/6381232/random.bin -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/DevhostSt.py b/pyload/plugin/hoster/DevhostSt.py index 573b92838..f35530523 100644 --- a/pyload/plugin/hoster/DevhostSt.py +++ b/pyload/plugin/hoster/DevhostSt.py @@ -3,8 +3,6 @@  # Test links:  #   http://d-h.st/mM8 -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/FastixRu.py b/pyload/plugin/hoster/FastixRu.py index dc3b7d6ea..eee4da08c 100644 --- a/pyload/plugin/hoster/FastixRu.py +++ b/pyload/plugin/hoster/FastixRu.py @@ -1,8 +1,5 @@  # -*- coding: utf-8 -*- -import re -import urllib -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/hoster/GooIm.py b/pyload/plugin/hoster/GooIm.py index 322dd6101..6fc4a1fce 100644 --- a/pyload/plugin/hoster/GooIm.py +++ b/pyload/plugin/hoster/GooIm.py @@ -3,8 +3,6 @@  # Test links:  #   https://goo.im/devs/liquidsmooth/3.x/codina/Nightly/LS-KK-v3.2-2014-08-01-codina.zip -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/HellshareCz.py b/pyload/plugin/hoster/HellshareCz.py index 735ed1f19..0e909c599 100644 --- a/pyload/plugin/hoster/HellshareCz.py +++ b/pyload/plugin/hoster/HellshareCz.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import urlparse -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/MegaDebridEu.py b/pyload/plugin/hoster/MegaDebridEu.py index 4b2604046..fd578a83c 100644 --- a/pyload/plugin/hoster/MegaDebridEu.py +++ b/pyload/plugin/hoster/MegaDebridEu.py @@ -1,8 +1,5 @@  # -*- coding: utf-8 -*- -import re -import urllib -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/hoster/MultishareCz.py b/pyload/plugin/hoster/MultishareCz.py index d4546e5f9..b19dfba38 100644 --- a/pyload/plugin/hoster/MultishareCz.py +++ b/pyload/plugin/hoster/MultishareCz.py @@ -1,7 +1,6 @@  # -*- coding: utf-8 -*-  import random -import re  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/MyfastfileCom.py b/pyload/plugin/hoster/MyfastfileCom.py index 57041d6cd..12418670a 100644 --- a/pyload/plugin/hoster/MyfastfileCom.py +++ b/pyload/plugin/hoster/MyfastfileCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/hoster/OneFichierCom.py b/pyload/plugin/hoster/OneFichierCom.py index 74ac71fcb..b33a9e820 100644 --- a/pyload/plugin/hoster/OneFichierCom.py +++ b/pyload/plugin/hoster/OneFichierCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/OverLoadMe.py b/pyload/plugin/hoster/OverLoadMe.py index 85a0f0a1f..c9ee5e653 100644 --- a/pyload/plugin/hoster/OverLoadMe.py +++ b/pyload/plugin/hoster/OverLoadMe.py @@ -1,8 +1,5 @@  # -*- coding: utf-8 -*- -import re -import urllib -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster  from pyload.utils import parseFileSize diff --git a/pyload/plugin/hoster/RPNetBiz.py b/pyload/plugin/hoster/RPNetBiz.py index dc11eefb2..b84f171c3 100644 --- a/pyload/plugin/hoster/RPNetBiz.py +++ b/pyload/plugin/hoster/RPNetBiz.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.MultiHoster import MultiHoster  from pyload.utils import json_loads diff --git a/pyload/plugin/hoster/RapiduNet.py b/pyload/plugin/hoster/RapiduNet.py index 6bbfc171a..81d25a3fa 100644 --- a/pyload/plugin/hoster/RapiduNet.py +++ b/pyload/plugin/hoster/RapiduNet.py @@ -1,7 +1,6 @@  # -*- coding: utf-8 -*-  import pycurl -import re  import time  from pyload.utils import json_loads diff --git a/pyload/plugin/hoster/RarefileNet.py b/pyload/plugin/hoster/RarefileNet.py index f89708282..2c853c6ba 100644 --- a/pyload/plugin/hoster/RarefileNet.py +++ b/pyload/plugin/hoster/RarefileNet.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.XFSHoster import XFSHoster diff --git a/pyload/plugin/hoster/RealdebridCom.py b/pyload/plugin/hoster/RealdebridCom.py index e9c55fae3..642de3f92 100644 --- a/pyload/plugin/hoster/RealdebridCom.py +++ b/pyload/plugin/hoster/RealdebridCom.py @@ -1,8 +1,6 @@  # -*- coding: utf-8 -*- -import re  import time -import urllib  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/hoster/RehostTo.py b/pyload/plugin/hoster/RehostTo.py index c707a866f..f6f5630fb 100644 --- a/pyload/plugin/hoster/RehostTo.py +++ b/pyload/plugin/hoster/RehostTo.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -from urllib import unquote -  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/hoster/RgHostNet.py b/pyload/plugin/hoster/RgHostNet.py index 14c92f9ab..04ecbda8f 100644 --- a/pyload/plugin/hoster/RgHostNet.py +++ b/pyload/plugin/hoster/RgHostNet.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/SimplydebridCom.py b/pyload/plugin/hoster/SimplydebridCom.py index d703c3e52..fb7beb3fb 100644 --- a/pyload/plugin/hoster/SimplydebridCom.py +++ b/pyload/plugin/hoster/SimplydebridCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.MultiHoster import MultiHoster, replace_patterns diff --git a/pyload/plugin/hoster/SpeedyshareCom.py b/pyload/plugin/hoster/SpeedyshareCom.py index 5133725fd..27b866f70 100644 --- a/pyload/plugin/hoster/SpeedyshareCom.py +++ b/pyload/plugin/hoster/SpeedyshareCom.py @@ -4,7 +4,6 @@  #   http://speedy.sh/ep2qY/Zapp-Brannigan.jpg  import re -import urlparse  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/StreamcloudEu.py b/pyload/plugin/hoster/StreamcloudEu.py index cdf244539..da759ae3b 100644 --- a/pyload/plugin/hoster/StreamcloudEu.py +++ b/pyload/plugin/hoster/StreamcloudEu.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.XFSHoster import XFSHoster diff --git a/pyload/plugin/hoster/TwoSharedCom.py b/pyload/plugin/hoster/TwoSharedCom.py index f116abfc1..988c50620 100644 --- a/pyload/plugin/hoster/TwoSharedCom.py +++ b/pyload/plugin/hoster/TwoSharedCom.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/UnrestrictLi.py b/pyload/plugin/hoster/UnrestrictLi.py index 4f719eae4..b0230a7b4 100644 --- a/pyload/plugin/hoster/UnrestrictLi.py +++ b/pyload/plugin/hoster/UnrestrictLi.py @@ -1,7 +1,5 @@  # -*- coding: utf-8 -*- -import re -  from pyload.utils import json_loads  from pyload.plugin.internal.MultiHoster import MultiHoster  from pyload.plugin.internal.SimpleHoster import secondsToMidnight diff --git a/pyload/plugin/hoster/XVideosCom.py b/pyload/plugin/hoster/XVideosCom.py index ae4d0637f..be168fbb9 100644 --- a/pyload/plugin/hoster/XVideosCom.py +++ b/pyload/plugin/hoster/XVideosCom.py @@ -1,8 +1,7 @@  # -*- coding: utf-8 -*-  import re - -from urllib import unquote +import urllib  from pyload.plugin.Hoster import Hoster @@ -25,4 +24,4 @@ class XVideosCom(Hoster):              re.search(r"<h2>([^<]+)<span", site).group(1),              re.match(self.__pattern, pyfile.url).group(1),          ) -        self.download(unquote(re.search(r"flv_url=([^&]+)&", site).group(1))) +        self.download(urllib.unquote(re.search(r"flv_url=([^&]+)&", site).group(1))) diff --git a/pyload/plugin/hoster/XdadevelopersCom.py b/pyload/plugin/hoster/XdadevelopersCom.py index 0fe9197aa..9183563b7 100644 --- a/pyload/plugin/hoster/XdadevelopersCom.py +++ b/pyload/plugin/hoster/XdadevelopersCom.py @@ -3,8 +3,6 @@  # Test links:  #   http://forum.xda-developers.com/devdb/project/dl/?id=10885 -import re -  from pyload.plugin.internal.SimpleHoster import SimpleHoster diff --git a/pyload/plugin/hoster/YourfilesTo.py b/pyload/plugin/hoster/YourfilesTo.py index 4ac49d357..62b66d668 100644 --- a/pyload/plugin/hoster/YourfilesTo.py +++ b/pyload/plugin/hoster/YourfilesTo.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*- -import reimport urllib +import re +import urllib  from pyload.plugin.Hoster import Hoster diff --git a/pyload/plugin/hoster/YoutubeCom.py b/pyload/plugin/hoster/YoutubeCom.py index b6f91fdb0..4998efbec 100644 --- a/pyload/plugin/hoster/YoutubeCom.py +++ b/pyload/plugin/hoster/YoutubeCom.py @@ -2,7 +2,8 @@  import os  import re -import subprocessimport urllib +import subprocess +import urllib  from pyload.plugin.Hoster import Hoster  from pyload.plugin.internal.SimpleHoster import replace_patterns diff --git a/pyload/plugin/hoster/ZeveraCom.py b/pyload/plugin/hoster/ZeveraCom.py index c5defeff7..005c32cf8 100644 --- a/pyload/plugin/hoster/ZeveraCom.py +++ b/pyload/plugin/hoster/ZeveraCom.py @@ -1,9 +1,5 @@  # -*- coding: utf-8 -*- -import re - -from urlparse import urljoin -  from pyload.plugin.internal.MultiHoster import MultiHoster diff --git a/pyload/plugin/internal/XFSHoster.py b/pyload/plugin/internal/XFSHoster.py index ca0dca045..06d91f4d6 100644 --- a/pyload/plugin/internal/XFSHoster.py +++ b/pyload/plugin/internal/XFSHoster.py @@ -3,7 +3,6 @@  import pycurl  import random  import re -import urlparse  from pyload.plugin.captcha.ReCaptcha import ReCaptcha  from pyload.plugin.captcha.SolveMedia import SolveMedia  from pyload.plugin.internal.SimpleHoster import SimpleHoster, secondsToMidnight | 
