diff options
Diffstat (limited to 'module/plugins/hoster/ShareonlineBiz.py')
-rw-r--r-- | module/plugins/hoster/ShareonlineBiz.py | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py deleted file mode 100644 index bc1951602..000000000 --- a/module/plugins/hoster/ShareonlineBiz.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -import os.path -import re -import tempfile -from time import time -from base64 import b64decode -import hashlib -import random -from time import sleep - -from module.plugins.Hoster import Hoster -from module.network.Request import getURL -from module.plugins.Plugin import chunks - - -def getInfo(urls): - api_url_base = "http://www.share-online.biz/linkcheck/linkcheck.php" - - for chunk in chunks(urls, 90): - api_param_file = {"links": "\n".join(x.replace("http://www.share-online.biz/dl/","") for x in chunk)} #api only supports old style links - src = getURL(api_url_base, post=api_param_file) - result = [] - for i, res in enumerate(src.split("\n")): - if not res: - continue - fields = res.split(";") - - if fields[1] == "OK": - status = 2 - elif fields[1] in ("DELETED", "NOT FOUND"): - status = 1 - else: - status = 3 - - result.append((fields[2], int(fields[3]), status, chunk[i])) - yield result - -class ShareonlineBiz(Hoster): - __name__ = "ShareonlineBiz" - __type__ = "hoster" - __pattern__ = r"(?:http://)?(?:www.)?share-online.biz/(download.php\?id=|dl/)" - __version__ = "0.2" - __description__ = """Shareonline.biz Download Hoster""" - __author_name__ = ("spoob", "mkaay") - __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de") - - def setup(self): - #self.req.canContinue = self.multiDL = True if self.account else False - # range request not working? - self.multiDL = True if self.account else False - - def process(self, pyfile): - self.convertURL() - self.downloadAPIData() - pyfile.name = self.api_data["filename"] - pyfile.sync() - - self.downloadHTML() - - self.download(self.getFileUrl(), cookies=True) - - def downloadAPIData(self): - api_url_base = "http://www.share-online.biz/linkcheck/linkcheck.php?md5=1" - api_param_file = {"links": self.pyfile.url.replace("http://www.share-online.biz/dl/","")} #api only supports old style links - src = self.load(api_url_base, cookies=False, post=api_param_file) - - fields = src.split(";") - self.api_data = {} - self.api_data["fileid"] = fields[0] - self.api_data["status"] = fields[1] - if not self.api_data["status"] == "OK": - self.offline() - self.api_data["filename"] = fields[2] - self.api_data["size"] = fields[3] # in bytes - self.api_data["checksum"] = fields[4].strip().lower().replace("\n\n", "") # md5 - - def downloadHTML(self): - self.html = self.load(self.pyfile.url, cookies=True) - - if not self.account: - html = self.load("%s/free/" % self.pyfile.url, post={"dl_free":"1"}, cookies=True) - if re.search(r"/failure/full/1", self.req.lastEffectiveURL): - self.setWait(120) - self.log.debug("%s: no free slots, waiting 120 seconds" % (self.__name__)) - self.wait() - self.retry() - captcha = self.decryptCaptcha("http://www.share-online.biz/captcha.php", get={"rand":"0.%s" % random.randint(10**15,10**16)}, cookies=True) - - self.log.debug("%s Captcha: %s" % (self.__name__, captcha)) - sleep(3) - - html = self.load(self.pyfile.url, post={"captchacode": captcha}, cookies=True) - if re.search(r"Der Download ist Ihnen zu langsam", html): - #m = re.search("var timeout='(\d+)';", self.html[1]) - #self.waitUntil = time() + int(m.group(1)) if m else 30 - return True - - self.retry() - else: - return True - - def convertURL(self): - self.pyfile.url = self.pyfile.url.replace("http://www.share-online.biz/download.php?id=", "http://www.share-online.biz/dl/") - - def getFileUrl(self): - """ returns the absolute downloadable filepath - """ - if self.account: - return b64decode(re.search('var dl="(.*?)"', self.html).group(1)) - file_url_pattern = 'loadfilelink\.decode\("([^"]+)' - return b64decode(re.search(file_url_pattern, self.html).group(1)) - - def checksum(self, local_file): - if self.api_data and self.api_data["checksum"]: - h = hashlib.md5() - f = open(local_file, "rb") - h.update(f.read()) - f.close() - hexd = h.hexdigest() - if hexd == self.api_data["checksum"]: - return (True, 0) - else: - return (False, 1) - else: - return (True, 5) |