From b6a56f0f36c7b4d6a1582a072430b35848315fee Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Mon, 13 Aug 2012 20:53:46 +0200 Subject: update multishare account, xfilesharingpro --- module/plugins/accounts/MultishareCz.py | 4 ++-- module/plugins/crypter/EmbeduploadCom.py | 17 ++++++++++------ module/plugins/hoster/EasybytezCom.py | 15 ++++++++++---- module/plugins/hoster/XFileSharingPro.py | 35 ++++++++++++++++++++++---------- module/plugins/internal/XFSPAccount.py | 6 ++---- 5 files changed, 50 insertions(+), 27 deletions(-) (limited to 'module/plugins') diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index cc3e430af..39439cbbe 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -25,7 +25,7 @@ from module.utils import parseFileSize class MultishareCz(Account): __name__ = "MultishareCz" - __version__ = "0.01" + __version__ = "0.02" __type__ = "account" __description__ = """multishare.cz account plugin""" __author_name__ = ("zoidberg") @@ -54,5 +54,5 @@ class MultishareCz(Account): "jmeno": user }, decode = True) - if not u'MultiShare.cz :: Profil uživatele' in html: + if '
' in html: self.wrongPassword() \ No newline at end of file diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py index e84a06cc1..8fd70882f 100644 --- a/module/plugins/crypter/EmbeduploadCom.py +++ b/module/plugins/crypter/EmbeduploadCom.py @@ -2,12 +2,13 @@ import re from module.plugins.Crypter import Crypter +from module.network.HTTPRequest import BadHeader class EmbeduploadCom(Crypter): __name__ = "EmbeduploadCom" __type__ = "crypter" __pattern__ = r"http://(www\.)?embedupload.com/\?d=.*" - __version__ = "0.01" + __version__ = "0.02" __description__ = """EmbedUpload.com crypter""" __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"), ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")] @@ -18,7 +19,8 @@ class EmbeduploadCom(Crypter): def decrypt(self, pyfile): self.html = self.load(self.pyfile.url, decode=True) - tmp_links = new_links = [] + tmp_links = [] + new_links = [] found = re.findall(self.LINK_PATTERN, self.html) if found: @@ -32,7 +34,7 @@ class EmbeduploadCom(Crypter): ignored_set = set(self.getConfig("ignoredHoster").split('|')) ignored_set = map(lambda s: s.lower().split('.')[0], ignored_set) print "IG", ignored_set - tmp_links.extend([x[1] for x in found if x[0] in ignored_set]) + tmp_links.extend([x[1] for x in found if x[0] not in ignored_set]) self.getLocation(tmp_links, new_links) if new_links: @@ -42,8 +44,11 @@ class EmbeduploadCom(Crypter): def getLocation(self, tmp_links, new_links): for link in tmp_links: - header = self.load(link, just_header = True) - if "location" in header: - new_links.append(header['location']) + try: + header = self.load(link, just_header = True) + if "location" in header: + new_links.append(header['location']) + except BadHeader: + pass \ No newline at end of file diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index d69b9bfa5..5f3159b20 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -18,20 +18,22 @@ import re from random import random +from pycurl import LOW_SPEED_TIME from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class EasybytezCom(XFileSharingPro): __name__ = "EasybytezCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)?easybytez.com/(\w+).*" - __version__ = "0.10" + __version__ = "0.11" __description__ = """easybytez.com""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") FILE_NAME_PATTERN = r'[^<]+ \((?P[^<]+)\)' - FILE_INFO_PATTERN = r'Filename:(?P[^<]+)\s*.*?\((?P[^<]+)\)' + FILE_INFO_PATTERN = r'Filename:(?P[^<]+)\s*.*?\((?P[^<]+)\)' + FILE_OFFLINE_PATTERN = r'

File not available

