diff options
Diffstat (limited to 'module')
59 files changed, 462 insertions, 393 deletions
| diff --git a/module/plugins/accounts/AlldebridCom.py b/module/plugins/accounts/AlldebridCom.py index baaa9d264..9fb050535 100644 --- a/module/plugins/accounts/AlldebridCom.py +++ b/module/plugins/accounts/AlldebridCom.py @@ -1,10 +1,12 @@ -from module.plugins.Account import Account  import xml.dom.minidom as dom -from BeautifulSoup import BeautifulSoup  from time import time  import re  import urllib +from module.plugins.Account import Account +from BeautifulSoup import BeautifulSoup + +  class AlldebridCom(Account):      __name__ = "AlldebridCom"      __version__ = "0.21" @@ -16,34 +18,35 @@ class AlldebridCom(Account):      def loadAccountInfo(self, user, req):          data = self.getAccountData(user)          page = req.load("http://www.alldebrid.com/account/") -        soup=BeautifulSoup(page) +        soup = BeautifulSoup(page)          #Try to parse expiration date directly from the control panel page (better accuracy)                  try: -            time_text=soup.find('div',attrs={'class':'remaining_time_text'}).strong.string +            time_text = soup.find('div', attrs={'class': 'remaining_time_text'}).strong.string              self.log.debug("Account expires in: %s" % time_text)              p = re.compile('\d+') -            exp_data=p.findall(time_text) -            exp_time=time()+int(exp_data[0])*24*60*60+int(exp_data[1])*60*60+(int(exp_data[2])-1)*60 +            exp_data = p.findall(time_text) +            exp_time = time() + int(exp_data[0]) * 24 * 60 * 60 + int( +                exp_data[1]) * 60 * 60 + (int(exp_data[2]) - 1) * 60          #Get expiration date from API          except:              data = self.getAccountData(user) -            page = req.load("http://www.alldebrid.com/api.php?action=info_user&login=%s&pw=%s" %  (user, data["password"])) +            page = req.load("http://www.alldebrid.com/api.php?action=info_user&login=%s&pw=%s" % (user, +                                                                                                  data["password"]))              self.log.debug(page)              xml = dom.parseString(page) -            exp_time=time()+int(xml.getElementsByTagName("date")[0].childNodes[0].nodeValue)*86400 +            exp_time = time() + int(xml.getElementsByTagName("date")[0].childNodes[0].nodeValue) * 86400          account_info = {"validuntil": exp_time, "trafficleft": -1}          return account_info -    def login(self, user, data, req):       -     -        urlparams = urllib.urlencode({'action':'login','login_login':user,'login_password':data["password"]}) -        page = req.load("http://www.alldebrid.com/register/?%s" % (urlparams)) +    def login(self, user, data, req): +        urlparams = urllib.urlencode({'action': 'login', 'login_login': user, 'login_password': data["password"]}) +        page = req.load("http://www.alldebrid.com/register/?%s" % urlparams)          if "This login doesn't exist" in page:              self.wrongPassword() -              +          if "The password is not valid" in page:              self.wrongPassword() -             +          if "Invalid captcha" in page:              self.wrongPassword() diff --git a/module/plugins/accounts/BayfilesCom.py b/module/plugins/accounts/BayfilesCom.py index 0d036488b..bf5cc54af 100644 --- a/module/plugins/accounts/BayfilesCom.py +++ b/module/plugins/accounts/BayfilesCom.py @@ -17,10 +17,11 @@      @author: zoidberg  """ +from time import time +  from module.plugins.Account import Account  from module.common.json_layer import json_loads -import re -from time import time, mktime, strptime +  class BayfilesCom(Account):      __name__ = "BayfilesCom" @@ -33,14 +34,13 @@ class BayfilesCom(Account):      def loadAccountInfo(self, user, req):          for i in range(2):              response = json_loads(req.load("http://api.bayfiles.com/v1/account/info")) -            self.logDebug(response)             -            if not response["error"]:  +            self.logDebug(response) +            if not response["error"]:                  break              self.logWarning(response["error"])              self.relogin() -         -        return {"premium": bool(response['premium']), \ -                "trafficleft": -1, \ + +        return {"premium": bool(response['premium']), "trafficleft": -1,                  "validuntil": response['expires'] if response['expires'] >= int(time()) else -1}      def login(self, user, data, req): @@ -48,4 +48,4 @@ class BayfilesCom(Account):          self.logDebug(response)          if response["error"]:              self.logError(response["error"]) -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/BitshareCom.py b/module/plugins/accounts/BitshareCom.py index a4f56e31c..39cff36eb 100644 --- a/module/plugins/accounts/BitshareCom.py +++ b/module/plugins/accounts/BitshareCom.py @@ -19,6 +19,7 @@  from module.plugins.Account import Account +  class BitshareCom(Account):      __name__ = "BitshareCom"      __version__ = "0.11" @@ -28,17 +29,17 @@ class BitshareCom(Account):      def loadAccountInfo(self, user, req):          page = req.load("http://bitshare.com/mysettings.html") -     +          if "\"http://bitshare.com/myupgrade.html\">Free" in page: -            return {"validuntil": -1, "trafficleft":-1, "premium": False} +            return {"validuntil": -1, "trafficleft": -1, "premium": False}          if not '<input type="checkbox" name="directdownload" checked="checked" />' in page:              self.core.log.warning(_("Activate direct Download in your Bitshare Account"))          return {"validuntil": -1, "trafficleft": -1, "premium": True} -      def login(self, user, data, req): -        page = req.load("http://bitshare.com/login.html", post={ "user" : user, "password" : data["password"], "submit" :"Login"}, cookies=True) +        page = req.load("http://bitshare.com/login.html", +                        post={"user": user, "password": data["password"], "submit": "Login"}, cookies=True)          if "login" in req.lastEffectiveURL:              self.wrongPassword() diff --git a/module/plugins/accounts/BoltsharingCom.py b/module/plugins/accounts/BoltsharingCom.py index 678591d1d..76e010532 100644 --- a/module/plugins/accounts/BoltsharingCom.py +++ b/module/plugins/accounts/BoltsharingCom.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class BoltsharingCom(XFSPAccount):      __name__ = "BoltsharingCom"      __version__ = "0.01" diff --git a/module/plugins/accounts/CramitIn.py b/module/plugins/accounts/CramitIn.py index 182c9d647..b0334b191 100644 --- a/module/plugins/accounts/CramitIn.py +++ b/module/plugins/accounts/CramitIn.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class CramitIn(XFSPAccount):      __name__ = "CramitIn"      __version__ = "0.01" @@ -8,5 +9,5 @@ class CramitIn(XFSPAccount):      __description__ = """cramit.in account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    MAIN_PAGE = "http://cramit.in/"
\ No newline at end of file + +    MAIN_PAGE = "http://cramit.in/" diff --git a/module/plugins/accounts/CyberlockerCh.py b/module/plugins/accounts/CyberlockerCh.py index 31e0c3e24..0eaa262eb 100644 --- a/module/plugins/accounts/CyberlockerCh.py +++ b/module/plugins/accounts/CyberlockerCh.py @@ -2,6 +2,7 @@  from module.plugins.internal.XFSPAccount import XFSPAccount  from module.plugins.internal.SimpleHoster import parseHtmlForm +  class CyberlockerCh(XFSPAccount):      __name__ = "CyberlockerCh"      __version__ = "0.01" @@ -13,7 +14,7 @@ class CyberlockerCh(XFSPAccount):      MAIN_PAGE = "http://cyberlocker.ch/"      def login(self, user, data, req): -        html = req.load(self.MAIN_PAGE + 'login.html', decode = True) +        html = req.load(self.MAIN_PAGE + 'login.html', decode=True)          action, inputs = parseHtmlForm('name="FL"', html)          if not inputs: @@ -25,7 +26,7 @@ class CyberlockerCh(XFSPAccount):          # Without this a 403 Forbidden is returned          req.http.lastURL = self.MAIN_PAGE + 'login.html' -        html = req.load(self.MAIN_PAGE, 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() diff --git a/module/plugins/accounts/DdlstorageCom.py b/module/plugins/accounts/DdlstorageCom.py index 01d165f23..6c610aa84 100644 --- a/module/plugins/accounts/DdlstorageCom.py +++ b/module/plugins/accounts/DdlstorageCom.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class DdlstorageCom(XFSPAccount):      __name__ = "DdlstorageCom"      __version__ = "0.01" @@ -8,5 +9,5 @@ class DdlstorageCom(XFSPAccount):      __description__ = """DDLStorage.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    MAIN_PAGE = "http://ddlstorage.com/"
\ No newline at end of file + +    MAIN_PAGE = "http://ddlstorage.com/" diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py index 91dd3787f..82acd8f8e 100644 --- a/module/plugins/accounts/DebridItaliaCom.py +++ b/module/plugins/accounts/DebridItaliaCom.py @@ -16,7 +16,6 @@  ############################################################################  import re -import _strptime  import time  from module.plugins.Account import Account diff --git a/module/plugins/accounts/DepositfilesCom.py b/module/plugins/accounts/DepositfilesCom.py index b0730de8e..177d7267f 100644 --- a/module/plugins/accounts/DepositfilesCom.py +++ b/module/plugins/accounts/DepositfilesCom.py @@ -17,10 +17,12 @@      @author: mkaay  """ -from module.plugins.Account import Account  import re  from time import strptime, mktime +from module.plugins.Account import Account + +  class DepositfilesCom(Account):      __name__ = "DepositfilesCom"      __version__ = "0.1" @@ -28,20 +30,19 @@ class DepositfilesCom(Account):      __description__ = """depositfiles.com account plugin"""      __author_name__ = ("mkaay")      __author_mail__ = ("mkaay@mkaay.de") -     -    def loadAccountInfo(self, user, req): +    def loadAccountInfo(self, user, req):          src = req.load("http://depositfiles.com/de/gold/")          validuntil = re.search("noch den Gold-Zugriff: <b>(.*?)</b></div>", src).group(1)          validuntil = int(mktime(strptime(validuntil, "%Y-%m-%d %H:%M:%S"))) -        tmp = {"validuntil":validuntil, "trafficleft":-1} +        tmp = {"validuntil": validuntil, "trafficleft": -1}          return tmp -     -    def login(self, user, data, req): +    def login(self, user, data, req):          req.load("http://depositfiles.com/de/gold/payment.php") -        src = req.load("http://depositfiles.com/de/login.php", get={"return": "/de/gold/payment.php"}, post={"login": user, "password": data["password"]}) +        src = req.load("http://depositfiles.com/de/login.php", get={"return": "/de/gold/payment.php"}, +                       post={"login": user, "password": data["password"]})          if r'<div class="error_message">Sie haben eine falsche Benutzername-Passwort-Kombination verwendet.</div>' in src:              self.wrongPassword() diff --git a/module/plugins/accounts/EasybytezCom.py b/module/plugins/accounts/EasybytezCom.py index ba7829b83..cd995fbe5 100644 --- a/module/plugins/accounts/EasybytezCom.py +++ b/module/plugins/accounts/EasybytezCom.py @@ -17,11 +17,13 @@      @author: zoidberg  """ +import re +from time import mktime, strptime +  from module.plugins.Account import Account  from module.plugins.internal.SimpleHoster import parseHtmlForm -import re  from module.utils import parseFileSize -from time import mktime, strptime +  class EasybytezCom(Account):      __name__ = "EasybytezCom" @@ -30,16 +32,16 @@ class EasybytezCom(Account):      __description__ = """EasyBytez.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      VALID_UNTIL_PATTERN = r'<TR><TD>Premium account expire:</TD><TD><b>([^<]+)</b>'      TRAFFIC_LEFT_PATTERN = r'<TR><TD>Traffic available today:</TD><TD><b>(?P<S>[^<]+)</b>' -    def loadAccountInfo(self, user, req):       -        html = req.load("http://www.easybytez.com/?op=my_account", decode = True) -         +    def loadAccountInfo(self, user, req): +        html = req.load("http://www.easybytez.com/?op=my_account", decode=True) +          validuntil = trafficleft = None          premium = False -         +          found = re.search(self.VALID_UNTIL_PATTERN, html)          if found:              premium = True @@ -56,18 +58,18 @@ class EasybytezCom(Account):                  if "Unlimited" in trafficleft:                      premium = True                  else: -                    trafficleft = parseFileSize(trafficleft) / 1024                            -         -        return ({"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium}) -     +                    trafficleft = parseFileSize(trafficleft) / 1024 + +        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} +      def login(self, user, data, req): -        html = req.load('http://www.easybytez.com/login.html', decode = True) +        html = req.load('http://www.easybytez.com/login.html', decode=True)          action, inputs = parseHtmlForm('name="FL"', html)          inputs.update({"login": user,                         "password": data['password'],                         "redirect": "http://www.easybytez.com/"}) -         -        html = req.load(action, post = inputs, decode = True) -         -        if 'Incorrect Login or Password' in html or '>Error<' in html:           -            self.wrongPassword()
\ No newline at end of file + +        html = req.load(action, post=inputs, decode=True) + +        if 'Incorrect Login or Password' in html or '>Error<' in html: +            self.wrongPassword() diff --git a/module/plugins/accounts/EgoFilesCom.py b/module/plugins/accounts/EgoFilesCom.py index da1ed03ad..9c2b918c3 100644 --- a/module/plugins/accounts/EgoFilesCom.py +++ b/module/plugins/accounts/EgoFilesCom.py @@ -1,10 +1,12 @@  # -*- coding: utf-8 -*- -from module.plugins.Account import Account  import re  import time + +from module.plugins.Account import Account  from module.utils import parseFileSize +  class EgoFilesCom(Account):      __name__ = "EgoFilesCom"      __version__ = "0.2" diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py index 42967d975..830c1db3f 100644 --- a/module/plugins/accounts/EuroshareEu.py +++ b/module/plugins/accounts/EuroshareEu.py @@ -17,11 +17,12 @@      @author: zoidberg  """ -from module.plugins.Account import Account  from time import mktime, strptime -from string import replace  import re +from module.plugins.Account import Account + +  class EuroshareEu(Account):      __name__ = "EuroshareEu"      __version__ = "0.01" @@ -33,23 +34,23 @@ class EuroshareEu(Account):      def loadAccountInfo(self, user, req):          self.relogin(user)          html = req.load("http://euroshare.eu/customer-zone/settings/") -         +          found = re.search('id="input_expire_date" value="(\d+\.\d+\.\d+ \d+:\d+)"', html)          if found is None:              premium, validuntil = False, -1          else:              premium = True              validuntil = mktime(strptime(found.group(1), "%d.%m.%Y %H:%M")) -         +          return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} -     +      def login(self, user, data, req): -     +          html = req.load('http://euroshare.eu/customer-zone/login/', post={ -                "trvale": "1", -                "login": user, -                "password": data["password"] -                }, decode=True) -                 +            "trvale": "1", +            "login": user, +            "password": data["password"] +        }, decode=True) +          if u">Nesprávne prihlasovacie meno alebo heslo" in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/FilebeerInfo.py b/module/plugins/accounts/FilebeerInfo.py index 40ab70519..3c3a9edfd 100644 --- a/module/plugins/accounts/FilebeerInfo.py +++ b/module/plugins/accounts/FilebeerInfo.py @@ -20,7 +20,7 @@  import re  from time import mktime, strptime  from module.plugins.Account import Account -from module.utils import parseFileSize +  class FilebeerInfo(Account):      __name__ = "FilebeerInfo" @@ -29,29 +29,29 @@ class FilebeerInfo(Account):      __description__ = """filebeer.info account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      VALID_UNTIL_PATTERN = r'Reverts To Free Account:\s</td>\s*<td>\s*(.*?)\s*</td>' -     +      def loadAccountInfo(self, user, req): -        html = req.load("http://filebeer.info/upgrade.php", decode = True)         +        html = req.load("http://filebeer.info/upgrade.php", decode=True)          premium = not 'Free User </td>' in html -                 +          validuntil = None          if premium:              try: -                validuntil = mktime(strptime(re.search(self.VALID_UNTIL_PATTERN, html).group(1), "%d/%m/%Y %H:%M:%S"))  +                validuntil = mktime(strptime(re.search(self.VALID_UNTIL_PATTERN, html).group(1), "%d/%m/%Y %H:%M:%S"))              except Exception, e:                  self.logError("Unable to parse account info", e)          return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} -     +      def login(self, user, data, req): -        html = req.load('http://filebeer.info/login.php', post = { +        html = req.load('http://filebeer.info/login.php', post={              "submit": 'Login',              "loginPassword": data['password'],              "loginUsername": user,              "submitme": '1' -            }, decode = True) -             +        }, decode=True) +          if "<ul class='pageErrors'>" in html or ">Your username and password are invalid<" in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/FilecloudIo.py b/module/plugins/accounts/FilecloudIo.py index cf9f92209..5de722ea7 100644 --- a/module/plugins/accounts/FilecloudIo.py +++ b/module/plugins/accounts/FilecloudIo.py @@ -19,6 +19,7 @@  from module.plugins.Account import Account +  class FilecloudIo(Account):      __name__ = "FilecloudIo"      __version__ = "0.01" @@ -26,24 +27,23 @@ class FilecloudIo(Account):      __description__ = """FilecloudIo account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -         -    def loadAccountInfo(self, user, req):                            -        return ({"validuntil": -1, "trafficleft": -1, "premium": False}) -     + +    def loadAccountInfo(self, user, req): +        return {"validuntil": -1, "trafficleft": -1, "premium": False} +      def login(self, user, data, req):          req.cj.setCookie("secure.filecloud.io", "lang", "en")          html = req.load('https://secure.filecloud.io/user-login.html') -         +          if not hasattr(self, "form_data"):              self.form_data = {} -                        +          self.form_data["username"] = user          self.form_data["password"] = data['password'] -     +          html = req.load('https://secure.filecloud.io/user-login_p.html', -                    post = self.form_data, -                    multipart = True) -         +                        post=self.form_data, +                        multipart=True) +          self.logged_in = True if "you have successfully logged in - filecloud.io" in html else False          self.form_data = {} -            
\ No newline at end of file diff --git a/module/plugins/accounts/FilefactoryCom.py b/module/plugins/accounts/FilefactoryCom.py index 8e163e2f6..679409058 100644 --- a/module/plugins/accounts/FilefactoryCom.py +++ b/module/plugins/accounts/FilefactoryCom.py @@ -17,10 +17,12 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re  from time import mktime, strptime +from module.plugins.Account import Account + +  class FilefactoryCom(Account):      __name__ = "FilefactoryCom"      __version__ = "0.13" @@ -28,27 +30,27 @@ class FilefactoryCom(Account):      __description__ = """filefactory.com account plugin"""      __author_name__ = ("zoidberg", "stickell")      __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it") -     +      ACCOUNT_INFO_PATTERN = r'<time datetime="([\d-]+)">' -    def loadAccountInfo(self, user, req):       +    def loadAccountInfo(self, user, req):          html = req.load("http://www.filefactory.com/member/") -             +          found = re.search(self.ACCOUNT_INFO_PATTERN, html)          if found:              premium = True -            validuntil = mktime(strptime(found.group(1),"%Y-%m-%d")) +            validuntil = mktime(strptime(found.group(1), "%Y-%m-%d"))          else:              premium = False -            validuntil = -1    +            validuntil = -1          return {"premium": premium, "trafficleft": -1, "validuntil": validuntil}      def login(self, user, data, req):          html = req.load("http://www.filefactory.com/member/login.php", post={ -            "email": user,  +            "email": user,              "password": data["password"],              "redirect": "/"}) -             +          if '/member/login.php?err=1' in req.http.header:              self.wrongPassword() diff --git a/module/plugins/accounts/FilejungleCom.py b/module/plugins/accounts/FilejungleCom.py index 8ac25c201..2f2a6012d 100644 --- a/module/plugins/accounts/FilejungleCom.py +++ b/module/plugins/accounts/FilejungleCom.py @@ -17,10 +17,12 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re  from time import mktime, strptime +from module.plugins.Account import Account + +  class FilejungleCom(Account):      __name__ = "FilejungleCom"      __version__ = "0.11" @@ -28,9 +30,9 @@ class FilejungleCom(Account):      __description__ = """filejungle.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      login_timeout = 60 -     +      URL = "http://filejungle.com/"      TRAFFIC_LEFT_PATTERN = r'"/extend_premium\.php">Until (\d+ [A-Za-z]+ \d+)<br'      LOGIN_FAILED_PATTERN = r'<span htmlfor="loginUser(Name|Password)" generated="true" class="fail_info">' @@ -42,19 +44,19 @@ class FilejungleCom(Account):              premium = True              validuntil = mktime(strptime(found.group(1), "%d %b %Y"))          else: -            premium = False  +            premium = False              validuntil = -1          return {"premium": premium, "trafficleft": -1, "validuntil": validuntil}      def login(self, user, data, req):          html = req.load(self.URL + "login.php", post={ -            "loginUserName": user,  +            "loginUserName": user,              "loginUserPassword": data["password"],              "loginFormSubmit": "Login", -            "recaptcha_challenge_field": "",	 -            "recaptcha_response_field": "",	 +            "recaptcha_challenge_field": "", +            "recaptcha_response_field": "",              "recaptcha_shortencode_field": ""}) -         +          if re.search(self.LOGIN_FAILED_PATTERN, html): -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index 7afd00f25..45ce5ab37 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -16,7 +16,6 @@  ############################################################################  import re -import _strptime  import time  from module.plugins.Account import Account diff --git a/module/plugins/accounts/FilerioCom.py b/module/plugins/accounts/FilerioCom.py index feacacaf5..8b0b5f54f 100644 --- a/module/plugins/accounts/FilerioCom.py +++ b/module/plugins/accounts/FilerioCom.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class FilerioCom(XFSPAccount):      __name__ = "FilerioCom"      __version__ = "0.01" @@ -8,5 +9,5 @@ class FilerioCom(XFSPAccount):      __description__ = """FileRio.in account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    MAIN_PAGE = "http://filerio.in/"
\ No newline at end of file + +    MAIN_PAGE = "http://filerio.in/" diff --git a/module/plugins/accounts/FilesMailRu.py b/module/plugins/accounts/FilesMailRu.py index 98fe13248..ea976bd44 100644 --- a/module/plugins/accounts/FilesMailRu.py +++ b/module/plugins/accounts/FilesMailRu.py @@ -18,8 +18,7 @@  """  from module.plugins.Account import Account -import re -from time import time +  class FilesMailRu(Account):      __name__ = "FilesMailRu" @@ -31,11 +30,13 @@ class FilesMailRu(Account):      def loadAccountInfo(self, user, req):          return {"validuntil": None, "trafficleft": None} -     -    def login(self, user, data,req): + +    def login(self, user, data, req):          user, domain = user.split("@") -        page = req.load("http://swa.mail.ru/cgi-bin/auth", None, { "Domain" : domain, "Login": user, "Password" : data['password'], "Page" : "http://files.mail.ru/"}, cookies=True) +        page = req.load("http://swa.mail.ru/cgi-bin/auth", None, +                        {"Domain": domain, "Login": user, "Password": data['password'], +                         "Page": "http://files.mail.ru/"}, cookies=True) -        if "Неверное имя пользователя или пароль" in page: # @TODO seems not to work +        if "Неверное имя пользователя или пароль" in page:  # @TODO seems not to work              self.wrongPassword() diff --git a/module/plugins/accounts/FileserveCom.py b/module/plugins/accounts/FileserveCom.py index 5e5068f22..d4056891a 100644 --- a/module/plugins/accounts/FileserveCom.py +++ b/module/plugins/accounts/FileserveCom.py @@ -22,6 +22,7 @@ from time import mktime, strptime  from module.plugins.Account import Account  from module.common.json_layer import json_loads +  class FileserveCom(Account):      __name__ = "FileserveCom"      __version__ = "0.2" @@ -43,7 +44,6 @@ class FileserveCom(Account):          else:              return {"premium": False, "trafficleft": None, "validuntil": None} -      def login(self, user, data, req):          page = req.load("http://app.fileserve.com/api/login/", post={"username": user, "password": data["password"],                                                                       "submit": "Submit+Query"}) diff --git a/module/plugins/accounts/FourSharedCom.py b/module/plugins/accounts/FourSharedCom.py index bd3820277..69a465671 100644 --- a/module/plugins/accounts/FourSharedCom.py +++ b/module/plugins/accounts/FourSharedCom.py @@ -20,6 +20,7 @@  from module.plugins.Account import Account  from module.common.json_layer import json_loads +  class FourSharedCom(Account):      __name__ = "FourSharedCom"      __version__ = "0.01" @@ -27,22 +28,22 @@ class FourSharedCom(Account):      __description__ = """FourSharedCom account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    def loadAccountInfo(self, user, req):                            + +    def loadAccountInfo(self, user, req):          #fixme -        return ({"validuntil": -1, "trafficleft": -1, "premium": False}) -     +        return {"validuntil": -1, "trafficleft": -1, "premium": False} +      def login(self, user, data, req):          req.cj.setCookie("www.4shared.com", "4langcookie", "en")          response = req.load('http://www.4shared.com/login', -                            post = {"login": user, -                                    "password": data['password'], -                                    "remember": "false", -                                    "doNotRedirect": "true"}) -        self.logDebug(response)  +                            post={"login": user, +                                  "password": data['password'], +                                  "remember": "false", +                                  "doNotRedirect": "true"}) +        self.logDebug(response)          response = json_loads(response) -         +          if not "ok" in response or response['ok'] != True:              if "rejectReason" in response and response['rejectReason'] != True: -                self.logError(response['rejectReason'])       -            self.wrongPassword()
\ No newline at end of file +                self.logError(response['rejectReason']) +            self.wrongPassword() diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py index 732f9e203..cdf45114a 100644 --- a/module/plugins/accounts/FreakshareCom.py +++ b/module/plugins/accounts/FreakshareCom.py @@ -21,6 +21,7 @@ from time import strptime, mktime  from module.plugins.Account import Account +  class FreakshareCom(Account):      __name__ = "FreakshareCom"      __version__ = "0.1" @@ -45,7 +46,8 @@ class FreakshareCom(Account):          return {"validuntil": validuntil, "trafficleft": traffic}      def login(self, user, data, req): -        page = req.load("http://freakshare.com/login.html", None, { "submit" : "Login", "user" : user, "pass" : data['password']}, cookies=True) +        page = req.load("http://freakshare.com/login.html", None, +                        {"submit": "Login", "user": user, "pass": data['password']}, cookies=True)          if "Falsche Logindaten!" in page or "Wrong Username or Password!" in page:              self.wrongPassword() diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index 9b22cbafb..75191e74a 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -17,11 +17,13 @@      @author: zoidberg  """ -from module.plugins.Account import Account  from time import mktime, strptime  from pycurl import REFERER  import re +from module.plugins.Account import Account + +  class FshareVn(Account):      __name__ = "FshareVn"      __version__ = "0.04" @@ -35,13 +37,14 @@ class FshareVn(Account):      DIRECT_DOWNLOAD_PATTERN = ur'<input type="checkbox"\s*([^=>]*)[^>]*/>Kích hoạt download trực tiếp</dt>'      def loadAccountInfo(self, user, req): -        html = req.load("http://www.fshare.vn/account_info.php", decode = True) +        html = req.load("http://www.fshare.vn/account_info.php", decode=True)          found = re.search(self.VALID_UNTIL_PATTERN, html)          if found:              premium = True              validuntil = mktime(strptime(found.group(1), '%I:%M:%S %p %d-%m-%Y'))              found = re.search(self.TRAFFIC_LEFT_PATTERN, html) -            trafficleft = float(found.group(1)) * 1024 ** {'k': 0, 'K': 0, 'M': 1, 'G': 2}[found.group(2)] if found else 0 +            trafficleft = float(found.group(1)) * 1024 ** { +                'k': 0, 'K': 0, 'M': 1, 'G': 2}[found.group(2)] if found else 0          else:              premium = False              validuntil = None @@ -52,11 +55,11 @@ class FshareVn(Account):      def login(self, user, data, req):          req.http.c.setopt(REFERER, "https://www.fshare.vn/login.php") -        html = req.load('https://www.fshare.vn/login.php', post = { -            "login_password" : data['password'], -            "login_useremail" :	user, -            "url_refe" : "https://www.fshare.vn/login.php" -            }, referer = True, decode = True) +        html = req.load('https://www.fshare.vn/login.php', post={ +            "login_password": data['password'], +            "login_useremail": user, +            "url_refe": "https://www.fshare.vn/login.php" +        }, referer=True, decode=True)          if not '<img alt="VIP"' in html:              self.wrongPassword() diff --git a/module/plugins/accounts/Ftp.py b/module/plugins/accounts/Ftp.py index 9c1081662..681d14cea 100644 --- a/module/plugins/accounts/Ftp.py +++ b/module/plugins/accounts/Ftp.py @@ -2,6 +2,7 @@  from module.plugins.Account import Account +  class Ftp(Account):      __name__ = "Ftp"      __version__ = "0.01" @@ -9,5 +10,5 @@ class Ftp(Account):      __description__ = """Ftp dummy account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    login_timeout = info_threshold = 1000000
\ No newline at end of file + +    login_timeout = info_threshold = 1000000 diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py index c7a918dec..4718ade99 100644 --- a/module/plugins/accounts/HellshareCz.py +++ b/module/plugins/accounts/HellshareCz.py @@ -17,10 +17,12 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re  import time +from module.plugins.Account import Account + +  class HellshareCz(Account):      __name__ = "HellshareCz"      __version__ = "0.14" @@ -49,7 +51,7 @@ class HellshareCz(Account):                      vt = [int(x) for x in credit.split('.')[:2]]                      lt = time.localtime()                      year = lt.tm_year + int(vt[1] < lt.tm_mon or (vt[1] == lt.tm_mon and vt[0] < lt.tm_mday)) -                    validuntil = time.mktime(time.strptime("%s%d 23:59:59" % (credit,year), "%d.%m.%Y %H:%M:%S"))  +                    validuntil = time.mktime(time.strptime("%s%d 23:59:59" % (credit, year), "%d.%m.%Y %H:%M:%S"))                      trafficleft = -1                  else:                      #Traffic-based account @@ -77,11 +79,11 @@ class HellshareCz(Account):              return          html = req.load('http://www.hellshare.com/login?do=loginForm-submit', post={ -                "login": "Log in", -                "password": data["password"], -                "username": user, -                "perm_login": "on" -                }) +            "login": "Log in", +            "password": data["password"], +            "username": user, +            "perm_login": "on" +        })          if "<p>You input a wrong user name or wrong password</p>" in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/HellspyCz.py b/module/plugins/accounts/HellspyCz.py index 5f14a093e..1bb574731 100644 --- a/module/plugins/accounts/HellspyCz.py +++ b/module/plugins/accounts/HellspyCz.py @@ -17,9 +17,10 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re -import string + +from module.plugins.Account import Account +  class HellspyCz(Account):      __name__ = "HellspyCz" @@ -48,23 +49,25 @@ class HellspyCz(Account):          return {"validuntil": -1, "trafficleft": credits} -    def login(self, user, data,req): -        header = req.load('http://www.hellspy.com/', just_header = True) -        self.phpsessid = re.search(r'PHPSESSID=(\w+)', header).group(1)        +    def login(self, user, data, req): +        header = req.load('http://www.hellspy.com/', just_header=True) +        self.phpsessid = re.search(r'PHPSESSID=(\w+)', header).group(1)          self.logDebug("PHPSESSID:" + self.phpsessid) -         +          html = req.load("http://www.hellspy.com/--%s-" % self.phpsessid) -        html = req.load("http://www.hell-share.com/user/login/?do=apiLoginForm-submit&api_hash=hellspy_iq&user_hash=%s" % self.phpsessid, post={ +        html = req.load( +            "http://www.hell-share.com/user/login/?do=apiLoginForm-submit&api_hash=hellspy_iq&user_hash=%s" % self.phpsessid, +            post={                  "login": "1",                  "password": data["password"],                  "username": user, -                "redir_url":	'http://www.hellspy.com/?do=loginBox-login', +                "redir_url": 'http://www.hellspy.com/?do=loginBox-login',                  "permanent_login": "1" -                }) +            })          cj = self.getAccountCookies(user)          cj.setCookie(".hellspy.com", "PHPSESSID", self.phpsessid)          if not re.search(self.CREDIT_LEFT_PATTERN, html): -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/HotfileCom.py b/module/plugins/accounts/HotfileCom.py index 23e42dacf..4c144a883 100644 --- a/module/plugins/accounts/HotfileCom.py +++ b/module/plugins/accounts/HotfileCom.py @@ -17,18 +17,20 @@      @author: mkaay, JoKoT3  """ -from module.plugins.Account import Account  from time import strptime, mktime  import hashlib +from module.plugins.Account import Account + +  class HotfileCom(Account):      __name__ = "HotfileCom"      __version__ = "0.2"      __type__ = "account"      __description__ = """hotfile.com account plugin""" -    __author_name__ = ("mkaay","JoKoT3") -    __author_mail__ = ("mkaay@mkaay.de","jokot3@gmail.com") -     +    __author_name__ = ("mkaay", "JoKoT3") +    __author_mail__ = ("mkaay@mkaay.de", "jokot3@gmail.com") +      def loadAccountInfo(self, user, req):          resp = self.apiCall("getuserinfo", user=user)          if resp.startswith("."): @@ -40,28 +42,28 @@ class HotfileCom(Account):              info[key] = value          if info['is_premium'] == '1': -            info["premium_until"] = info["premium_until"].replace("T"," ") +            info["premium_until"] = info["premium_until"].replace("T", " ")              zone = info["premium_until"][19:]              info["premium_until"] = info["premium_until"][:19]              zone = int(zone[:3]) -             -            validuntil = int(mktime(strptime(info["premium_until"], "%Y-%m-%d %H:%M:%S"))) + (zone*3600) -            tmp = {"validuntil":validuntil, "trafficleft":-1, "premium":True} + +            validuntil = int(mktime(strptime(info["premium_until"], "%Y-%m-%d %H:%M:%S"))) + (zone * 3600) +            tmp = {"validuntil": validuntil, "trafficleft": -1, "premium": True}          elif info['is_premium'] == '0': -            tmp = {"premium":False} -         +            tmp = {"premium": False} +          return tmp -     +      def apiCall(self, method, post={}, user=None):          if user:              data = self.getAccountData(user)          else:              user, data = self.selectAccount() -         +          req = self.getAccountRequest(user) -     -        digest = req.load("http://api.hotfile.com/", post={"action":"getdigest"}) + +        digest = req.load("http://api.hotfile.com/", post={"action": "getdigest"})          h = hashlib.md5()          h.update(data["password"])          hp = h.hexdigest() @@ -69,18 +71,19 @@ class HotfileCom(Account):          h.update(hp)          h.update(digest)          pwhash = h.hexdigest() -         +          post.update({"action": method}) -        post.update({"username":user, "passwordmd5dig":pwhash, "digest":digest}) +        post.update({"username": user, "passwordmd5dig": pwhash, "digest": digest})          resp = req.load("http://api.hotfile.com/", post=post)          req.close()          return resp -     +      def login(self, user, data, req):          cj = self.getAccountCookies(user)          cj.setCookie("hotfile.com", "lang", "en")          req.load("http://hotfile.com/", cookies=True) -        page = req.load("http://hotfile.com/login.php", post={"returnto": "/", "user": user, "pass": data["password"]}, cookies=True) +        page = req.load("http://hotfile.com/login.php", post={"returnto": "/", "user": user, "pass": data["password"]}, +                        cookies=True)          if "Bad username/password" in page: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/Http.py b/module/plugins/accounts/Http.py index 805d19900..5701d1f03 100644 --- a/module/plugins/accounts/Http.py +++ b/module/plugins/accounts/Http.py @@ -2,6 +2,7 @@  from module.plugins.Account import Account +  class Http(Account):      __name__ = "Http"      __version__ = "0.01" @@ -9,5 +10,5 @@ class Http(Account):      __description__ = """Http dummy account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    login_timeout = info_threshold = 1000000
\ No newline at end of file + +    login_timeout = info_threshold = 1000000 diff --git a/module/plugins/accounts/MegasharesCom.py b/module/plugins/accounts/MegasharesCom.py index 91601fc95..e7d5f9ca9 100644 --- a/module/plugins/accounts/MegasharesCom.py +++ b/module/plugins/accounts/MegasharesCom.py @@ -1,9 +1,11 @@  # -*- coding: utf-8 -*- -from module.plugins.Account import Account  import re  from time import mktime, strptime +from module.plugins.Account import Account + +  class MegasharesCom(Account):      __name__ = "MegasharesCom"      __version__ = "0.02" @@ -11,32 +13,32 @@ class MegasharesCom(Account):      __description__ = """megashares.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      VALID_UNTIL_PATTERN = r'<p class="premium_info_box">Period Ends: (\w{3} \d{1,2}, \d{4})</p>' -     +      def loadAccountInfo(self, user, req):          #self.relogin(user) -        html = req.load("http://d01.megashares.com/myms.php", decode = True) -                     +        html = req.load("http://d01.megashares.com/myms.php", decode=True) +          premium = False if '>Premium Upgrade<' in html else True -         +          validuntil = trafficleft = -1 -        try:              +        try:              timestr = re.search(self.VALID_UNTIL_PATTERN, html).group(1)              self.logDebug(timestr)              validuntil = mktime(strptime(timestr, "%b %d, %Y"))          except Exception, e: -            self.logError(e)                           -          +            self.logError(e) +          return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} -     +      def login(self, user, data, req): -        html = req.load('http://d01.megashares.com/myms_login.php', post = { -            "httpref":	"", -            "myms_login":	"Login", +        html = req.load('http://d01.megashares.com/myms_login.php', post={ +            "httpref": "", +            "myms_login": "Login",              "mymslogin_name": user,              "mymspassword": data['password'] -            }, decode = True) -         +        }, decode=True) +          if not '<span class="b ml">%s</span>' % user in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index 39439cbbe..273936615 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -23,6 +23,7 @@ from module.plugins.Account import Account  import re  from module.utils import parseFileSize +  class MultishareCz(Account):      __name__ = "MultishareCz"      __version__ = "0.02" @@ -30,29 +31,29 @@ class MultishareCz(Account):      __description__ = """multishare.cz account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[0-9,]+) (?P<U>\w+)</strong>'      ACCOUNT_INFO_PATTERN = r'<input type="hidden" id="(u_ID|u_hash)" name="[^"]*" value="([^"]+)">'      def loadAccountInfo(self, user, req):          #self.relogin(user) -        html = req.load("http://www.multishare.cz/profil/", decode = True) -                     -        found = re.search(self.TRAFFIC_LEFT_PATTERN, html)            +        html = req.load("http://www.multishare.cz/profil/", decode=True) + +        found = re.search(self.TRAFFIC_LEFT_PATTERN, html)          trafficleft = parseFileSize(found.group('S'), found.group('U')) / 1024 if found else 0 -        self.premium = True if trafficleft else False  -         -        html = req.load("http://www.multishare.cz/", decode = True) +        self.premium = True if trafficleft else False + +        html = req.load("http://www.multishare.cz/", decode=True)          mms_info = dict(re.findall(self.ACCOUNT_INFO_PATTERN, html))          return dict(mms_info, **{"validuntil": -1, "trafficleft": trafficleft}) -     +      def login(self, user, data, req): -        html = req.load('http://www.multishare.cz/html/prihlaseni_process.php', post = { -            "akce":	"Přihlásit", +        html = req.load('http://www.multishare.cz/html/prihlaseni_process.php', post={ +            "akce": "Přihlásit",              "heslo": data['password'],              "jmeno": user -            }, decode = True) -         +        }, decode=True) +          if '<div class="akce-chyba akce">' in html:              self.wrongPassword()
\ No newline at end of file diff --git a/module/plugins/accounts/NetloadIn.py b/module/plugins/accounts/NetloadIn.py index cef3e298b..3e3bd93c1 100755 --- a/module/plugins/accounts/NetloadIn.py +++ b/module/plugins/accounts/NetloadIn.py @@ -17,10 +17,12 @@      @author: mkaay  """ -from module.plugins.Account import Account  import re  from time import time +from module.plugins.Account import Account + +  class NetloadIn(Account):      __name__ = "NetloadIn"      __version__ = "0.22" @@ -41,9 +43,11 @@ class NetloadIn(Account):              validuntil = None              premium = False              trafficleft = None -        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium" : premium} -     -    def login(self, user, data,req): -        page = req.load("http://netload.in/index.php", None, { "txtuser" : user, "txtpass" : data['password'], "txtcheck" : "login", "txtlogin" : "Login"}, cookies=True) +        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + +    def login(self, user, data, req): +        page = req.load("http://netload.in/index.php", None, +                        {"txtuser": user, "txtpass": data['password'], "txtcheck": "login", "txtlogin": "Login"}, +                        cookies=True)          if "password or it might be invalid!" in page:              self.wrongPassword() diff --git a/module/plugins/accounts/Premium4Me.py b/module/plugins/accounts/Premium4Me.py index fbca3ce84..467c5943e 100644 --- a/module/plugins/accounts/Premium4Me.py +++ b/module/plugins/accounts/Premium4Me.py @@ -1,5 +1,6 @@  from module.plugins.Account import Account +  class Premium4Me(Account):      __name__ = "Premium4Me"      __version__ = "0.03" @@ -17,7 +18,8 @@ class Premium4Me(Account):          return account_info      def login(self, user, data, req): -        self.authcode = req.load("http://premium.to/api/getauthcode.php?username=%s&password=%s" % (user, data["password"])).strip() -         +        self.authcode = req.load("http://premium.to/api/getauthcode.php?username=%s&password=%s" % ( +                                 user, data["password"])).strip() +          if "wrong username" in self.authcode: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py index 696fdf88f..c5c712c52 100644 --- a/module/plugins/accounts/PremiumizeMe.py +++ b/module/plugins/accounts/PremiumizeMe.py @@ -1,22 +1,21 @@ -from module.plugins.Account   import Account +from module.plugins.Account import Account  from module.common.json_layer import json_loads +  class PremiumizeMe(Account):      __name__ = "PremiumizeMe"      __version__ = "0.11"      __type__ = "account"      __description__ = """Premiumize.Me account plugin""" -          __author_name__ = ("Florian Franzen")      __author_mail__ = ("FlorianFranzen@gmail.com")      def loadAccountInfo(self, user, req): -                  # Get user data from premiumize.me          status = self.getAccountStatus(user, req)          self.logDebug(status) -             +          # Parse account info          account_info = {"validuntil": float(status['result']['expires']),                          "trafficleft": max(0, status['result']['trafficleft_bytes'] / 1024)} @@ -27,18 +26,17 @@ class PremiumizeMe(Account):          return account_info      def login(self, user, data, req): -                  # Get user data from premiumize.me          status = self.getAccountStatus(user, req) -         +          # Check if user and password are valid          if status['status'] != 200:              self.wrongPassword() -          def getAccountStatus(self, user, req): -         -        # Use premiumize.me API v1 (see https://secure.premiumize.me/?show=api) to retrieve account info and return the parsed json answer -        answer = req.load("https://api.premiumize.me/pm-api/v1.php?method=accountstatus¶ms[login]=%s¶ms[pass]=%s" % (user, self.accounts[user]['password']))             +        # Use premiumize.me API v1 (see https://secure.premiumize.me/?show=api) +        # to retrieve account info and return the parsed json answer +        answer = req.load( +            "https://api.premiumize.me/pm-api/v1.php?method=accountstatus¶ms[login]=%s¶ms[pass]=%s" % ( +            user, self.accounts[user]['password']))          return json_loads(answer) -         diff --git a/module/plugins/accounts/QuickshareCz.py b/module/plugins/accounts/QuickshareCz.py index 94649cc43..1af7cbffd 100644 --- a/module/plugins/accounts/QuickshareCz.py +++ b/module/plugins/accounts/QuickshareCz.py @@ -21,6 +21,7 @@ import re  from module.plugins.Account import Account  from module.utils import parseFileSize +  class QuickshareCz(Account):      __name__ = "QuickshareCz"      __version__ = "0.01" @@ -28,26 +29,26 @@ class QuickshareCz(Account):      __description__ = """quickshare.cz account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      def loadAccountInfo(self, user, req): -        html = req.load("http://www.quickshare.cz/premium", decode = True) -                     -        found = re.search(r'Stav kreditu: <strong>(.+?)</strong>', html)                    +        html = req.load("http://www.quickshare.cz/premium", decode=True) + +        found = re.search(r'Stav kreditu: <strong>(.+?)</strong>', html)          if found: -            trafficleft = parseFileSize(found.group(1)) / 1024    +            trafficleft = parseFileSize(found.group(1)) / 1024              premium = True if trafficleft else False          else:              trafficleft = None -            premium = False   +            premium = False          return {"validuntil": -1, "trafficleft": trafficleft, "premium": premium} -     +      def login(self, user, data, req): -        html = req.load('http://www.quickshare.cz/html/prihlaseni_process.php', post = { +        html = req.load('http://www.quickshare.cz/html/prihlaseni_process.php', post={              "akce": u'Přihlásit',              "heslo": data['password'],              "jmeno": user -            }, decode = True) -         +        }, decode=True) +          if u'>Takový uživatel neexistuje.<' in html or u'>Špatné heslo.<' in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py index 85adc71a3..8a02b712c 100644 --- a/module/plugins/accounts/RapidgatorNet.py +++ b/module/plugins/accounts/RapidgatorNet.py @@ -17,11 +17,10 @@      @author: zoidberg  """ -import re  from module.plugins.Account import Account -from module.utils import parseFileSize  from module.common.json_layer import json_loads +  class RapidgatorNet(Account):      __name__ = "RapidgatorNet"      __version__ = "0.04" @@ -29,24 +28,24 @@ class RapidgatorNet(Account):      __description__ = """rapidgator.net account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      API_URL = 'http://rapidgator.net/api/user' -         +      def loadAccountInfo(self, user, req):          try: -            sid = self.getAccountData(user).get('SID')  +            sid = self.getAccountData(user).get('SID')              assert sid -             +              json = req.load("%s/info?sid=%s" % (self.API_URL, sid)) -            self.logDebug("API:USERINFO", json)             +            self.logDebug("API:USERINFO", json)              json = json_loads(json) -                         +              if json['response_status'] == 200:                  if "reset_in" in json['response']:                      self.scheduleRefresh(user, json['response']['reset_in']) -                                                     -                return {"validuntil": json['response']['expire_date'],  -                        "trafficleft": int(json['response']['traffic_left']) / 1024,  + +                return {"validuntil": json['response']['expire_date'], +                        "trafficleft": int(json['response']['traffic_left']) / 1024,                          "premium": True}              else:                  self.logError(json['response_details']) @@ -54,21 +53,19 @@ class RapidgatorNet(Account):              self.logError(e)          return {"validuntil": None, "trafficleft": None, "premium": False} -     -    def login(self, user, data, req):                               + +    def login(self, user, data, req):          try: -            json = req.load('%s/login' % self.API_URL,  -                post = {"username": user, -                        "password": data['password']})             +            json = req.load('%s/login' % self.API_URL, post={"username": user, "password": data['password']})              self.logDebug("API:LOGIN", json) -            json = json_loads(json)             -         +            json = json_loads(json) +              if json['response_status'] == 200:                  data['SID'] = str(json['response']['session_id']) -                return             +                return              else:                  self.logError(json['response_details'])          except Exception, e:              self.logError(e) -             +          self.wrongPassword() diff --git a/module/plugins/accounts/RapidshareCom.py b/module/plugins/accounts/RapidshareCom.py index 15722e099..b2066cd1e 100644 --- a/module/plugins/accounts/RapidshareCom.py +++ b/module/plugins/accounts/RapidshareCom.py @@ -19,6 +19,7 @@  from module.plugins.Account import Account +  class RapidshareCom(Account):      __name__ = "RapidshareCom"      __version__ = "0.22" @@ -26,11 +27,12 @@ class RapidshareCom(Account):      __description__ = """Rapidshare.com account plugin"""      __author_name__ = ("mkaay")      __author_mail__ = ("mkaay@mkaay.de") -     +      def loadAccountInfo(self, user, req):          data = self.getAccountData(user)          api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi" -        api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, "password": data["password"], "withcookie": 1} +        api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, +                          "password": data["password"], "withcookie": 1}          src = req.load(api_url_base, cookies=False, get=api_param_prem)          if src.startswith("ERROR"):              raise Exception(src) @@ -41,20 +43,21 @@ class RapidshareCom(Account):                  continue              k, v = t.split("=")              info[k] = v -         +          validuntil = int(info["billeduntil"])          premium = True if validuntil else False -        tmp = {"premium": premium, "validuntil": validuntil, "trafficleft":-1, "maxtraffic":-1} +        tmp = {"premium": premium, "validuntil": validuntil, "trafficleft": -1, "maxtraffic": -1}          return tmp -     +      def login(self, user, data, req):          api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi" -        api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, "password": data["password"], "withcookie": 1} +        api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, +                          "password": data["password"], "withcookie": 1}          src = req.load(api_url_base, cookies=False, get=api_param_prem)          if src.startswith("ERROR"): -            raise Exception(src+"### Note you have to use your account number for login, instead of name.") +            raise Exception(src + "### Note you have to use your account number for login, instead of name.")          fields = src.split("\n")          info = {}          for t in fields: @@ -64,5 +67,3 @@ class RapidshareCom(Account):              info[k] = v          cj = self.getAccountCookies(user)          cj.setCookie("rapidshare.com", "enc", info["cookie"]) -             - diff --git a/module/plugins/accounts/RarefileNet.py b/module/plugins/accounts/RarefileNet.py index 90ad02d43..f4ae4a79a 100644 --- a/module/plugins/accounts/RarefileNet.py +++ b/module/plugins/accounts/RarefileNet.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class RarefileNet(XFSPAccount):      __name__ = "RarefileNet"      __version__ = "0.02" @@ -8,5 +9,5 @@ class RarefileNet(XFSPAccount):      __description__ = """RareFile.net account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      MAIN_PAGE = "http://rarefile.net/" diff --git a/module/plugins/accounts/RealdebridCom.py b/module/plugins/accounts/RealdebridCom.py index 847a925d4..11b985a13 100644 --- a/module/plugins/accounts/RealdebridCom.py +++ b/module/plugins/accounts/RealdebridCom.py @@ -1,6 +1,8 @@ -from module.plugins.Account import Account  import xml.dom.minidom as dom +from module.plugins.Account import Account + +  class RealdebridCom(Account):      __name__ = "RealdebridCom"      __version__ = "0.41" @@ -18,8 +20,9 @@ class RealdebridCom(Account):          return account_info      def login(self, user, data, req): -        page = req.load("https://real-debrid.com/ajax/login.php", get = {"user": user, "pass": data["password"]}) -        #page = req.load("https://real-debrid.com/login.html", post={"user": user, "pass": data["password"]}, cookies=True) +        page = req.load("https://real-debrid.com/ajax/login.php", get={"user": user, "pass": data["password"]}) +        # page = req.load("https://real-debrid.com/login.html", +        #                 post={"user": user, "pass": data["password"]}, cookies=True)          if "Your login informations are incorrect" in page:              self.wrongPassword() diff --git a/module/plugins/accounts/RehostTo.py b/module/plugins/accounts/RehostTo.py index e1cb2668f..58c91801b 100644 --- a/module/plugins/accounts/RehostTo.py +++ b/module/plugins/accounts/RehostTo.py @@ -9,9 +9,7 @@ class RehostTo(Account):      __author_name__ = ("RaNaN")      __author_mail__ = ("RaNaN@pyload.org") -      def loadAccountInfo(self, user, req): -          data = self.getAccountData(user)          page = req.load("http://rehost.to/api.php?cmd=login&user=%s&pass=%s" % (user, data["password"]))          data = [x.split("=") for x in page.split(",")] @@ -33,5 +31,3 @@ class RehostTo(Account):          if "Login failed." in page:              self.wrongPassword() - - diff --git a/module/plugins/accounts/ReloadCc.py b/module/plugins/accounts/ReloadCc.py index e4cb32c42..b3c26c6d3 100644 --- a/module/plugins/accounts/ReloadCc.py +++ b/module/plugins/accounts/ReloadCc.py @@ -1,9 +1,10 @@ -from module.plugins.Account   import Account +from module.plugins.Account import Account  from module.common.json_layer import json_loads  from module.network.HTTPRequest import BadHeader +  class ReloadCc(Account):      __name__ = "ReloadCc"      __version__ = "0.3" @@ -37,7 +38,6 @@ class ReloadCc(Account):          if status['status'] != "ok":              self.wrongPassword() -      def getAccountStatus(self, user, req):          # Use reload.cc API v1 to retrieve account info and return the parsed json answer          query_params = dict( diff --git a/module/plugins/accounts/RyushareCom.py b/module/plugins/accounts/RyushareCom.py index f734eb11b..484de2d7a 100644 --- a/module/plugins/accounts/RyushareCom.py +++ b/module/plugins/accounts/RyushareCom.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class RyushareCom(XFSPAccount):      __name__ = "RyushareCom"      __version__ = "0.03" @@ -8,11 +9,12 @@ class RyushareCom(XFSPAccount):      __description__ = """ryushare.com account plugin"""      __author_name__ = ("zoidberg", "trance4us")      __author_mail__ = ("zoidberg@mujmail.cz", "") -     +      MAIN_PAGE = "http://ryushare.com/" -     +      def login(self, user, data, req):          req.lastURL = "http://ryushare.com/login.python" -        html = req.load("http://ryushare.com/login.python", post={"login": user, "password": data["password"], "op": "login"}) -        if 'Incorrect Login or Password' in html or '>Error<' in html:           -            self.wrongPassword()
\ No newline at end of file +        html = req.load("http://ryushare.com/login.python", +                        post={"login": user, "password": data["password"], "op": "login"}) +        if 'Incorrect Login or Password' in html or '>Error<' in html: +            self.wrongPassword() diff --git a/module/plugins/accounts/Share76Com.py b/module/plugins/accounts/Share76Com.py index 9c946ae50..1dfcd8510 100644 --- a/module/plugins/accounts/Share76Com.py +++ b/module/plugins/accounts/Share76Com.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class Share76Com(XFSPAccount):      __name__ = "Share76Com"      __version__ = "0.02" diff --git a/module/plugins/accounts/ShareFilesCo.py b/module/plugins/accounts/ShareFilesCo.py index 0d8ea6635..cff52d570 100644 --- a/module/plugins/accounts/ShareFilesCo.py +++ b/module/plugins/accounts/ShareFilesCo.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class ShareFilesCo(XFSPAccount):      __name__ = "ShareFilesCo"      __version__ = "0.01" diff --git a/module/plugins/accounts/ShareRapidCom.py b/module/plugins/accounts/ShareRapidCom.py index f8043449c..b532768b1 100644 --- a/module/plugins/accounts/ShareRapidCom.py +++ b/module/plugins/accounts/ShareRapidCom.py @@ -4,44 +4,45 @@ import re  from time import mktime, strptime  from module.plugins.Account import Account +  class ShareRapidCom(Account):      __name__ = "ShareRapidCom"      __version__ = "0.32"      __type__ = "account"      __description__ = """ShareRapid account plugin"""      __author_name__ = ("MikyWoW", "zoidberg") -     +      login_timeout = 60 -         +      def loadAccountInfo(self, user, req):          src = req.load("http://share-rapid.com/mujucet/", decode=True) -         +          found = re.search(ur'<td>Max. počet paralelních stahování: </td><td>(\d+)', src)          if found:              data = self.getAccountData(user)              data["options"]["limitDL"] = [int(found.group(1))] -         +          found = re.search(ur'<td>Paušální stahování aktivní. Vyprší </td><td><strong>(.*?)</strong>', src)          if found:              validuntil = mktime(strptime(found.group(1), "%d.%m.%Y - %H:%M")) -            return {"premium": True, "trafficleft": -1, "validuntil": validuntil}         -         +            return {"premium": True, "trafficleft": -1, "validuntil": validuntil} +          found = re.search(r'<tr><td>GB:</td><td>(.*?) GB', src)          if found:              trafficleft = float(found.group(1)) * (1 << 20)              return {"premium": True, "trafficleft": trafficleft, "validuntil": -1} -         +          return {"premium": False, "trafficleft": None, "validuntil": None}      def login(self, user, data, req):          htm = req.load("http://share-rapid.com/prihlaseni/", cookies=True)          if "Heslo:" in htm:              start = htm.index('id="inp_hash" name="hash" value="') -            htm = htm[start+33:] +            htm = htm[start + 33:]              hashes = htm[0:32]              htm = req.load("http://share-rapid.com/prihlaseni/",                             post={"hash": hashes, -                                 "login": user,  +                                 "login": user,                                   "pass1": data["password"],                                   "remember": 0, -                                 "sbmt": u"Přihlásit"}, cookies=True)
\ No newline at end of file +                                 "sbmt": u"Přihlásit"}, cookies=True) diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py index fe2b412db..03babb5e6 100644 --- a/module/plugins/accounts/ShareonlineBiz.py +++ b/module/plugins/accounts/ShareonlineBiz.py @@ -19,6 +19,7 @@  from module.plugins.Account import Account +  class ShareonlineBiz(Account):      __name__ = "ShareonlineBiz"      __version__ = "0.24" @@ -29,7 +30,7 @@ class ShareonlineBiz(Account):      def getUserAPI(self, user, req):          return req.load("http://api.share-online.biz/account.php", -            {"username": user, "password": self.accounts[user]["password"], "act": "userDetails"}) +                        {"username": user, "password": self.accounts[user]["password"], "act": "userDetails"})      def loadAccountInfo(self, user, req):          src = self.getUserAPI(user, req) @@ -53,4 +54,4 @@ class ShareonlineBiz(Account):      def login(self, user, data, req):          src = self.getUserAPI(user, req)          if "EXCEPTION" in src: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/SpeedLoadOrg.py b/module/plugins/accounts/SpeedLoadOrg.py index 4eb2b52de..bb9fb05fb 100644 --- a/module/plugins/accounts/SpeedLoadOrg.py +++ b/module/plugins/accounts/SpeedLoadOrg.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class SpeedLoadOrg(XFSPAccount):      __name__ = "SpeedLoadOrg"      __version__ = "0.01" diff --git a/module/plugins/accounts/StahnuTo.py b/module/plugins/accounts/StahnuTo.py index 8a4523bc5..6e2b1c96d 100644 --- a/module/plugins/accounts/StahnuTo.py +++ b/module/plugins/accounts/StahnuTo.py @@ -17,9 +17,11 @@      @author: zoidberg  """ +import re +  from module.plugins.Account import Account  from module.utils import parseFileSize -import re +  class StahnuTo(Account):      __name__ = "StahnuTo" @@ -28,22 +30,22 @@ class StahnuTo(Account):      __description__ = """StahnuTo account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      #login_timeout = 60 -    def loadAccountInfo(self, user, req):         +    def loadAccountInfo(self, user, req):          html = req.load("http://www.stahnu.to/") -            +          found = re.search(r'>VIP: (\d+.*)<', html) -        trafficleft = parseFileSize(found.group(1)) * 1024 if found else 0  +        trafficleft = parseFileSize(found.group(1)) * 1024 if found else 0          return {"premium": trafficleft > (512 * 1024), "trafficleft": trafficleft, "validuntil": -1} -    def login(self, user, data, req):         +    def login(self, user, data, req):          html = req.load("http://www.stahnu.to/login.php", post={              "username": user,              "password": data["password"],              "submit": "Login"}) -         +          if not '<a href="logout.php">' in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/TurbobitNet.py b/module/plugins/accounts/TurbobitNet.py index c4b819131..5d4471c30 100644 --- a/module/plugins/accounts/TurbobitNet.py +++ b/module/plugins/accounts/TurbobitNet.py @@ -17,10 +17,12 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re  from time import mktime, strptime +from module.plugins.Account import Account + +  class TurbobitNet(Account):      __name__ = "TurbobitNet"      __version__ = "0.01" @@ -28,12 +30,12 @@ class TurbobitNet(Account):      __description__ = """TurbobitNet account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      #login_timeout = 60 -    def loadAccountInfo(self, user, req):         +    def loadAccountInfo(self, user, req):          html = req.load("http://turbobit.net") -            +          found = re.search(r'<u>Turbo Access</u> to ([0-9.]+)', html)          if found:              premium = True @@ -46,11 +48,11 @@ class TurbobitNet(Account):      def login(self, user, data, req):          req.cj.setCookie("turbobit.net", "user_lang", "en") -         +          html = req.load("http://turbobit.net/user/login", post={              "user[login]": user,              "user[pass]": data["password"],              "user[submit]": "Login"}) -         +          if not '<div class="menu-item user-name">' in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py index 6652c8b7c..dc59db9cc 100644 --- a/module/plugins/accounts/UlozTo.py +++ b/module/plugins/accounts/UlozTo.py @@ -1,8 +1,10 @@  # -*- coding: utf-8 -*- -from module.plugins.Account import Account  import re +from module.plugins.Account import Account + +  class UlozTo(Account):      __name__ = "UlozTo"      __version__ = "0.04" @@ -10,27 +12,27 @@ class UlozTo(Account):      __description__ = """uloz.to account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a href="http://www.ulozto.net/kredit" title="[^"]*?GB = ([0-9.]+) MB"'      def loadAccountInfo(self, user, req):          #this cookie gets lost somehow after each request -        self.phpsessid = req.cj.getCookie("ULOSESSID")  -        html = req.load("http://www.ulozto.net/", decode = True) -        req.cj.setCookie("www.ulozto.net", "ULOSESSID", self.phpsessid)         -                     +        self.phpsessid = req.cj.getCookie("ULOSESSID") +        html = req.load("http://www.ulozto.net/", decode=True) +        req.cj.setCookie("www.ulozto.net", "ULOSESSID", self.phpsessid) +          found = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        trafficleft = int(float(found.group(1).replace(' ','').replace(',','.')) * 1000 / 1.024) if found else 0 +        trafficleft = int(float(found.group(1).replace(' ', '').replace(',', '.')) * 1000 / 1.024) if found else 0          self.premium = True if trafficleft else False -         +          return {"validuntil": -1, "trafficleft": trafficleft} -     +      def login(self, user, data, req): -        html = req.load('http://www.ulozto.net/login?do=loginForm-submit', post = { +        html = req.load('http://www.ulozto.net/login?do=loginForm-submit', post={              "login": "Submit",              "password": data['password'], -            "username":	user -            }, decode = True) -         +            "username": user +        }, decode=True) +          if '<ul class="error">' in html:              self.wrongPassword() diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py index d202018f2..ac1f3fd35 100644 --- a/module/plugins/accounts/UploadedTo.py +++ b/module/plugins/accounts/UploadedTo.py @@ -17,10 +17,12 @@      @author: mkaay  """ -from module.plugins.Account import Account  import re  from time import time +from module.plugins.Account import Account + +  class UploadedTo(Account):      __name__ = "UploadedTo"      __version__ = "0.26" @@ -28,7 +30,7 @@ class UploadedTo(Account):      __description__ = """ul.net account plugin"""      __author_name__ = ("mkaay")      __author_mail__ = ("mkaay@mkaay.de") -     +      def loadAccountInfo(self, user, req):          req.load("http://uploaded.net/language/en") @@ -48,18 +50,19 @@ class UploadedTo(Account):                  raw_valid = re.findall(r"(\d+) (Week|weeks|days|day|hours|hour)", raw_valid)                  validuntil = time()                  for n, u in raw_valid: -                    validuntil += 3600 * int(n) * {"Week": 168, "weeks": 168, "days": 24, "day": 24, "hours": 1, "hour": 1}[u] +                    validuntil += 3600 * int(n) * {"Week": 168, "weeks": 168, "days": 24, +                                                   "day": 24, "hours": 1, "hour": 1}[u] -            return {"validuntil":validuntil, "trafficleft":traffic, "maxtraffic":50*1024*1024} +            return {"validuntil": validuntil, "trafficleft": traffic, "maxtraffic": 50 * 1024 * 1024}          else: -            return {"premium" : False, "validuntil" : -1} +            return {"premium": False, "validuntil": -1}      def login(self, user, data, req):          req.load("http://uploaded.net/language/en")          req.cj.setCookie("uploaded.net", "lang", "en") -         -        page = req.load("http://uploaded.net/io/login", post={ "id" : user, "pw" : data["password"], "_" : ""}) + +        page = req.load("http://uploaded.net/io/login", post={"id": user, "pw": data["password"], "_": ""})          if "User and password do not match!" in page:              self.wrongPassword() diff --git a/module/plugins/accounts/UploadheroCom.py b/module/plugins/accounts/UploadheroCom.py index 18ed69ae6..0e64a3ff5 100644 --- a/module/plugins/accounts/UploadheroCom.py +++ b/module/plugins/accounts/UploadheroCom.py @@ -1,8 +1,12 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- +import re +import datetime +import time +  from module.plugins.Account import Account -import re,datetime,time +  class UploadheroCom(Account):      __name__ = "UploadheroCom" @@ -12,7 +16,6 @@ class UploadheroCom(Account):      __author_name__ = ("mcmyst")      __author_mail__ = ("mcmyst@hotmail.fr") -      def loadAccountInfo(self, user, req):          premium_pattern = re.compile('Il vous reste <span class="bleu">([0-9]+)</span> jours premium.') @@ -20,16 +23,17 @@ class UploadheroCom(Account):          page = req.load("http://uploadhero.com/my-account")          if premium_pattern.search(page): -                end_date = datetime.date.today() + datetime.timedelta(days=int(premium_pattern.search(page).group(1))) -                end_date = time.mktime(future.timetuple()) -                account_info = {"validuntil": end_date, "trafficleft": -1, "premium": True} +            end_date = datetime.date.today() + datetime.timedelta(days=int(premium_pattern.search(page).group(1))) +            end_date = time.mktime(future.timetuple()) +            account_info = {"validuntil": end_date, "trafficleft": -1, "premium": True}          else: -                account_info = {"validuntil": -1, "trafficleft": -1, "premium": False} +            account_info = {"validuntil": -1, "trafficleft": -1, "premium": False}          return account_info      def login(self, user, data, req): -        page = req.load("http://uploadhero.com/lib/connexion.php", post={"pseudo_login": user, "password_login": data["password"]}) +        page = req.load("http://uploadhero.com/lib/connexion.php", +                        post={"pseudo_login": user, "password_login": data["password"]})          if "mot de passe invalide" in page: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/UploadingCom.py b/module/plugins/accounts/UploadingCom.py index 507e4ab18..d13df4f9d 100644 --- a/module/plugins/accounts/UploadingCom.py +++ b/module/plugins/accounts/UploadingCom.py @@ -17,10 +17,12 @@      @author: mkaay  """ -from module.plugins.Account import Account  from time import time, strptime, mktime  import re +from module.plugins.Account import Account + +  class UploadingCom(Account):      __name__ = "UploadingCom"      __version__ = "0.1" @@ -28,25 +30,26 @@ class UploadingCom(Account):      __description__ = """uploading.com account plugin"""      __author_name__ = ("mkaay")      __author_mail__ = ("mkaay@mkaay.de") -     +      def loadAccountInfo(self, user, req):          src = req.load("http://uploading.com/")          premium = True          if "UPGRADE TO PREMIUM" in src:              return {"validuntil": -1, "trafficleft": -1, "premium": False} -         +          m = re.search("Valid Until:(.*?)<", src)          if m:              validuntil = int(mktime(strptime(m.group(1).strip(), "%b %d, %Y")))          else:              validuntil = -1 -         +          return {"validuntil": validuntil, "trafficleft": -1, "premium": True} -         +      def login(self, user, data, req):          req.cj.setCookie("uploading.com", "lang", "1")          req.cj.setCookie("uploading.com", "language", "1")          req.cj.setCookie("uploading.com", "setlang", "en")          req.cj.setCookie("uploading.com", "_lang", "en")          req.load("http://uploading.com/") -        req.load("http://uploading.com/general/login_form/?JsHttpRequest=%s-xml" % long(time()*1000), post={"email": user, "password": data["password"], "remember": "on"}) +        req.load("http://uploading.com/general/login_form/?JsHttpRequest=%s-xml" % long(time() * 1000), +                 post={"email": user, "password": data["password"], "remember": "on"}) diff --git a/module/plugins/accounts/UploadstationCom.py b/module/plugins/accounts/UploadstationCom.py index e86cec7ce..040f6bbef 100644 --- a/module/plugins/accounts/UploadstationCom.py +++ b/module/plugins/accounts/UploadstationCom.py @@ -2,6 +2,7 @@  from module.plugins.accounts.FilejungleCom import FilejungleCom +  class UploadstationCom(FilejungleCom):      __name__ = "UploadstationCom"      __version__ = "0.1" @@ -9,5 +10,5 @@ class UploadstationCom(FilejungleCom):      __description__ = """uploadstation.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      URL = "http://uploadstation.com/" diff --git a/module/plugins/accounts/UptoboxCom.py b/module/plugins/accounts/UptoboxCom.py index b07991817..7fc62694a 100644 --- a/module/plugins/accounts/UptoboxCom.py +++ b/module/plugins/accounts/UptoboxCom.py @@ -1,6 +1,7 @@  # -*- coding: utf-8 -*-  from module.plugins.internal.XFSPAccount import XFSPAccount +  class UptoboxCom(XFSPAccount):      __name__ = "UptoboxCom"      __version__ = "0.01" @@ -8,5 +9,5 @@ class UptoboxCom(XFSPAccount):      __description__ = """DDLStorage.com account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     -    MAIN_PAGE = "http://uptobox.com/"
\ No newline at end of file + +    MAIN_PAGE = "http://uptobox.com/" diff --git a/module/plugins/accounts/WarserverCz.py b/module/plugins/accounts/WarserverCz.py index 21961956b..2c871eb6d 100644 --- a/module/plugins/accounts/WarserverCz.py +++ b/module/plugins/accounts/WarserverCz.py @@ -17,10 +17,11 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re + +from module.plugins.Account import Account  from module.utils import parseFileSize -from time import mktime, strptime +  class WarserverCz(Account):      __name__ = "WarserverCz" @@ -29,42 +30,39 @@ class WarserverCz(Account):      __description__ = """Warserver.cz account plugin"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") -     +      VALID_UNTIL_PATTERN = ur'<li>Neomezené stahování do: <strong>(.+?)<'      TRAFFIC_LEFT_PATTERN = ur'<li>Kredit: <strong>(.+?)<' -     +      DOMAIN = "http://www.warserver.cz" -    def loadAccountInfo(self, user, req):       -        html = req.load("%s/uzivatele/prehled" % self.DOMAIN, decode = True) -         +    def loadAccountInfo(self, user, req): +        html = req.load("%s/uzivatele/prehled" % self.DOMAIN, decode=True) +          validuntil = trafficleft = None          premium = False -         +          found = re.search(self.VALID_UNTIL_PATTERN, html)          if found:              self.logDebug("VALID_UNTIL", found.group(1)) -            try:                 +            try:                  #validuntil = mktime(strptime(found.group(1), "%d %B %Y"))                  premium = True                  trafficleft = -1              except Exception, e:                  self.logError(e) -                 +          found = re.search(self.TRAFFIC_LEFT_PATTERN, html)          if found:              self.logDebug("TRAFFIC_LEFT", found.group(1)) -            trafficleft = parseFileSize((found.group(1).replace(" ",""))) // 1024 -            premium = True if trafficleft > 1 << 18 else False                            -         -        return ({"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium}) -     +            trafficleft = parseFileSize((found.group(1).replace(" ", ""))) // 1024 +            premium = True if trafficleft > 1 << 18 else False + +        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} +      def login(self, user, data, req): -        html = req.load('%s/uzivatele/prihlaseni?do=prihlaseni-submit' % self.DOMAIN,  -                        post = {"username": user, -                                "password": data['password'], -                                "send": u"Přihlásit"}, -                        decode = True) -         -        if '<p class="chyba">' in html:           -            self.wrongPassword()
\ No newline at end of file +        html = req.load('%s/uzivatele/prihlaseni?do=prihlaseni-submit' % self.DOMAIN, +                        post={"username": user, "password": data['password'], "send": u"Přihlásit"}, decode=True) + +        if '<p class="chyba">' in html: +            self.wrongPassword() diff --git a/module/plugins/accounts/WuploadCom.py b/module/plugins/accounts/WuploadCom.py index 3d9ddfffa..2a8bfee8e 100644 --- a/module/plugins/accounts/WuploadCom.py +++ b/module/plugins/accounts/WuploadCom.py @@ -22,6 +22,7 @@ from types import MethodType  from module.plugins.Account import Account  from module.common.json_layer import json_loads +  class WuploadCom(Account):      __name__ = "WuploadCom"      __version__ = "0.1" @@ -44,4 +45,4 @@ class WuploadCom(Account):      def getDomain(self, req):          xml = req.load(self.API_URL + "/utility?method=getWuploadDomainForCurrentIp&format=json",                         decode=True) -        return json_loads(xml)["FSApi_Utility"]["getWuploadDomainForCurrentIp"]["response"]
\ No newline at end of file +        return json_loads(xml)["FSApi_Utility"]["getWuploadDomainForCurrentIp"]["response"] diff --git a/module/plugins/accounts/X7To.py b/module/plugins/accounts/X7To.py index 90f65d55e..34a7b99be 100644 --- a/module/plugins/accounts/X7To.py +++ b/module/plugins/accounts/X7To.py @@ -22,6 +22,7 @@ from time import strptime, mktime  from module.plugins.Account import Account +  class X7To(Account):      __name__ = "X7To"      __version__ = "0.1" @@ -45,7 +46,8 @@ class X7To(Account):              else:                  valid = 0 -        trafficleft = re.search(r'<em style="white-space:nowrap">([\d]*[,]?[\d]?[\d]?) (KB|MB|GB)</em>', page, re.IGNORECASE) +        trafficleft = re.search(r'<em style="white-space:nowrap">([\d]*[,]?[\d]?[\d]?) (KB|MB|GB)</em>', +                                page, re.IGNORECASE)          if trafficleft:              units = float(trafficleft.group(1).replace(",", "."))              pow = {'KB': 0, 'MB': 1, 'GB': 2}[trafficleft.group(2)] @@ -55,12 +57,11 @@ class X7To(Account):          return {"trafficleft": trafficleft, "validuntil": valid} -      def login(self, user, data, req):          #req.cj.setCookie("share.cx", "lang", "english")          page = req.load("http://x7.to/lang/en", None, {})          page = req.load("http://x7.to/james/login", None, -                {"redirect": "http://www.x7.to/", "id": user, "pw": data['password'], "submit": "submit"}) +                        {"redirect": "http://www.x7.to/", "id": user, "pw": data['password'], "submit": "submit"})          if "Username and password are not matching." in page:              self.wrongPassword() diff --git a/module/plugins/accounts/YibaishiwuCom.py b/module/plugins/accounts/YibaishiwuCom.py index e2aa6f11d..c4eab74dc 100644 --- a/module/plugins/accounts/YibaishiwuCom.py +++ b/module/plugins/accounts/YibaishiwuCom.py @@ -17,9 +17,11 @@      @author: zoidberg  """ -from module.plugins.Account import Account  import re +from module.plugins.Account import Account + +  class YibaishiwuCom(Account):      __name__ = "YibaishiwuCom"      __version__ = "0.01" @@ -32,20 +34,20 @@ class YibaishiwuCom(Account):      def loadAccountInfo(self, user, req):          #self.relogin(user) -        html = req.load("http://115.com/", decode = True) -         +        html = req.load("http://115.com/", decode=True) +          found = re.search(self.ACCOUNT_INFO_PATTERN, html, re.S)          premium = True if (found and 'is_vip: 1' in found.group(1)) else False          validuntil = trafficleft = (-1 if found else 0)          return dict({"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium})      def login(self, user, data, req): -        html = req.load('http://passport.115.com/?ac=login', post = { +        html = req.load('http://passport.115.com/?ac=login', post={              "back": "http://www.115.com/",              "goto": "http://115.com/",              "login[account]": user,              "login[passwd]": data['password'] -            }, decode = True) +        }, decode=True)          if not 'var USER_PERMISSION = {' in html: -            self.wrongPassword()
\ No newline at end of file +            self.wrongPassword() diff --git a/module/plugins/accounts/ZeveraCom.py b/module/plugins/accounts/ZeveraCom.py index 61a66cd89..13ed95133 100644 --- a/module/plugins/accounts/ZeveraCom.py +++ b/module/plugins/accounts/ZeveraCom.py @@ -1,8 +1,8 @@  # -*- coding: utf-8 -*- +from time import mktime, strptime +  from module.plugins.Account import Account -import re -from time import mktime, strptime  class ZeveraCom(Account):      __name__ = "ZeveraCom" @@ -10,17 +10,17 @@ class ZeveraCom(Account):      __type__ = "account"      __description__ = """Zevera.com account plugin"""      __author_name__ = ("zoidberg") -    __author_mail__ = ("zoidberg@mujmail.cz")     -     -    def loadAccountInfo(self, user, req):        +    __author_mail__ = ("zoidberg@mujmail.cz") + +    def loadAccountInfo(self, user, req):          data = self.getAPIData(req)          if data == "No traffic":              account_info = {"trafficleft": 0, "validuntil": 0, "premium": False}          else:              account_info = {                  "trafficleft": int(data['availabletodaytraffic']) * 1024, -                "validuntil": mktime(strptime(data['endsubscriptiondate'],"%Y/%m/%d %H:%M:%S")), -                "premium": True          +                "validuntil": mktime(strptime(data['endsubscriptiondate'], "%Y/%m/%d %H:%M:%S")), +                "premium": True              }          return account_info @@ -29,8 +29,8 @@ class ZeveraCom(Account):          self.password = data["password"]          if self.getAPIData(req) == "No traffic":              self.wrongPassword() -             -    def getAPIData(self, req, just_header = False, **kwargs): + +    def getAPIData(self, req, just_header=False, **kwargs):          get_data = {              'cmd': 'accountinfo',              'login': self.loginname, @@ -38,12 +38,14 @@ class ZeveraCom(Account):          }          get_data.update(kwargs) -        response = req.load("http://www.zevera.com/jDownloader.ashx", get = get_data, decode = True, just_header = just_header)  +        response = req.load("http://www.zevera.com/jDownloader.ashx", get=get_data, +                            decode=True, just_header=just_header)          self.logDebug(response)          if ':' in response:              if not just_header: -                response = response.replace(',','\n') -            return dict((y.strip().lower(), z.strip()) for (y,z) in [x.split(':',1) for x in response.splitlines() if ':' in x]) +                response = response.replace(',', '\n') +            return dict((y.strip().lower(), z.strip()) for (y, z) in +                        [x.split(':', 1) for x in response.splitlines() if ':' in x])          else: -            return response
\ No newline at end of file +            return response | 
