From 8fdf56ba750f7bc513e87632cfa2f4415c9c67a5 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
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(-)

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:.*?<b>\s*(?P<S>[\d.,]+|[Uu]nlimited)\s*(?:(?P<U>[\w^_]+)\s*)?</b>'
@@ -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