summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-05-01 16:45:36 +0200
committerGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-05-01 16:45:36 +0200
commit9ff63382d144732acb92cbe72ce7e58f5ac311a5 (patch)
tree929683b335743bb659c8f6afd84fdf8822f9ab7d
parentMerge branch 'stable' into 0.4.10 (diff)
downloadpyload-9ff63382d144732acb92cbe72ce7e58f5ac311a5.tar.xz
Use 'import' instead 'from' (1)
-rw-r--r--module/plugins/hoster/RehostTo.py29
-rw-r--r--module/plugins/hoster/XVideosCom.py27
-rw-r--r--module/plugins/hoster/ZeveraCom.py34
-rw-r--r--module/plugins/internal/CaptchaService.py517
-rw-r--r--pyload/plugin/Captcha.py2
-rw-r--r--pyload/plugin/Crypter.py4
-rw-r--r--pyload/plugin/account/DropboxCom.py2
-rw-r--r--pyload/plugin/account/EasybytezCom.py2
-rw-r--r--pyload/plugin/account/TusfilesNet.py1
-rw-r--r--pyload/plugin/captcha/AdsCaptcha.py5
-rw-r--r--pyload/plugin/captcha/ReCaptcha.py10
-rw-r--r--pyload/plugin/crypter/CloudzillaTo.py1
-rw-r--r--pyload/plugin/crypter/DataHu.py2
-rw-r--r--pyload/plugin/crypter/FilerNet.py2
-rw-r--r--pyload/plugin/hoster/AlldebridCom.py3
-rw-r--r--pyload/plugin/hoster/DataHu.py2
-rw-r--r--pyload/plugin/hoster/DevhostSt.py2
-rw-r--r--pyload/plugin/hoster/FastixRu.py3
-rw-r--r--pyload/plugin/hoster/GooIm.py2
-rw-r--r--pyload/plugin/hoster/HellshareCz.py2
-rw-r--r--pyload/plugin/hoster/MegaDebridEu.py3
-rw-r--r--pyload/plugin/hoster/MultishareCz.py1
-rw-r--r--pyload/plugin/hoster/MyfastfileCom.py2
-rw-r--r--pyload/plugin/hoster/OneFichierCom.py2
-rw-r--r--pyload/plugin/hoster/OverLoadMe.py3
-rw-r--r--pyload/plugin/hoster/RPNetBiz.py2
-rw-r--r--pyload/plugin/hoster/RapiduNet.py1
-rw-r--r--pyload/plugin/hoster/RarefileNet.py2
-rw-r--r--pyload/plugin/hoster/RealdebridCom.py2
-rw-r--r--pyload/plugin/hoster/RehostTo.py2
-rw-r--r--pyload/plugin/hoster/RgHostNet.py2
-rw-r--r--pyload/plugin/hoster/SimplydebridCom.py2
-rw-r--r--pyload/plugin/hoster/SpeedyshareCom.py1
-rw-r--r--pyload/plugin/hoster/StreamcloudEu.py2
-rw-r--r--pyload/plugin/hoster/TwoSharedCom.py2
-rw-r--r--pyload/plugin/hoster/UnrestrictLi.py2
-rw-r--r--pyload/plugin/hoster/XVideosCom.py5
-rw-r--r--pyload/plugin/hoster/XdadevelopersCom.py2
-rw-r--r--pyload/plugin/hoster/YourfilesTo.py3
-rw-r--r--pyload/plugin/hoster/YoutubeCom.py3
-rw-r--r--pyload/plugin/hoster/ZeveraCom.py4
-rw-r--r--pyload/plugin/internal/XFSHoster.py1
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