From 7e759ef2d5dbb30da9752b72146bf4ff240821a8 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 2 Nov 2014 22:34:38 +0100 Subject: Update internal XFS plugins --- module/plugins/internal/XFSAccount.py | 127 ++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 module/plugins/internal/XFSAccount.py (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py new file mode 100644 index 000000000..597964d4c --- /dev/null +++ b/module/plugins/internal/XFSAccount.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- + +import re + +from urlparse import urljoin +from time import gmtime, mktime, strptime + +from module.plugins.Account import Account +from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies + + +class XFSAccount(Account): + __name__ = "XFSAccount" + __type__ = "account" + __version__ = "0.23" + + __description__ = """XFileSharing account plugin""" + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + """ + Following patterns should be defined by each hoster: + + HOSTER_URL: (optional) + example: HOSTER_URL = r'linestorage.com' + + PREMIUM_PATTERN: (optional) Checks if the account is premium + example: PREMIUM_PATTERN = r'>Renew premium' + """ + + HOSTER_DOMAIN = None + + COOKIES = [(HOSTER_DOMAIN, "lang", "english")] #: or list of tuples [(domain, name, value)] + + VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?(\d{1,2} [\w^_]+ \d{4})' + + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' + TRAFFIC_LEFT_UNIT = "MB" #: used only if no group was found + + LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' + + + def __init__(self, manager, accounts): #@TODO: remove in 0.4.10 + self.init() + return super(XFSAccount, self).__init__(manager, accounts) + + + def init(self): + # if not self.HOSTER_DOMAIN: + # self.fail(_("Missing HOSTER_DOMAIN")) + + if not hasattr(self, "HOSTER_URL"): + self.HOSTER_URL = "http://www.%s/" % self.HOSTER_DOMAIN.replace("www.", "", 1) + + + def loadAccountInfo(self, user, req): + html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) + + validuntil = None + trafficleft = None + premium = None + + if hasattr(self, "PREMIUM_PATTERN"): + premium = True if re.search(self.PREMIUM_PATTERN, html) else False + + m = re.search(self.VALID_UNTIL_PATTERN, html) + if m: + expiredate = m.group(1).strip() + self.logDebug("Expire date: " + expiredate) + + try: + validuntil = mktime(strptime(expiredate, "%d %B %Y")) + except Exception, e: + self.logError(str(e)) + else: + if validuntil > mktime(gmtime()): + premium = True + else: + if premium is False: #: registered account type (not premium) + validuntil = -1 + premium = False + + m = re.search(self.TRAFFIC_LEFT_PATTERN, html) + if m: + try: + traffic = m.groupdict() + if "nlimited" in traffic['S']: + trafficleft = -1 + if premium is None: + premium = True + else: + if 'U' in traffic: + unit = traffic['U'] + elif isinstance(self.TRAFFIC_LEFT_UNIT, basestring): + unit = self.TRAFFIC_LEFT_UNIT + else: + unit = "" + + trafficleft = self.parseTraffic(traffic['S'] + unit) + + except Exception, e: + self.logDebug(str(e)) + + return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium or False} + + + def login(self, user, data, req): + if isinstance(self.COOKIES, list): + set_cookies(req.cj, self.COOKIES) + + url = urljoin(self.HOSTER_URL, "login.html") + html = req.load(url, decode=True) + + action, inputs = parseHtmlForm('name="FL"', html) + if not inputs: + inputs = {'op': "login", + 'redirect': self.HOSTER_URL} + + inputs.update({'login': user, + 'password': data['password']}) + + html = req.load(self.HOSTER_URL, post=inputs, decode=True) + + if re.search(self.LOGIN_FAIL_PATTERN, html): + self.wrongPassword() -- cgit v1.2.3 From d429c97c55e06a8f2ee7de64e4add783e80e9956 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 4 Nov 2014 03:25:05 +0100 Subject: [XFSAccount] Better traffic fallback --- module/plugins/internal/XFSAccount.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 597964d4c..aa8a8ace1 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.23" + __version__ = "0.24" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -32,12 +32,12 @@ class XFSAccount(Account): HOSTER_DOMAIN = None - COOKIES = [(HOSTER_DOMAIN, "lang", "english")] #: or list of tuples [(domain, name, value)] + COOKIES = [(HOSTER_DOMAIN, "lang", "english")] VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?(\d{1,2} [\w^_]+ \d{4})' TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' - TRAFFIC_LEFT_UNIT = "MB" #: used only if no group was found + TRAFFIC_LEFT_UNIT = "MB" #: used only if no group was found LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' @@ -86,7 +86,9 @@ class XFSAccount(Account): if m: try: traffic = m.groupdict() - if "nlimited" in traffic['S']: + size = traffic['S'] + + if "nlimited" in size: trafficleft = -1 if premium is None: premium = True @@ -98,10 +100,10 @@ class XFSAccount(Account): else: unit = "" - trafficleft = self.parseTraffic(traffic['S'] + unit) + trafficleft = self.parseTraffic(size + unit) except Exception, e: - self.logDebug(str(e)) + self.logError(str(e)) return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium or False} -- cgit v1.2.3 From e8d1f1e6083dd7caa30dce97eeb5c6005c9f79f9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 4 Nov 2014 13:03:24 +0100 Subject: [OneFichierCom] Fixed account plugin --- module/plugins/internal/XFSAccount.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index aa8a8ace1..6a3b3605e 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -56,12 +56,12 @@ class XFSAccount(Account): def loadAccountInfo(self, user, req): - html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) - validuntil = None trafficleft = None premium = None + html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) + if hasattr(self, "PREMIUM_PATTERN"): premium = True if re.search(self.PREMIUM_PATTERN, html) else False -- cgit v1.2.3 From f74309f89923317eeaaca31d74dff10590ed3d40 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 4 Nov 2014 23:42:46 +0100 Subject: [XFSHoster] Use URL_REPLACEMENTS to clean url --- module/plugins/internal/XFSAccount.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 6a3b3605e..6e34409ed 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -2,8 +2,8 @@ import re -from urlparse import urljoin from time import gmtime, mktime, strptime +from urlparse import urljoin from module.plugins.Account import Account from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies @@ -23,14 +23,12 @@ class XFSAccount(Account): """ Following patterns should be defined by each hoster: - HOSTER_URL: (optional) - example: HOSTER_URL = r'linestorage.com' - PREMIUM_PATTERN: (optional) Checks if the account is premium example: PREMIUM_PATTERN = r'>Renew premium' """ HOSTER_DOMAIN = None + HOSTER_URL = None COOKIES = [(HOSTER_DOMAIN, "lang", "english")] @@ -51,8 +49,8 @@ class XFSAccount(Account): # if not self.HOSTER_DOMAIN: # self.fail(_("Missing HOSTER_DOMAIN")) - if not hasattr(self, "HOSTER_URL"): - self.HOSTER_URL = "http://www.%s/" % self.HOSTER_DOMAIN.replace("www.", "", 1) + if not self.HOSTER_URL: + self.HOSTER_URL = "http://www.%s/" % self.HOSTER_DOMAIN def loadAccountInfo(self, user, req): -- cgit v1.2.3 From 8fdf56ba750f7bc513e87632cfa2f4415c9c67a5 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 6 Nov 2014 03:30:39 +0100 Subject: [XFSAccount] Fix premium & validuntil detection --- module/plugins/internal/XFSAccount.py | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 6e34409ed..8a2242018 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.24" + __version__ = "0.25" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -20,18 +20,13 @@ class XFSAccount(Account): ("Walter Purcaro", "vuolter@gmail.com")] - """ - Following patterns should be defined by each hoster: - - PREMIUM_PATTERN: (optional) Checks if the account is premium - example: PREMIUM_PATTERN = r'>Renew premium' - """ - HOSTER_DOMAIN = None HOSTER_URL = None COOKIES = [(HOSTER_DOMAIN, "lang", "english")] + PREMIUM_PATTERN = r'\(Premium only\)' + VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?(\d{1,2} [\w^_]+ \d{4})' TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' @@ -60,8 +55,7 @@ class XFSAccount(Account): html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) - if hasattr(self, "PREMIUM_PATTERN"): - premium = True if re.search(self.PREMIUM_PATTERN, html) else False + premium = True if re.search(self.PREMIUM_PATTERN, html) else False m = re.search(self.VALID_UNTIL_PATTERN, html) if m: @@ -76,9 +70,8 @@ class XFSAccount(Account): if validuntil > mktime(gmtime()): premium = True else: - if premium is False: #: registered account type (not premium) - validuntil = -1 premium = False + validuntil = None #: registered account type (not premium) m = re.search(self.TRAFFIC_LEFT_PATTERN, html) if m: @@ -88,8 +81,8 @@ class XFSAccount(Account): if "nlimited" in size: trafficleft = -1 - if premium is None: - premium = True + if validuntil is None: + validuntil = -1 else: if 'U' in traffic: unit = traffic['U'] @@ -103,7 +96,7 @@ class XFSAccount(Account): except Exception, e: self.logError(str(e)) - return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium or False} + return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} def login(self, user, data, req): -- cgit v1.2.3 From c9e31d875d32de31e54959b82bc35eff2b3e0f3f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 10 Nov 2014 00:19:51 +0100 Subject: Code cosmetics --- module/plugins/internal/XFSAccount.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 8a2242018..ba2c00ec9 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -49,9 +49,9 @@ class XFSAccount(Account): def loadAccountInfo(self, user, req): - validuntil = None + validuntil = None trafficleft = None - premium = None + premium = None html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) @@ -64,8 +64,10 @@ class XFSAccount(Account): try: validuntil = mktime(strptime(expiredate, "%d %B %Y")) + except Exception, e: - self.logError(str(e)) + self.logError(e) + else: if validuntil > mktime(gmtime()): premium = True @@ -94,7 +96,7 @@ class XFSAccount(Account): trafficleft = self.parseTraffic(size + unit) except Exception, e: - self.logError(str(e)) + self.logError(e) return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} -- cgit v1.2.3 From 9f10e758325f4ce80c479bc16149e677b9e1885f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 22 Nov 2014 06:38:17 +0100 Subject: [XFSAccount][XFSHoster] Tiny pattern improvement --- module/plugins/internal/XFSAccount.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index ba2c00ec9..627dc75c4 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.25" + __version__ = "0.26" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -97,6 +97,9 @@ class XFSAccount(Account): except Exception, e: self.logError(e) + else: + if premium: + trafficleft = -1 return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} -- cgit v1.2.3 From 8e605a8b234974a89c93d38bccae9d19f86e965d Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 22 Nov 2014 20:20:49 +0100 Subject: [XFSAccount] Fix trafficleft --- module/plugins/internal/XFSAccount.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 627dc75c4..4a3d0696b 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.26" + __version__ = "0.27" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -71,6 +71,7 @@ class XFSAccount(Account): else: if validuntil > mktime(gmtime()): premium = True + trafficleft = -1 else: premium = False validuntil = None #: registered account type (not premium) @@ -97,9 +98,6 @@ class XFSAccount(Account): except Exception, e: self.logError(e) - else: - if premium: - trafficleft = -1 return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} -- cgit v1.2.3 From 77d012daf519366eb28f1952c8665f7b893f8692 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 23 Nov 2014 15:49:43 +0100 Subject: [XFSAccount] Fix validuntil computation --- module/plugins/internal/XFSAccount.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 4a3d0696b..75111025b 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -2,7 +2,7 @@ import re -from time import gmtime, mktime, strptime +from time import localtime, mktime, strptime from urlparse import urljoin from module.plugins.Account import Account @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.27" + __version__ = "0.28" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -63,18 +63,22 @@ class XFSAccount(Account): self.logDebug("Expire date: " + expiredate) try: - validuntil = mktime(strptime(expiredate, "%d %B %Y")) + validuntil = mktime(strptime(expiredate, "%d %B %Y")) + 86400 except Exception, e: self.logError(e) else: - if validuntil > mktime(gmtime()): + self.logDebug("Valid until: %s" % validuntil) + + if validuntil > mktime(localtime()): premium = True trafficleft = -1 else: premium = False validuntil = None #: registered account type (not premium) + else: + self.logDebug("VALID_UNTIL_PATTERN not found") m = re.search(self.TRAFFIC_LEFT_PATTERN, html) if m: @@ -98,6 +102,8 @@ class XFSAccount(Account): except Exception, e: self.logError(e) + else: + self.logDebug("TRAFFIC_LEFT_PATTERN not found") return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} -- cgit v1.2.3 From 01c55c0168f8745f5e113c88e6c95719a46de6d4 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 23 Nov 2014 17:13:34 +0100 Subject: [XFSAccount] Leech traffic support --- module/plugins/internal/XFSAccount.py | 43 ++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 75111025b..54ca5a8d8 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.28" + __version__ = "0.29" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -32,6 +32,9 @@ class XFSAccount(Account): TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' TRAFFIC_LEFT_UNIT = "MB" #: used only if no group was found + LEECH_TRAFFIC_PATTERN = r'Leech Traffic left:.*?(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' + LEECH_TRAFFIC_UNIT = "MB" #: used only if no group was found + LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' @@ -49,9 +52,10 @@ class XFSAccount(Account): def loadAccountInfo(self, user, req): - validuntil = None - trafficleft = None - premium = None + validuntil = None + trafficleft = None + leechtraffic = None + premium = None html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) @@ -84,7 +88,7 @@ class XFSAccount(Account): if m: try: traffic = m.groupdict() - size = traffic['S'] + size = traffic['S'] if "nlimited" in size: trafficleft = -1 @@ -105,7 +109,34 @@ class XFSAccount(Account): else: self.logDebug("TRAFFIC_LEFT_PATTERN not found") - return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} + m = re.finditer(self.LEECH_TRAFFIC_PATTERN, html) + if m: + leechtraffic = 0 + try: + for leech in m: + size = leech['S'] + + if "nlimited" in size: + leechtraffic = -1 + if validuntil is None: + validuntil = -1 + break + else: + if 'U' in leech: + unit = leech['U'] + elif isinstance(self.LEECH_TRAFFIC_UNIT, basestring): + unit = self.LEECH_TRAFFIC_UNIT + else: + unit = "" + + leechtraffic += self.parseTraffic(size + unit) + + except Exception, e: + self.logError(e) + else: + self.logDebug("LEECH_TRAFFIC_PATTERN not found") + + return {'validuntil': validuntil, 'trafficleft': trafficleft, 'leechtraffic': leechtraffic, 'premium': premium} def login(self, user, data, req): -- cgit v1.2.3 From ecfeeb64458e2425420d145bae1da89bd6da9280 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 23 Nov 2014 17:29:06 +0100 Subject: [XFSAccount] Revert validuntil computation --- module/plugins/internal/XFSAccount.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 54ca5a8d8..f2a4e8a15 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -2,7 +2,7 @@ import re -from time import localtime, mktime, strptime +from time import gmtime, mktime, strptime from urlparse import urljoin from module.plugins.Account import Account @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.29" + __version__ = "0.30" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -67,7 +67,7 @@ class XFSAccount(Account): self.logDebug("Expire date: " + expiredate) try: - validuntil = mktime(strptime(expiredate, "%d %B %Y")) + 86400 + validuntil = mktime(strptime(expiredate, "%d %B %Y")) except Exception, e: self.logError(e) @@ -75,7 +75,7 @@ class XFSAccount(Account): else: self.logDebug("Valid until: %s" % validuntil) - if validuntil > mktime(localtime()): + if validuntil > mktime(gmtime()): premium = True trafficleft = -1 else: -- cgit v1.2.3 From 0d27fda4b6edbfcba9b78b2c3f91063b8464455a Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 28 Nov 2014 20:40:00 +0100 Subject: [XFSAccount] Fix leech traffic detection --- module/plugins/internal/XFSAccount.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index f2a4e8a15..5a265c08a 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.30" + __version__ = "0.31" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -109,12 +109,12 @@ class XFSAccount(Account): else: self.logDebug("TRAFFIC_LEFT_PATTERN not found") - m = re.finditer(self.LEECH_TRAFFIC_PATTERN, html) - if m: + leech = [m.groupdict() for m in re.finditer(self.LEECH_TRAFFIC_PATTERN, html)] + if leech: leechtraffic = 0 try: - for leech in m: - size = leech['S'] + for traffic in leech: + size = traffic['S'] if "nlimited" in size: leechtraffic = -1 @@ -122,8 +122,8 @@ class XFSAccount(Account): validuntil = -1 break else: - if 'U' in leech: - unit = leech['U'] + if 'U' in traffic: + unit = traffic['U'] elif isinstance(self.LEECH_TRAFFIC_UNIT, basestring): unit = self.LEECH_TRAFFIC_UNIT else: -- cgit v1.2.3 From a83f45f14aefb4fd766f7908e11bc6beaac3d0e8 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 1 Dec 2014 18:51:37 +0100 Subject: [XFSAccount] Improve patterns --- module/plugins/internal/XFSAccount.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 5a265c08a..2094b1480 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.31" + __version__ = "0.32" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -27,15 +27,15 @@ class XFSAccount(Account): PREMIUM_PATTERN = r'\(Premium only\)' - VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?(\d{1,2} [\w^_]+ \d{4})' + VALID_UNTIL_PATTERN = r'Premium.[Aa]ccount expire:.*?(\d{1,2} [\w^_]+ \d{4})' - TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' + TRAFFIC_LEFT_PATTERN = r'Traffic available today:.*?\s*(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' TRAFFIC_LEFT_UNIT = "MB" #: used only if no group was found LEECH_TRAFFIC_PATTERN = r'Leech Traffic left:.*?(?P[\d.,]+|[Uu]nlimited)\s*(?:(?P[\w^_]+)\s*)?' LEECH_TRAFFIC_UNIT = "MB" #: used only if no group was found - LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' + LOGIN_FAIL_PATTERN = r'>\s*(Incorrect Login or Password|Error<)' def __init__(self, manager, accounts): #@TODO: remove in 0.4.10 -- cgit v1.2.3 From cc833c564e01971b0a915c2f5343ad683c65b825 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 23 Dec 2014 18:49:39 +0100 Subject: [LinestorageCom] Fix account plugin --- module/plugins/internal/XFSAccount.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/XFSAccount.py') diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 2094b1480..2784ecd0b 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import parseHtmlForm, set_cookies class XFSAccount(Account): __name__ = "XFSAccount" __type__ = "account" - __version__ = "0.32" + __version__ = "0.33" __description__ = """XFileSharing account plugin""" __license__ = "GPLv3" @@ -44,11 +44,11 @@ class XFSAccount(Account): def init(self): - # if not self.HOSTER_DOMAIN: - # self.fail(_("Missing HOSTER_DOMAIN")) + if not self.HOSTER_DOMAIN: + self.logError(_("Missing HOSTER_DOMAIN")) if not self.HOSTER_URL: - self.HOSTER_URL = "http://www.%s/" % self.HOSTER_DOMAIN + self.HOSTER_URL = "http://www.%s/" % self.HOSTER_DOMAIN or "" def loadAccountInfo(self, user, req): -- cgit v1.2.3