diff options
author | zoidberg10 <zoidberg@mujmail.cz> | 2012-08-25 00:39:45 +0200 |
---|---|---|
committer | zoidberg10 <zoidberg@mujmail.cz> | 2012-08-25 00:39:45 +0200 |
commit | 19988f788c357849ecdc1ed92121c9208f9bd172 (patch) | |
tree | 8448e24f7bee8d3baecb2e0ba64b68ef4f8b0c3e /module/plugins/hoster/ShareRapidCom.py | |
parent | udpdate zippyshare, linkdecrypter - closed #670 (diff) | |
download | pyload-19988f788c357849ecdc1ed92121c9208f9bd172.tar.xz |
update sharerapid.cz - possible workaround for #657
Diffstat (limited to 'module/plugins/hoster/ShareRapidCom.py')
-rw-r--r-- | module/plugins/hoster/ShareRapidCom.py | 82 |
1 files changed, 60 insertions, 22 deletions
diff --git a/module/plugins/hoster/ShareRapidCom.py b/module/plugins/hoster/ShareRapidCom.py index 6859b3d9f..c3328bfe8 100644 --- a/module/plugins/hoster/ShareRapidCom.py +++ b/module/plugins/hoster/ShareRapidCom.py @@ -3,66 +3,104 @@ import re from pycurl import HTTPHEADER -from module.network.RequestFactory import getRequest +from module.network.RequestFactory import getRequest, getURL from module.network.HTTPRequest import BadHeader from module.plugins.internal.SimpleHoster import SimpleHoster, parseFileInfo +from module.common.json_layer import json_loads +def checkFile(url): + info = {"name" : url, "size" : 0, "status" : 3} + + response = getURL("http://share-rapid.com/checkfiles.php", post = {"files": url}, decode = True) + info = json_loads(response) + + if "error" in info: + if info['error'] == False: + info['name'] = info['filename'] + info['status'] = 2 + elif info['msg'] == "Not found": + info['status'] = 1 #offline + elif info['msg'] == "Service Unavailable": + info['status'] = 6 #temp.offline + + return info + def getInfo(urls): - file_info = [] for url in urls: - h = getRequest() - try: - h.c.setopt(HTTPHEADER, ["Accept: text/html"]) - html = h.load(url, cookies = True, decode = True) - file_info = parseFileInfo(ShareRapidCom, url, html) - finally: - h.close() - yield file_info + info = checkFile(url) + if "filename" in info: + yield info['name'], info['size'], info['status'], url + else: + file_info = (url, 0, 3, url) + h = getRequest() + try: + h.c.setopt(HTTPHEADER, ["Accept: text/html"]) + html = h.load(url, cookies = True, decode = True) + file_info = parseFileInfo(ShareRapidCom, url, html) + finally: + h.close() + yield file_info class ShareRapidCom(SimpleHoster): __name__ = "ShareRapidCom" __type__ = "hoster" - __pattern__ = r"http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(stahuj/.+)" - __version__ = "0.48" + __pattern__ = r"http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/stahuj/(.+)" + __version__ = "0.49" __description__ = """Share-rapid.com plugin - premium only""" __author_name__ = ("MikyWoW", "zoidberg") __author_mail__ = ("MikyWoW@seznam.cz", "zoidberg@mujmail.cz") FILE_NAME_PATTERN = r'<h1[^>]*><span[^>]*>(?:<a[^>]*>)?(?P<N>[^<]+)' FILE_SIZE_PATTERN = r'<td class="i">Velikost:</td>\s*<td class="h"><strong>\s*(?P<S>[0-9.]+) (?P<U>[kKMG])i?B</strong></td>' + FILE_OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán' + DOWNLOAD_URL_PATTERN = r'<a href="([^"]+)" title="Stahnout">([^<]+)</a>' ERR_LOGIN_PATTERN = ur'<div class="error_div"><strong>Stahování je přístupné pouze přihlášeným uživatelům' ERR_CREDIT_PATTERN = ur'<div class="error_div"><strong>Stahování zdarma je možné jen přes náš' - FILE_OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán' def setup(self): self.chunkLimit = 1 self.resumeDownload = True def process(self, pyfile): - if not self.account: self.fail("User not logged in") - url = "http://share-rapid.com/" + re.search(self.__pattern__, pyfile.url).groups()[-1] - self.logDebug("URL: " + url) - + if not self.account: self.fail("User not logged in") + + self.info = checkFile(pyfile.url) + self.logDebug(self.info) + + pyfile.status = self.info['status'] + + if pyfile.status == 2: + pyfile.name = self.info['name'] + pyfile.size = self.info['size'] + elif pyfile.status == 1: + self.offline() + elif pyfile.status == 6: + self.tempOffline() + else: + self.fail("Unexpected file status") + + if not self.checkTrafficLeft(): self.fail("Not enough traffic left") + + url = "http://share-rapid.com/stahuj/%s" % self.info['filepath'] try: self.html = self.load(url, decode=True) except BadHeader, e: self.account.relogin(self.user) self.retry(3, 0, str(e)) - - self.getFileInfo() found = re.search(self.DOWNLOAD_URL_PATTERN, self.html) if found is not None: - link, pyfile.name = found.groups() + link = found.group(1) self.logDebug("Premium link: %s" % link) + + self.check_data = {"size": pyfile.size} self.download(link) else: - self.logError("Download URL not found") if re.search(self.ERR_LOGIN_PATTERN, self.html): self.relogin(self.user) self.retry(3,0,"User login failed") elif re.search(self.ERR_CREDIT_PATTERN, self.html): self.fail("Not enough credit left") else: - self.fail("Download link not found")
\ No newline at end of file + self.fail("Download link not found")
\ No newline at end of file |