' DIRECT_LINK_PATTERN = r'(http://(\w+\.easybytez\.com|\d+\.\d+\.\d+\.\d+)/files/\d+/\w+/[^"<]+)' OVR_DOWNLOAD_LINK_PATTERN = r'

Download Link

\s*]*>([^<]+)' @@ -58,6 +60,8 @@ class EasybytezCom(XFileSharingPro): inputs['up1oad_type'] = 'url' self.logDebug(action, inputs) + #wait for file to upload to easybytez.com + self.req.http.c.setopt(LOW_SPEED_TIME, 600) self.html = self.load(action, post = inputs) action, inputs = self.parseHtmlForm('F1') @@ -65,9 +69,12 @@ class EasybytezCom(XFileSharingPro): self.logDebug(inputs) if inputs['st'] == 'OK': self.html = self.load(action, post = inputs) + elif inputs['st'] == 'Can not leech file': + self.retry(max_tries=20, wait_time=180, reason=inputs['st']) else: - self.fail(inputs['st']) - + self.fail(inputs['st']) + + #get easybytez.com link for uploaded file found = re.search(self.OVR_DOWNLOAD_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK (OVR)') self.pyfile.url = found.group(1) diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py index ad96cc3b0..63e79e0b3 100644 --- a/module/plugins/hoster/XFileSharingPro.py +++ b/module/plugins/hoster/XFileSharingPro.py @@ -20,8 +20,8 @@ import re from random import random from urllib import unquote from urlparse import urlparse -from pycurl import FOLLOWLOCATION -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo +from pycurl import FOLLOWLOCATION, LOW_SPEED_TIME +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, PluginParseError from module.plugins.ReCaptcha import ReCaptcha from module.utils import html_unescape @@ -34,7 +34,7 @@ class XFileSharingPro(SimpleHoster): __name__ = "XFileSharingPro" __type__ = "hoster" __pattern__ = r"^unmatchable$" - __version__ = "0.07" + __version__ = "0.08" __description__ = """XFileSharingPro common hoster base""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") @@ -45,6 +45,7 @@ class XFileSharingPro(SimpleHoster): FILE_OFFLINE_PATTERN = r'<(b|h2)>File Not Found' WAIT_PATTERN = r'.*?>(\d+)' + LONG_WAIT_PATTERN = r'(?P\d+(?=\s*hour))?.*?(?P\d+(?=\s*minute))?.*?(?P\d+(?=\s*second))?' OVR_DOWNLOAD_LINK_PATTERN = r'

Download Link

\s*]*>([^<]+)' OVR_KILL_LINK_PATTERN = r'

Delete Link

\s*]*>([^<]+)' CAPTCHA_URL_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)' @@ -72,7 +73,7 @@ class XFileSharingPro(SimpleHoster): self.html = self.load(pyfile.url, cookies = False, decode = True) try: self.file_info = self.getFileInfo() - except: + except PluginParseError: pyfile.name = html_unescape(unquote(urlparse(pyfile.url).path.split("/")[-1])) self.header = self.load(self.pyfile.url, just_header = True, cookies = True) @@ -116,9 +117,10 @@ class XFileSharingPro(SimpleHoster): found = re.search(self.DIRECT_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK') self.startDownload(found.group(1)) - + def handleOverriden(self): - self.html = self.load("http://www.%s" % self.HOSTER_NAME) + #only tested with easybytez.com + self.html = self.load("http://www.%s/" % self.HOSTER_NAME) action, inputs = self.parseHtmlForm('') upload_id = "%012d" % int(random()*10**12) action += upload_id + "&js_on=1&utype=prem&upload_type=url" @@ -127,16 +129,21 @@ class XFileSharingPro(SimpleHoster): inputs['up1oad_type'] = 'url' self.logDebug(action, inputs) + #wait for file to upload to easybytez.com + self.req.http.c.setopt(LOW_SPEED_TIME, 600) self.html = self.load(action, post = inputs) - action, inputs = self.parseHtmlForm('name="F1"') - if not inputs: parseError('TEXTAREA') + action, inputs = self.parseHtmlForm('F1') + if not inputs: self.parseError('TEXTAREA') self.logDebug(inputs) if inputs['st'] == 'OK': self.html = self.load(action, post = inputs) + elif inputs['st'] == 'Can not leech file': + self.retry(max_tries=20, wait_time=180, reason=inputs['st']) else: - self.fail(inputs['st']) - + self.fail(inputs['st']) + + #get easybytez.com link for uploaded file found = re.search(self.OVR_DOWNLOAD_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK (OVR)') self.pyfile.url = found.group(1) @@ -151,12 +158,16 @@ class XFileSharingPro(SimpleHoster): found = re.search(self.ERROR_PATTERN, self.html) if found: self.errmsg = found.group(1) - self.logWarning(re.sub(self.errmsg, "<.*?>"," ")) + self.logWarning(re.sub(r"<.*?>"," ",self.errmsg)) if 'wait' in self.errmsg: wait_time = sum([int(v) * {"hour": 3600, "minute": 60, "second": 1}[u] for v, u in re.findall('(\d+)\s*(hour|minute|second)?', self.errmsg)]) self.setWait(wait_time, True) self.wait() + elif 'limit' in self.errmsg: + self.setWait(3600, True) + self.wait() + self.retry(25) elif 'captcha' in self.errmsg: self.invalidCaptcha() elif 'countdown' or 'Expired session' in self.errmsg: @@ -167,6 +178,8 @@ class XFileSharingPro(SimpleHoster): self.fail("File too large for free download") elif 'requires premium' in self.errmsg: self.fail("File can be downloaded by premium users only") + else: + self.fail(self.errmsg) else: self.errmsg = None diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index 76bbfb9fe..c41dbb3a9 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -25,7 +25,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" - __version__ = "0.03" + __version__ = "0.04" __type__ = "account" __description__ = """XFileSharingPro account base""" __author_name__ = ("zoidberg") @@ -66,8 +66,6 @@ class XFSPAccount(Account): html = req.load('%slogin.html' % self.MAIN_PAGE, decode = True) action, inputs = parseHtmlForm('name="FL"', html) - if not action: - action = self.MAIN_PAGE if not inputs: inputs = {"op": "login", "redirect": self.MAIN_PAGE} @@ -75,7 +73,7 @@ class XFSPAccount(Account): inputs.update({"login": user, "password": data['password']}) - html = req.load(action, post = inputs, decode = True) + html = req.load(self.MAIN_PAGE, post = inputs, decode = True) if 'Incorrect Login or Password' in html or '>Error<' in html: self.wrongPassword() \ No newline at end of file -- cgit v1.2.3