summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/BitshareCom.py
diff options
context:
space:
mode:
authorGravatar lazlev <lazlev@yopmail.com> 2015-08-09 00:50:54 +0200
committerGravatar lazlev <lazlev@yopmail.com> 2015-08-09 00:50:54 +0200
commitb0ef3f1673e1930916604bb1264ca3a38414bc8d (patch)
treec97936e4d2a4cd6eb1072c65c8a08a7d18816b18 /module/plugins/hoster/BitshareCom.py
parent[XFileSharingPro][XFileSharingProFolder] Added default __pattern__ (diff)
parentFix https://github.com/pyload/pyload/issues/1707 (diff)
downloadpyload-b0ef3f1673e1930916604bb1264ca3a38414bc8d.tar.xz
Merge pull request #1 from pyload/stable
sync with stable
Diffstat (limited to 'module/plugins/hoster/BitshareCom.py')
-rw-r--r--module/plugins/hoster/BitshareCom.py87
1 files changed, 44 insertions, 43 deletions
diff --git a/module/plugins/hoster/BitshareCom.py b/module/plugins/hoster/BitshareCom.py
index 5c709e4f7..b975a8ab0 100644
--- a/module/plugins/hoster/BitshareCom.py
+++ b/module/plugins/hoster/BitshareCom.py
@@ -4,14 +4,15 @@ from __future__ import with_statement
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
class BitshareCom(SimpleHoster):
__name__ = "BitshareCom"
__type__ = "hoster"
- __version__ = "0.54"
+ __version__ = "0.55"
+ __status__ = "testing"
__pattern__ = r'http://(?:www\.)?bitshare\.com/(files/)?(?(1)|\?f=)(?P<ID>\w+)(?(1)/(?P<NAME>.+?)\.html)'
__config__ = [("use_premium", "bool", "Use premium account if available", True)]
@@ -33,32 +34,32 @@ class BitshareCom(SimpleHoster):
def setup(self):
self.multiDL = self.premium
- self.chunkLimit = 1
+ self.chunk_limit = 1
def process(self, pyfile):
if self.premium:
self.account.relogin(self.user)
- # File id
+ #: File id
m = re.match(self.__pattern__, pyfile.url)
self.file_id = max(m.group('ID1'), m.group('ID2'))
- self.logDebug("File id is [%s]" % self.file_id)
+ self.log_debug("File id is [%s]" % self.file_id)
- # Load main page
- self.html = self.load(pyfile.url, ref=False, decode=True)
+ #: Load main page
+ self.html = self.load(pyfile.url, ref=False)
- # Check offline
+ #: Check offline
if re.search(self.OFFLINE_PATTERN, self.html):
self.offline()
- # Check Traffic used up
+ #: Check Traffic used up
if re.search(self.TRAFFIC_USED_UP, self.html):
- self.logInfo(_("Your Traffic is used up for today"))
+ self.log_info(_("Your Traffic is used up for today"))
self.wait(30 * 60, True)
self.retry()
- # File name
+ #: File name
m = re.match(self.__pattern__, pyfile.url)
name1 = m.group('NAME') if m else None
@@ -67,77 +68,77 @@ class BitshareCom(SimpleHoster):
pyfile.name = max(name1, name2)
- # Ajax file id
+ #: Ajax file id
self.ajaxid = re.search(self.AJAXID_PATTERN, self.html).group(1)
- self.logDebug("File ajax id is [%s]" % self.ajaxid)
+ self.log_debug("File ajax id is [%s]" % self.ajaxid)
- # This may either download our file or forward us to an error page
- self.link = self.getDownloadUrl()
+ #: This may either download our file or forward us to an error page
+ self.link = self.get_download_url()
- if self.checkDownload({"error": ">Error occured<"}):
+ if self.check_download({'error': ">Error occured<"}):
self.retry(5, 5 * 60, "Bitshare host : Error occured")
- def getDownloadUrl(self):
- # Return location if direct download is active
+ def get_download_url(self):
+ #: Return location if direct download is active
if self.premium:
header = self.load(self.pyfile.url, just_header=True)
if 'location' in header:
return header['location']
- # Get download info
- self.logDebug("Getting download info")
+ #: Get download info
+ self.log_debug("Getting download info")
res = self.load("http://bitshare.com/files-ajax/" + self.file_id + "/request.html",
- post={"request": "generateID", "ajaxid": self.ajaxid})
+ post={'request': "generateID", 'ajaxid': self.ajaxid})
- self.handleErrors(res, ':')
+ self.handle_errors(res, ':')
parts = res.split(":")
filetype = parts[0]
wait = int(parts[1])
captcha = int(parts[2])
- self.logDebug("Download info [type: '%s', waiting: %d, captcha: %d]" % (filetype, wait, captcha))
+ self.log_debug("Download info [type: '%s', waiting: %d, captcha: %d]" % (filetype, wait, captcha))
- # Waiting
+ #: Waiting
if wait > 0:
- self.logDebug("Waiting %d seconds." % wait)
+ self.log_debug("Waiting %d seconds." % wait)
if wait < 120:
self.wait(wait, False)
else:
self.wait(wait - 55, True)
self.retry()
- # Resolve captcha
+ #: Resolve captcha
if captcha == 1:
- self.logDebug("File is captcha protected")
+ self.log_debug("File is captcha protected")
recaptcha = ReCaptcha(self)
- # Try up to 3 times
+ #: Try up to 3 times
for i in xrange(3):
response, challenge = recaptcha.challenge()
res = self.load("http://bitshare.com/files-ajax/" + self.file_id + "/request.html",
- post={"request" : "validateCaptcha",
- "ajaxid" : self.ajaxid,
- "recaptcha_challenge_field": challenge,
- "recaptcha_response_field" : response})
- if self.handleCaptchaErrors(res):
+ post={'request' : "validateCaptcha",
+ 'ajaxid' : self.ajaxid,
+ 'recaptcha_challenge_field': challenge,
+ 'recaptcha_response_field' : response})
+ if self.handle_captcha_errors(res):
break
- # Get download URL
- self.logDebug("Getting download url")
+ #: Get download URL
+ self.log_debug("Getting download url")
res = self.load("http://bitshare.com/files-ajax/" + self.file_id + "/request.html",
- post={"request": "getDownloadURL", "ajaxid": self.ajaxid})
+ post={'request': "getDownloadURL", 'ajaxid': self.ajaxid})
- self.handleErrors(res, '#')
+ self.handle_errors(res, '#')
url = res.split("#")[-1]
return url
- def handleErrors(self, res, separator):
- self.logDebug("Checking response [%s]" % res)
+ def handle_errors(self, res, separator):
+ self.log_debug("Checking response [%s]" % res)
if "ERROR:Session timed out" in res:
self.retry()
elif "ERROR" in res:
@@ -145,15 +146,15 @@ class BitshareCom(SimpleHoster):
self.fail(msg)
- def handleCaptchaErrors(self, res):
- self.logDebug("Result of captcha resolving [%s]" % res)
+ def handle_captcha_errors(self, res):
+ self.log_debug("Result of captcha resolving [%s]" % res)
if "SUCCESS" in res:
- self.correctCaptcha()
+ self.captcha.correct()
return True
elif "ERROR:SESSION ERROR" in res:
self.retry()
- self.invalidCaptcha()
+ self.captcha.invalid()
getInfo = create_getInfo(BitshareCom)