From 09ec41fd28a680fcb1be30f0d3aba043b8fe50b8 Mon Sep 17 00:00:00 2001 From: Nitzo Date: Wed, 20 Jul 2016 01:45:05 +0300 Subject: [EuroshareEu] fix #2551 --- module/plugins/accounts/EuroshareEu.py | 31 ++++++++++---------------- module/plugins/hoster/EuroshareEu.py | 40 ++++++++++++---------------------- 2 files changed, 26 insertions(+), 45 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py index 5e6debe8e..4975d3fe1 100644 --- a/module/plugins/accounts/EuroshareEu.py +++ b/module/plugins/accounts/EuroshareEu.py @@ -2,16 +2,15 @@ import re import time -import urlparse from module.plugins.internal.Account import Account -from module.plugins.internal.misc import parse_html_form +from module.plugins.internal.misc import json class EuroshareEu(Account): __name__ = "EuroshareEu" __type__ = "account" - __version__ = "0.10" + __version__ = "0.11" __status__ = "testing" __description__ = """Euroshare.eu account plugin""" @@ -24,34 +23,28 @@ class EuroshareEu(Account): html = self.load("http://euroshare.eu/", get={'lang': "en"}) - m = re.search(r'Premium account until: (\d+/\d+/\d+ \d+:\d+:\d+)<', html) if m is None: premium = False validuntil = -1 else: premium = True - validuntil = time.mktime(time.strptime(m.group(1), "%d.%m.%Y %H:%M:%S")) + validuntil = time.mktime(time.strptime(m.group(1), "%d/%m/%Y %H:%M:%S")) return {'validuntil': validuntil, 'trafficleft': -1, 'premium': premium} def signin(self, user, password, data): - login_url = "http://euroshare.eu/user/login/" - html = self.load(login_url, - get={'lang' : "en"}) + html = self.load("http://euroshare.eu/login.html") - if r'
  • ' in html: + if r'href="http://euroshare.eu/logout.html"' in html: self.skip_login() - action, inputs = parse_html_form('id="frm-prihlaseni"', html) - if not inputs: - self.fail_login(_("Login form not found")) + json_data = json.loads(self.load("http://euroshare.eu/ajax/_account_login.ajax.php", + post={'username': user, + 'password': password, + 'remember': "false", + 'backlink': ""})) - inputs['username'] = user - inputs['password'] = password - - html = self.load(urlparse.urljoin(login_url, action), - post=inputs) - - if r'
  • ' not in html: + if json_data.get("login_status") != "success": self.fail_login() diff --git a/module/plugins/hoster/EuroshareEu.py b/module/plugins/hoster/EuroshareEu.py index 3ef8f89bd..a3143ce1f 100644 --- a/module/plugins/hoster/EuroshareEu.py +++ b/module/plugins/hoster/EuroshareEu.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster class EuroshareEu(SimpleHoster): __name__ = "EuroshareEu" __type__ = "hoster" - __version__ = "0.37" + __version__ = "0.38" __status__ = "testing" __pattern__ = r'http://(?:www\.)?euroshare\.(eu|sk|cz|hu|pl)/file/.+' @@ -20,15 +20,17 @@ class EuroshareEu(SimpleHoster): __description__ = """Euroshare.eu hoster plugin""" __license__ = "GPLv3" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __authors__ = [("zoidberg", "zoidberg@mujmail.cz" ), + ("GammaC0de", "nitzo2001[AT]yahoo[DOT]com")] - NAME_PATTERN = r'

    (?P.+?)

    ' - SIZE_PATTERN = r'

    .*\| (?P.+?) (?P.+?)

    ' + NAME_PATTERN = r'
    (?P.+?)
    ' + SIZE_PATTERN = r'File size: (?P[\d.,]+) (?P[\w^_]+)' - OFFLINE_PATTERN = ur'

    S.bor sa nena.iel

    |Požadovaná stránka neexistuje!' + OFFLINE_PATTERN = ur'

    S.bor sa nena.iel

    |
    FILE NOT FOUND
    ' + TEMP_OFFLINE_PATTERN = r'^unmatchable$' #@TODO: find out the real TEMP_OFFLINE_PATTERN - LINK_FREE_PATTERN = r'onclick="return checkLoad\(\);" href="(.+?)" class="tlacitko velky"' + LINK_PATTERN = r'Prebieha s.ahovanie|

    Naraz je z jednej IP adresy mo.n. s.ahova. iba jeden s.bor' ERROR_PATTERN = r'href="/customer-zone/login/"' @@ -36,32 +38,18 @@ class EuroshareEu(SimpleHoster): URL_REPLACEMENTS = [(r'(http://[^/]*\.)(sk|cz|hu|pl)/', r'\1eu/')] - def handle_premium(self, pyfile): - if self.ERROR_PATTERN in self.data: - self.account.relogin() - self.retry(msg=_("User not logged in")) - - self.link = pyfile.url.rstrip('/') + "/download/" - - check = self.scan_download({ - 'login': re.compile(self.ERROR_PATTERN), - 'json' : re.compile(r'\{"status":"error".*?"message":"(.*?)"') - }) - - if check == "login" or (check == "json" and self.last_check.group(1) == "Access token expired"): - self.account.relogin() - self.retry(msg=_("Access token expired")) - - elif check == "json": - self.fail(self.last_check.group(1)) + def setup(self): + self.resume_download = True def handle_free(self, pyfile): if re.search(self.DL_LIMIT_PATTERN, self.data): self.wait(5 * 60, 12, _("Download limit reached")) - m = re.search(self.LINK_FREE_PATTERN, self.data) + self.data = self.load(pyfile.url, get={'download': "true"}) + + m = re.search(self.LINK_PATTERN, self.data) if m is None: - self.error(_("LINK_FREE_PATTERN not found")) + self.error(_("LINK_PATTERN not found")) self.link = m.group(1) -- cgit v1.2.3