diff options
Diffstat (limited to 'module/plugins/accounts')
94 files changed, 0 insertions, 3711 deletions
diff --git a/module/plugins/accounts/AlldebridCom.py b/module/plugins/accounts/AlldebridCom.py deleted file mode 100644 index f9c1f2ca6..000000000 --- a/module/plugins/accounts/AlldebridCom.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time -import xml.dom.minidom as dom - -from BeautifulSoup import BeautifulSoup - -from module.plugins.Account import Account - - -class AlldebridCom(Account): -    __name__    = "AlldebridCom" -    __type__    = "account" -    __version__ = "0.23" - -    __description__ = """AllDebrid.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Andy Voigt", "spamsales@online.de")] - - -    def loadAccountInfo(self, user, req): -        data = self.getAccountData(user) -        html = req.load("http://www.alldebrid.com/account/") -        soup = BeautifulSoup(html) - -        #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 - -            self.logDebug("Account expires in: %s" % time_text) - -            p = re.compile('\d+') -            exp_data = p.findall(time_text) -            exp_time = 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 Exception: -            data = self.getAccountData(user) -            html = req.load("http://www.alldebrid.com/api.php", -                            get={'action': "info_user", 'login': user, 'pw': data['password']}) - -            self.logDebug(html) - -            xml = dom.parseString(html) -            exp_time = time.time() + int(xml.getElementsByTagName("date")[0].childNodes[0].nodeValue) * 24 * 60 * 60 - -        account_info = {"validuntil": exp_time, "trafficleft": -1} -        return account_info - - -    def login(self, user, data, req): -        html = req.load("http://www.alldebrid.com/register/", -                        get={'action'        : "login", -                             'login_login'   : user, -                             'login_password': data['password']}, -                        decode=True) - -        if "This login doesn't exist" in html \ -           or "The password is not valid" in html \ -           or "Invalid captcha" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/BackinNet.py b/module/plugins/accounts/BackinNet.py deleted file mode 100644 index 46c8d7ac5..000000000 --- a/module/plugins/accounts/BackinNet.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class BackinNet(XFSAccount): -    __name__    = "BackinNet" -    __type__    = "account" -    __version__ = "0.01" - -    __description__ = """Backin.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "backin.net" diff --git a/module/plugins/accounts/BillionuploadsCom.py b/module/plugins/accounts/BillionuploadsCom.py deleted file mode 100644 index 11af36591..000000000 --- a/module/plugins/accounts/BillionuploadsCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class BillionuploadsCom(XFSAccount): -    __name__    = "BillionuploadsCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Billionuploads.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "billionuploads.com" diff --git a/module/plugins/accounts/BitshareCom.py b/module/plugins/accounts/BitshareCom.py deleted file mode 100644 index 00e546f6d..000000000 --- a/module/plugins/accounts/BitshareCom.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class BitshareCom(Account): -    __name__    = "BitshareCom" -    __type__    = "account" -    __version__ = "0.13" - -    __description__ = """Bitshare account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Paul King", None)] - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://bitshare.com/mysettings.html") - -        if "\"http://bitshare.com/myupgrade.html\">Free" in html: -            return {"validuntil": -1, "trafficleft": -1, "premium": False} - -        if not '<input type="checkbox" name="directdownload" checked="checked" />' in html: -            self.logWarning(_("Activate direct Download in your Bitshare Account")) - -        return {"validuntil": -1, "trafficleft": -1, "premium": True} - - -    def login(self, user, data, req): -        html = req.load("http://bitshare.com/login.html", -                        post={"user": user, "password": data['password'], "submit": "Login"}, -                        decode=True) - -        if "login" in req.lastEffectiveURL: -            self.wrongPassword() diff --git a/module/plugins/accounts/CatShareNet.py b/module/plugins/accounts/CatShareNet.py deleted file mode 100644 index bb42f443f..000000000 --- a/module/plugins/accounts/CatShareNet.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class CatShareNet(Account): -    __name__    = "CatShareNet" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """CatShareNet account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("prOq", None)] - - -    PREMIUM_PATTERN      = r'<a href="/premium">Konto:[\s\n]*Premium' -    VALID_UNTIL_PATTERN  = r'>Konto premium.*?<strong>(.*?)</strong></span>' -    TRAFFIC_LEFT_PATTERN = r'<a href="/premium">([0-9.]+ [kMG]B)' - - -    def loadAccountInfo(self, user, req): -        premium     = False -        validuntil  = -1 -        trafficleft = -1 - -        html = req.load("http://catshare.net/", decode=True) - -        if re.search(self.PREMIUM_PATTERN, html): -            premium = True - -        try: -            expiredate = re.search(self.VALID_UNTIL_PATTERN, html).group(1) -            self.logDebug("Expire date: " + expiredate) - -            validuntil = time.mktime(time.strptime(expiredate, "%Y-%m-%d %H:%M:%S")) - -        except Exception: -            pass - -        try: -            trafficleft = self.parseTraffic(re.search(self.TRAFFIC_LEFT_PATTERN, html).group(1)) - -        except Exception: -            pass - -        return {'premium': premium, 'trafficleft': trafficleft, 'validuntil': validuntil} - - -    def login(self, user, data, req): -        html = req.load("http://catshare.net/login", -                        post={'user_email': user, -                              'user_password': data['password'], -                              'remindPassword': 0, -                              'user[submit]': "Login"}, -                        decode=True) - -        if not '<a href="/logout">Wyloguj</a>' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/CloudzillaTo.py b/module/plugins/accounts/CloudzillaTo.py deleted file mode 100644 index d22d5e4b3..000000000 --- a/module/plugins/accounts/CloudzillaTo.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class CloudzillaTo(Account): -    __name__    = "CloudzillaTo" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Cloudzilla.to account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    PREMIUM_PATTERN = r'<h2>account type</h2>\s*Premium Account' - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.cloudzilla.to/") - -        premium = True if re.search(self.PREMIUM_PATTERN, html) else False - -        return {'validuntil': -1, 'trafficleft': -1, 'premium': premium} - - -    def login(self, user, data, req): -        html = req.load("http://www.cloudzilla.to/", -                        post={'lusername': user, -                              'lpassword': data['password'], -                              'w'        : "dologin"}, -                        decode=True) - -        if "ERROR" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/CramitIn.py b/module/plugins/accounts/CramitIn.py deleted file mode 100644 index a9e2274a2..000000000 --- a/module/plugins/accounts/CramitIn.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class CramitIn(XFSAccount): -    __name__    = "CramitIn" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Cramit.in account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    HOSTER_DOMAIN = "cramit.in" diff --git a/module/plugins/accounts/CzshareCom.py b/module/plugins/accounts/CzshareCom.py deleted file mode 100644 index 300943828..000000000 --- a/module/plugins/accounts/CzshareCom.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class CzshareCom(Account): -    __name__    = "CzshareCom" -    __type__    = "account" -    __version__ = "0.18" - -    __description__ = """Czshare.com account plugin, now Sdilej.cz""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    CREDIT_LEFT_PATTERN = r'<tr class="active">\s*<td>([\d ,]+) (KiB|MiB|GiB)</td>\s*<td>([^<]*)</td>\s*</tr>' - - -    def loadAccountInfo(self, user, req): -        premium     = False -        validuntil  = None -        trafficleft = None - -        html = req.load("http://sdilej.cz/prehled_kreditu/") - -        try: -            m = re.search(self.CREDIT_LEFT_PATTERN, html) -            trafficleft = self.parseTraffic(m.group(1).replace(' ', '').replace(',', '.')) + m.group(2) -            validuntil  = time.mktime(time.strptime(m.group(3), '%d.%m.%y %H:%M')) - -        except Exception, e: -            self.logError(e) - -        else: -            premium = True - -        return {'premium'    : premium, -                'validuntil' : validuntil, -                'trafficleft': trafficleft} - - -    def login(self, user, data, req): -        html = req.load('https://sdilej.cz/index.php', -                        post={"Prihlasit": "Prihlasit", -                              "login-password": data['password'], -                              "login-name": user}, -                        decode=True) - -        if '<div class="login' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py deleted file mode 100644 index 3df99101a..000000000 --- a/module/plugins/accounts/DebridItaliaCom.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class DebridItaliaCom(Account): -    __name__    = "DebridItaliaCom" -    __type__    = "account" -    __version__ = "0.13" - -    __description__ = """Debriditalia.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    WALID_UNTIL_PATTERN = r'Premium valid till: (.+?) \|' - - -    def loadAccountInfo(self, user, req): -        info = {"premium": False, "validuntil": None, "trafficleft": None} -        html = req.load("http://debriditalia.com/") - -        if 'Account premium not activated' not in html: -            m = re.search(self.WALID_UNTIL_PATTERN, html) -            if m: -                validuntil = time.mktime(time.strptime(m.group(1), "%d/%m/%Y %H:%M")) -                info = {"premium": True, "validuntil": validuntil, "trafficleft": -1} -            else: -                self.logError(_("Unable to retrieve account information")) - -        return info - - -    def login(self, user, data, req): -        html = req.load("http://debriditalia.com/login.php", -                        get={'u': user, 'p': data['password']}, -                        decode=True) - -        if 'NO' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/DepositfilesCom.py b/module/plugins/accounts/DepositfilesCom.py deleted file mode 100644 index a0bd6a37c..000000000 --- a/module/plugins/accounts/DepositfilesCom.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class DepositfilesCom(Account): -    __name__    = "DepositfilesCom" -    __type__    = "account" -    __version__ = "0.32" - -    __description__ = """Depositfiles.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de"), -                       ("stickell", "l.stickell@yahoo.it"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    def loadAccountInfo(self, user, req): -        html = req.load("https://dfiles.eu/de/gold/") -        validuntil = re.search(r"Sie haben Gold Zugang bis: <b>(.*?)</b></div>", html).group(1) - -        validuntil = time.mktime(time.strptime(validuntil, "%Y-%m-%d %H:%M:%S")) - -        return {"validuntil": validuntil, "trafficleft": -1} - - -    def login(self, user, data, req): -        html = req.load("https://dfiles.eu/de/login.php", get={"return": "/de/gold/payment.php"}, -                        post={"login": user, "password": data['password']}, -                        decode=True) - -        if r'<div class="error_message">Sie haben eine falsche Benutzername-Passwort-Kombination verwendet.</div>' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/EasybytezCom.py b/module/plugins/accounts/EasybytezCom.py deleted file mode 100644 index 93d3e2c19..000000000 --- a/module/plugins/accounts/EasybytezCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.internal.XFSAccount import XFSAccount - - -class EasybytezCom(XFSAccount): -    __name__    = "EasybytezCom" -    __type__    = "account" -    __version__ = "0.12" - -    __description__ = """EasyBytez.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "easybytez.com" diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py deleted file mode 100644 index db4539e2e..000000000 --- a/module/plugins/accounts/EuroshareEu.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class EuroshareEu(Account): -    __name__    = "EuroshareEu" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Euroshare.eu account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    def loadAccountInfo(self, user, req): -        self.relogin(user) -        html = req.load("http://euroshare.eu/customer-zone/settings/") - -        m = re.search('id="input_expire_date" value="(\d+\.\d+\.\d+ \d+:\d+)"', html) -        if m is None: -            premium, validuntil = False, -1 -        else: -            premium = True -            validuntil = time.mktime(time.strptime(m.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) - -        if u">Nesprávne prihlasovacie meno alebo heslo" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/ExashareCom.py b/module/plugins/accounts/ExashareCom.py deleted file mode 100644 index 431798522..000000000 --- a/module/plugins/accounts/ExashareCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class ExashareCom(XFSAccount): -    __name__    = "ExashareCom" -    __type__    = "account" -    __version__ = "0.01" - -    __description__ = """Exashare.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "exashare.com" diff --git a/module/plugins/accounts/FastixRu.py b/module/plugins/accounts/FastixRu.py deleted file mode 100644 index 51be3880f..000000000 --- a/module/plugins/accounts/FastixRu.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class FastixRu(Account): -    __name__    = "FastixRu" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Fastix account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Massimo Rosamilia", "max@spiritix.eu")] - - -    def loadAccountInfo(self, user, req): -        data = self.getAccountData(user) -        html = json_loads(req.load("http://fastix.ru/api_v2/", get={'apikey': data['api'], 'sub': "getaccountdetails"})) - -        points = html['points'] -        kb     = float(points) * 1024 ** 2 / 1000 - -        if points > 0: -            account_info = {"validuntil": -1, "trafficleft": kb} -        else: -            account_info = {"validuntil": None, "trafficleft": None, "premium": False} -        return account_info - - -    def login(self, user, data, req): -        html = req.load("http://fastix.ru/api_v2/", -                        get={'sub': "get_apikey", 'email': user, 'password': data['password']}) - -        api = json_loads(html) -        api = api['apikey'] - -        data['api'] = api - -        if "error_code" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/FastshareCz.py b/module/plugins/accounts/FastshareCz.py deleted file mode 100644 index b946e29ba..000000000 --- a/module/plugins/accounts/FastshareCz.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class FastshareCz(Account): -    __name__    = "FastshareCz" -    __type__    = "account" -    __version__ = "0.06" - -    __description__ = """Fastshare.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    CREDIT_PATTERN = r'Credit\s*:\s*</td>\s*<td>(.+?)\s*<' - - -    def loadAccountInfo(self, user, req): -        validuntil  = -1 -        trafficleft = None -        premium     = False - -        html = req.load("http://www.fastshare.cz/user", decode=True) - -        m = re.search(self.CREDIT_PATTERN, html) -        if m: -            trafficleft = self.parseTraffic(m.group(1)) - -        premium = bool(trafficleft) - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium} - - -    def login(self, user, data, req): -        req.cj.setCookie("fastshare.cz", "lang", "en") - -        req.load('http://www.fastshare.cz/login')  # Do not remove or it will not login - -        html = req.load("http://www.fastshare.cz/sql.php", -                        post={'login': user, 'heslo': data['password']}, -                        decode=True) - -        if ">Wrong username or password" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/File4SafeCom.py b/module/plugins/accounts/File4SafeCom.py deleted file mode 100644 index 50fe1aac8..000000000 --- a/module/plugins/accounts/File4SafeCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class File4SafeCom(XFSAccount): -    __name__    = "File4SafeCom" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """File4Safe.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    HOSTER_DOMAIN = "file4safe.com" - -    LOGIN_FAIL_PATTERN = r'input_login' diff --git a/module/plugins/accounts/FileParadoxIn.py b/module/plugins/accounts/FileParadoxIn.py deleted file mode 100644 index c12d99d6a..000000000 --- a/module/plugins/accounts/FileParadoxIn.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class FileParadoxIn(XFSAccount): -    __name__    = "FileParadoxIn" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """FileParadox.in account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "fileparadox.in" diff --git a/module/plugins/accounts/FilecloudIo.py b/module/plugins/accounts/FilecloudIo.py deleted file mode 100644 index 8ca55b1bc..000000000 --- a/module/plugins/accounts/FilecloudIo.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class FilecloudIo(Account): -    __name__    = "FilecloudIo" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """FilecloudIo account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        # It looks like the first API request always fails, so we retry 5 times, it should work on the second try -        for _i in xrange(5): -            rep = req.load("https://secure.filecloud.io/api-fetch_apikey.api", -                           post={"username": user, "password": self.getAccountData(user)['password']}) -            rep = json_loads(rep) -            if rep['status'] == 'ok': -                break -            elif rep['status'] == 'error' and rep['message'] == 'no such user or wrong password': -                self.logError(_("Wrong username or password")) -                return {"valid": False, "premium": False} -        else: -            return {"premium": False} - -        akey = rep['akey'] -        self.accounts[user]['akey'] = akey  # Saved for hoster plugin -        rep = req.load("http://api.filecloud.io/api-fetch_account_details.api", -                       post={"akey": akey}) -        rep = json_loads(rep) - -        if rep['is_premium'] == 1: -            return {"validuntil": float(rep['premium_until']), "trafficleft": -1} -        else: -            return {"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) - -        if "you have successfully logged in" not in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/FilefactoryCom.py b/module/plugins/accounts/FilefactoryCom.py deleted file mode 100644 index f07f4895a..000000000 --- a/module/plugins/accounts/FilefactoryCom.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from pycurl import REFERER - -from module.plugins.Account import Account - - -class FilefactoryCom(Account): -    __name__    = "FilefactoryCom" -    __type__    = "account" -    __version__ = "0.15" - -    __description__ = """Filefactory.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    VALID_UNTIL_PATTERN = r'Premium valid until: <strong>(?P<D>\d{1,2})\w{1,2} (?P<M>\w{3}), (?P<Y>\d{4})</strong>' - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.filefactory.com/account/") - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            premium = True -            validuntil = re.sub(self.VALID_UNTIL_PATTERN, '\g<D> \g<M> \g<Y>', m.group(0)) -            validuntil = time.mktime(time.strptime(validuntil, "%d %b %Y")) -        else: -            premium = False -            validuntil = -1 - -        return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} - - -    def login(self, user, data, req): -        req.http.c.setopt(REFERER, "http://www.filefactory.com/member/login.php") - -        html = req.load("http://www.filefactory.com/member/signin.php", -                        post={"loginEmail"   : user, -                              "loginPassword": data['password'], -                              "Submit"       : "Sign In"}) - -        if req.lastEffectiveURL != "http://www.filefactory.com/account/": -            self.wrongPassword() diff --git a/module/plugins/accounts/FilejungleCom.py b/module/plugins/accounts/FilejungleCom.py deleted file mode 100644 index b92a371a5..000000000 --- a/module/plugins/accounts/FilejungleCom.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class FilejungleCom(Account): -    __name__    = "FilejungleCom" -    __type__    = "account" -    __version__ = "0.12" - -    __description__ = """Filejungle.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    login_timeout = 60 - -    URL = "http://filejungle.com/" -    TRAFFIC_LEFT_PATTERN = r'"/extend_premium\.php">Until (\d+ \w+ \d+)<br' -    LOGIN_FAILED_PATTERN = r'<span htmlfor="loginUser(Name|Password)" generated="true" class="fail_info">' - - -    def loadAccountInfo(self, user, req): -        html = req.load(self.URL + "dashboard.php") -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        if m: -            premium = True -            validuntil = time.mktime(time.strptime(m.group(1), "%d %b %Y")) -        else: -            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, -                              "loginUserPassword": data['password'], -                              "loginFormSubmit": "Login", -                              "recaptcha_challenge_field": "", -                              "recaptcha_response_field": "", -                              "recaptcha_shortencode_field": ""}, -                        decode=True) - -        if re.search(self.LOGIN_FAILED_PATTERN, html): -            self.wrongPassword() diff --git a/module/plugins/accounts/FileomCom.py b/module/plugins/accounts/FileomCom.py deleted file mode 100644 index 7c743f56a..000000000 --- a/module/plugins/accounts/FileomCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class FileomCom(XFSAccount): -    __name__    = "FileomCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Fileom.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "fileom.com" diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py deleted file mode 100644 index ac5fd11da..000000000 --- a/module/plugins/accounts/FilerNet.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class FilerNet(Account): -    __name__    = "FilerNet" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """Filer.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    TOKEN_PATTERN = r'_csrf_token" value="(.+?)" />' -    WALID_UNTIL_PATTERN = r'Der Premium-Zugang ist gültig bis (.+)\.\s*</td>' -    TRAFFIC_PATTERN = r'Traffic</th>\s*<td>([^<]+)</td>' -    FREE_PATTERN = r'Account Status</th>\s*<td>\s*Free' - - -    def loadAccountInfo(self, user, req): -        html = req.load("https://filer.net/profile") - -        # Free user -        if re.search(self.FREE_PATTERN, html): -            return {"premium": False, "validuntil": None, "trafficleft": None} - -        until   = re.search(self.WALID_UNTIL_PATTERN, html) -        traffic = re.search(self.TRAFFIC_PATTERN, html) - -        if until and traffic: -            validuntil  = time.mktime(time.strptime(until.group(1), "%d.%m.%Y %H:%M:%S")) -            trafficleft = self.parseTraffic(traffic.group(1)) -            return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} - -        else: -            self.logError(_("Unable to retrieve account information")) -            return {"premium": False, "validuntil": None, "trafficleft": None} - - -    def login(self, user, data, req): -        html = req.load("https://filer.net/login") - -        token = re.search(self.TOKEN_PATTERN, html).group(1) - -        html = req.load("https://filer.net/login_check", -                        post={"_username": user, -                              "_password": data['password'], -                              "_remember_me": "on", -                              "_csrf_token": token, -                              "_target_path": "https://filer.net/"}, -                        decode=True) - -        if 'Logout' not in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/FilerioCom.py b/module/plugins/accounts/FilerioCom.py deleted file mode 100644 index 4c6755293..000000000 --- a/module/plugins/accounts/FilerioCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class FilerioCom(XFSAccount): -    __name__    = "FilerioCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """FileRio.in account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    HOSTER_DOMAIN = "filerio.in" diff --git a/module/plugins/accounts/FilesMailRu.py b/module/plugins/accounts/FilesMailRu.py deleted file mode 100644 index ee309c425..000000000 --- a/module/plugins/accounts/FilesMailRu.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class FilesMailRu(Account): -    __name__    = "FilesMailRu" -    __type__    = "account" -    __version__ = "0.11" - -    __description__ = """Filesmail.ru account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org")] - - -    def loadAccountInfo(self, user, req): -        return {"validuntil": None, "trafficleft": None} - - -    def login(self, user, data, req): -        user, domain = user.split("@") - -        html = req.load("http://swa.mail.ru/cgi-bin/auth", -                        post={"Domain": domain, -                              "Login": user, -                              "Password": data['password'], -                              "Page": "http://files.mail.ru/"}, -                        decode=True) - -        if "Неверное имя пользователя или пароль" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/FileserveCom.py b/module/plugins/accounts/FileserveCom.py deleted file mode 100644 index 5eb6b844c..000000000 --- a/module/plugins/accounts/FileserveCom.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class FileserveCom(Account): -    __name__    = "FileserveCom" -    __type__    = "account" -    __version__ = "0.20" - -    __description__ = """Fileserve.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de")] - - -    def loadAccountInfo(self, user, req): -        data = self.getAccountData(user) - -        html = req.load("http://app.fileserve.com/api/login/", post={"username": user, "password": data['password'], -                                                                     "submit": "Submit+Query"}) -        res = json_loads(html) - -        if res['type'] == "premium": -            validuntil = time.mktime(time.strptime(res['expireTime'], "%Y-%m-%d %H:%M:%S")) -            return {"trafficleft": res['traffic'], "validuntil": validuntil} -        else: -            return {"premium": False, "trafficleft": None, "validuntil": None} - - -    def login(self, user, data, req): -        html = req.load("http://app.fileserve.com/api/login/", post={"username": user, "password": data['password'], -                                                                     "submit": "Submit+Query"}) -        res = json_loads(html) - -        if not res['type']: -            self.wrongPassword() - -        #login at fileserv html -        req.load("http://www.fileserve.com/login.php", -                 post={"loginUserName": user, "loginUserPassword": data['password'], "autoLogin": "checked", -                       "loginFormSubmit": "Login"}) diff --git a/module/plugins/accounts/FourSharedCom.py b/module/plugins/accounts/FourSharedCom.py deleted file mode 100644 index 2777a142a..000000000 --- a/module/plugins/accounts/FourSharedCom.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class FourSharedCom(Account): -    __name__    = "FourSharedCom" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """FourShared.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        # Free mode only for now -        return {"premium": False} - - -    def login(self, user, data, req): -        req.cj.setCookie("4shared.com", "4langcookie", "en") - -        res = req.load("http://www.4shared.com/web/login", -                       post={'login'    : user, -                             'password' : data['password'], -                             'remember' : "on", -                             '_remember': "on", -                             'returnTo' : "http://www.4shared.com/account/home.jsp"}, -                       decode=True) - -        if 'Please log in to access your 4shared account' in res: -            self.wrongPassword() diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py deleted file mode 100644 index ca3602a2c..000000000 --- a/module/plugins/accounts/FreakshareCom.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class FreakshareCom(Account): -    __name__    = "FreakshareCom" -    __type__    = "account" -    __version__ = "0.13" - -    __description__ = """Freakshare.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org")] - - -    def loadAccountInfo(self, user, req): -        premium = False -        validuntil  = None -        trafficleft = None - -        html = req.load("http://freakshare.com/") - -        try: -            m = re.search(r'ltig bis:</td>\s*<td><b>([\d.:-]+)</b></td>', html, re.M) -            validuntil = time.mktime(time.strptime(m.group(1).strip(), "%d.%m.%Y - %H:%M")) - -        except Exception: -            pass - -        try: -            m = re.search(r'Traffic verbleibend:</td>\s*<td>([^<]+)', html, re.M) -            trafficleft = self.parseTraffic(m.group(1)) - -        except Exception: -            pass - -        return {"premium": premium, "validuntil": validuntil, "trafficleft": trafficleft} - - -    def login(self, user, data, req): -        req.load("http://freakshare.com/index.php?language=EN") - -        html = req.load("http://freakshare.com/login.html", -                        post={"submit": "Login", "user": user, "pass": data['password']}, -                        decode=True) - -        if ">Wrong Username or Password" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/FreeWayMe.py b/module/plugins/accounts/FreeWayMe.py deleted file mode 100644 index 14b9f1e9a..000000000 --- a/module/plugins/accounts/FreeWayMe.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class FreeWayMe(Account): -    __name__    = "FreeWayMe" -    __type__    = "account" -    __version__ = "0.13" - -    __description__ = """FreeWayMe account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Nicolas Giese", "james@free-way.me")] - - -    def loadAccountInfo(self, user, req): -        status = self.getAccountStatus(user, req) - -        self.logDebug(status) - -        account_info = {"validuntil": -1, "premium": False} -        if status['premium'] == "Free": -            account_info['trafficleft'] = self.parseTraffic(status['guthaben'] + "MB") -        elif status['premium'] == "Spender": -            account_info['trafficleft'] = -1 -        elif status['premium'] == "Flatrate": -            account_info = {"validuntil": float(status['Flatrate']), -                            "trafficleft": -1, -                            "premium": True} - -        return account_info - - -    def login(self, user, data, req): -        status = self.getAccountStatus(user, req) - -        # Check if user and password are valid -        if not status: -            self.wrongPassword() - - -    def getAccountStatus(self, user, req): -        answer = req.load("https://www.free-way.me/ajax/jd.php", -                          get={"id": 4, "user": user, "pass": self.getAccountData(user)['password']}) - -        self.logDebug("Login: %s" % answer) - -        if answer == "Invalid login": -            self.wrongPassword() - -        return json_loads(answer) diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py deleted file mode 100644 index 7fcf88f20..000000000 --- a/module/plugins/accounts/FshareVn.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class FshareVn(Account): -    __name__    = "FshareVn" -    __type__    = "account" -    __version__ = "0.09" - -    __description__ = """Fshare.vn account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    VALID_UNTIL_PATTERN = ur'<dt>Thời hạn dùng:</dt>\s*<dd>([^<]+)</dd>' -    LIFETIME_PATTERN = ur'<dt>Lần đăng nhập trước:</dt>\s*<dd>.+?</dd>' -    TRAFFIC_LEFT_PATTERN = ur'<dt>Tổng Dung Lượng Tài Khoản</dt>\s*<dd.*?>([\d.]+) ([kKMG])B</dd>' -    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) - -        if re.search(self.LIFETIME_PATTERN, html): -            self.logDebug("Lifetime membership detected") -            trafficleft = self.getTrafficLeft() -            return {"validuntil": -1, "trafficleft": trafficleft, "premium": True} - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            premium = True -            validuntil = time.mktime(time.strptime(m.group(1), '%I:%M:%S %p %d-%m-%Y')) -            trafficleft = self.getTrafficLeft() -        else: -            premium = False -            validuntil = None -            trafficleft = None - -        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} - - -    def login(self, user, data, req): -        html = req.load("https://www.fshare.vn/login.php", -                        post={'LoginForm[email]'     : user, -                              'LoginForm[password]'  : data['password'], -                              'LoginForm[rememberMe]': 1, -                              'yt0'                  : "Login"}, -                        referer=True, -                        decode=True) - -        if not re.search(r'<img\s+alt="VIP"', html): -            self.wrongPassword() - - -    def getTrafficLeft(self): -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        return self.parseTraffic(m.group(1) + m.group(2)) if m else 0 diff --git a/module/plugins/accounts/Ftp.py b/module/plugins/accounts/Ftp.py deleted file mode 100644 index f978d2fa0..000000000 --- a/module/plugins/accounts/Ftp.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class Ftp(Account): -    __name__    = "Ftp" -    __type__    = "account" -    __version__ = "0.01" - -    __description__ = """Ftp dummy account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    info_threshold = 1000000 -    login_timeout = 1000000 diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py deleted file mode 100644 index e559b28e1..000000000 --- a/module/plugins/accounts/HellshareCz.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class HellshareCz(Account): -    __name__    = "HellshareCz" -    __type__    = "account" -    __version__ = "0.16" - -    __description__ = """Hellshare.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    CREDIT_LEFT_PATTERN = r'<div class="credit-link">\s*<table>\s*<tr>\s*<th>(\d+|\d\d\.\d\d\.)</th>' - - -    def loadAccountInfo(self, user, req): -        self.relogin(user) -        html = req.load("http://www.hellshare.com/") - -        m = re.search(self.CREDIT_LEFT_PATTERN, html) -        if m is None: -            trafficleft = None -            validuntil = None -            premium = False -        else: -            credit = m.group(1) -            premium = True -            try: -                if "." in credit: -                    #Time-based 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")) -                    trafficleft = -1 -                else: -                    #Traffic-based account -                    trafficleft = self.parseTraffic(credit + "MB") -                    validuntil = -1 -            except Exception, e: -                self.logError(_("Unable to parse credit info"), e) -                validuntil = -1 -                trafficleft = -1 - -        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} - - -    def login(self, user, data, req): -        html = req.load('http://www.hellshare.com/', decode=True) -        if req.lastEffectiveURL != 'http://www.hellshare.com/': -            #Switch to English -            self.logDebug("Switch lang - URL: %s" % req.lastEffectiveURL) - -            json = req.load("%s?do=locRouter-show" % req.lastEffectiveURL) -            hash = re.search(r"(\-\-[0-9a-f]+\-)", json).group(1) - -            self.logDebug("Switch lang - HASH: %s" % hash) - -            html = req.load('http://www.hellshare.com/%s/' % hash, decode=True) - -        if re.search(self.CREDIT_LEFT_PATTERN, html): -            self.logDebug("Already logged in") -            return - -        html = req.load('http://www.hellshare.com/login?do=loginForm-submit', -                        post={"login": "Log in", -                              "password": data['password'], -                              "username": user, -                              "perm_login": "on"}, -                        decode=True) - -        if "<p>You input a wrong user name or wrong password</p>" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/Http.py b/module/plugins/accounts/Http.py deleted file mode 100644 index 07e46eb07..000000000 --- a/module/plugins/accounts/Http.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class Http(Account): -    __name__    = "Http" -    __type__    = "account" -    __version__ = "0.01" - -    __description__ = """Http dummy account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    info_threshold = 1000000 -    login_timeout = 1000000 diff --git a/module/plugins/accounts/HugefilesNet.py b/module/plugins/accounts/HugefilesNet.py deleted file mode 100644 index 5da3bbc37..000000000 --- a/module/plugins/accounts/HugefilesNet.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class HugefilesNet(XFSAccount): -    __name__    = "HugefilesNet" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Hugefiles.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "hugefiles.net" diff --git a/module/plugins/accounts/HundredEightyUploadCom.py b/module/plugins/accounts/HundredEightyUploadCom.py deleted file mode 100644 index 319a3feee..000000000 --- a/module/plugins/accounts/HundredEightyUploadCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class HundredEightyUploadCom(XFSAccount): -    __name__    = "HundredEightyUploadCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """180upload.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "180upload.com" diff --git a/module/plugins/accounts/JunkyvideoCom.py b/module/plugins/accounts/JunkyvideoCom.py deleted file mode 100644 index 8275ff176..000000000 --- a/module/plugins/accounts/JunkyvideoCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class JunkyvideoCom(XFSAccount): -    __name__    = "JunkyvideoCom" -    __type__    = "account" -    __version__ = "0.01" - -    __description__ = """Junkyvideo.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "junkyvideo.com" diff --git a/module/plugins/accounts/JunocloudMe.py b/module/plugins/accounts/JunocloudMe.py deleted file mode 100644 index b0fc160f3..000000000 --- a/module/plugins/accounts/JunocloudMe.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class JunocloudMe(XFSAccount): -    __name__    = "JunocloudMe" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Junocloud.me account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "junocloud.me" diff --git a/module/plugins/accounts/Keep2ShareCc.py b/module/plugins/accounts/Keep2ShareCc.py deleted file mode 100644 index d2ba1d237..000000000 --- a/module/plugins/accounts/Keep2ShareCc.py +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class Keep2ShareCc(Account): -    __name__    = "Keep2ShareCc" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Keep2Share.cc account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("aeronaut", "aeronaut@pianoguy.de"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    VALID_UNTIL_PATTERN  = r'Premium expires:\s*<b>(.+?)<' -    TRAFFIC_LEFT_PATTERN = r'Available traffic \(today\):\s*<b><a href="/user/statistic.html">(.+?)<' - -    LOGIN_FAIL_PATTERN = r'Please fix the following input errors' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = -1 -        premium     = False - -        html = req.load("http://keep2share.cc/site/profile.html", decode=True) - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            expiredate = m.group(1).strip() -            self.logDebug("Expire date: " + expiredate) - -            if expiredate == "LifeTime": -                premium    = True -                validuntil = -1 -            else: -                try: -                    validuntil = time.mktime(time.strptime(expiredate, "%Y.%m.%d")) - -                except Exception, e: -                    self.logError(e) - -                else: -                    premium = True if validuntil > time.mktime(time.gmtime()) else False - -            m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -            if m: -                try: -                    trafficleft = self.parseTraffic(m.group(1)) - -                except Exception, e: -                    self.logError(e) - -        return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} - - -    def login(self, user, data, req): -        req.cj.setCookie("keep2share.cc", "lang", "en") - -        html = req.load("http://keep2share.cc/login.html", -                        post={'LoginForm[username]'  : user, -                              'LoginForm[password]'  : data['password'], -                              'LoginForm[rememberMe]': 1, -                              'yt0'                  : ""}, -                        decode=True) - -        if re.search(self.LOGIN_FAIL_PATTERN, html): -            self.wrongPassword() diff --git a/module/plugins/accounts/LetitbitNet.py b/module/plugins/accounts/LetitbitNet.py deleted file mode 100644 index 7f973d2d3..000000000 --- a/module/plugins/accounts/LetitbitNet.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -# from module.common.json_layer import json_loads, json_dumps - - -class LetitbitNet(Account): -    __name__    = "LetitbitNet" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Letitbit.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        ## DISABLED BECAUSE IT GET 'key exausted' EVEN IF VALID ## -        # api_key = self.getAccountData(user)['password'] -        # json_data = [api_key, ['key/info']] -        # api_rep = req.load('http://api.letitbit.net/json', post={'r': json_dumps(json_data)}) -        # self.logDebug("API Key Info: " + api_rep) -        # api_rep = json_loads(api_rep) -        # -        # if api_rep['status'] == 'FAIL': -        #     self.logWarning(api_rep['data']) -        #     return {'valid': False, 'premium': False} - -        return {"premium": True} - - -    def login(self, user, data, req): -        # API_KEY is the username and the PREMIUM_KEY is the password -        self.logInfo(_("You must use your API KEY as username and the PREMIUM KEY as password")) diff --git a/module/plugins/accounts/LinestorageCom.py b/module/plugins/accounts/LinestorageCom.py deleted file mode 100644 index a48d5beb9..000000000 --- a/module/plugins/accounts/LinestorageCom.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class LinestorageCom(XFSAccount): -    __name__    = "LinestorageCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Linestorage.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "linestorage.com" -    HOSTER_URL    = "http://linestorage.com/" diff --git a/module/plugins/accounts/LinksnappyCom.py b/module/plugins/accounts/LinksnappyCom.py deleted file mode 100644 index 97e368285..000000000 --- a/module/plugins/accounts/LinksnappyCom.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- - -from hashlib import md5 - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class LinksnappyCom(Account): -    __name__    = "LinksnappyCom" -    __type__    = "account" -    __version__ = "0.05" -    __description__ = """Linksnappy.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        data = self.getAccountData(user) -        r = req.load('http://gen.linksnappy.com/lseAPI.php', -                     get={'act': 'USERDETAILS', 'username': user, 'password': md5(data['password']).hexdigest()}) - -        self.logDebug("JSON data: " + r) - -        j = json_loads(r) - -        if j['error']: -            return {"premium": False} - -        validuntil = j['return']['expire'] - -        if validuntil == 'lifetime': -            validuntil = -1 - -        elif validuntil == 'expired': -            return {"premium": False} - -        else: -            validuntil = float(validuntil) - -        if 'trafficleft' not in j['return'] or isinstance(j['return']['trafficleft'], str): -            trafficleft = -1 -        else: -            trafficleft = self.parseTraffic("%d MB" % j['return']['trafficleft']) - -        return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} - - -    def login(self, user, data, req): -        r = req.load("http://gen.linksnappy.com/lseAPI.php", -                     get={'act'     : 'USERDETAILS', -                          'username': user, -                          'password': md5(data['password']).hexdigest()}, -                     decode=True) - -        if 'Invalid Account Details' in r: -            self.wrongPassword() diff --git a/module/plugins/accounts/MegaDebridEu.py b/module/plugins/accounts/MegaDebridEu.py deleted file mode 100644 index a082b97af..000000000 --- a/module/plugins/accounts/MegaDebridEu.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class MegaDebridEu(Account): -    __name__    = "MegaDebridEu" -    __type__    = "account" -    __version__ = "0.20" - -    __description__ = """mega-debrid.eu account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("D.Ducatel", "dducatel@je-geek.fr")] - - -    # Define the base URL of MegaDebrid api -    API_URL = "https://www.mega-debrid.eu/api.php" - - -    def loadAccountInfo(self, user, req): -        data = self.getAccountData(user) -        jsonResponse = req.load(self.API_URL, -                                get={'action': 'connectUser', 'login': user, 'password': data['password']}) -        res = json_loads(jsonResponse) - -        if res['response_code'] == "ok": -            return {"premium": True, "validuntil": float(res['vip_end']), "status": True} -        else: -            self.logError(res) -            return {"status": False, "premium": False} - - -    def login(self, user, data, req): -        jsonResponse = req.load(self.API_URL, -                                get={'action': 'connectUser', 'login': user, 'password': data['password']}) -        res = json_loads(jsonResponse) -        if res['response_code'] != "ok": -            self.wrongPassword() diff --git a/module/plugins/accounts/MegaRapidCz.py b/module/plugins/accounts/MegaRapidCz.py deleted file mode 100644 index 262d5a818..000000000 --- a/module/plugins/accounts/MegaRapidCz.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class MegaRapidCz(Account): -    __name__    = "MegaRapidCz" -    __type__    = "account" -    __version__ = "0.35" - -    __description__ = """MegaRapid.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("MikyWoW", "mikywow@seznam.cz"), -                       ("zoidberg", "zoidberg@mujmail.cz")] - - -    login_timeout = 60 - -    LIMITDL_PATTERN = ur'<td>Max. počet paralelních stahování: </td><td>(\d+)' -    VALID_UNTIL_PATTERN = ur'<td>Paušální stahování aktivní. Vyprší </td><td><strong>(.*?)</strong>' -    TRAFFIC_LEFT_PATTERN = r'<tr><td>Kredit</td><td>(.*?) GiB' - - -    def loadAccountInfo(self, user, req): -        htmll = req.load("http://megarapid.cz/mujucet/", decode=True) - -        m = re.search(self.LIMITDL_PATTERN, htmll) -        if m: -            data = self.getAccountData(user) -            data['options']['limitDL'] = [int(m.group(1))] - -        m = re.search(self.VALID_UNTIL_PATTERN, htmll) -        if m: -            validuntil = time.mktime(time.strptime(m.group(1), "%d.%m.%Y - %H:%M")) -            return {"premium": True, "trafficleft": -1, "validuntil": validuntil} - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, htmll) -        if m: -            trafficleft = float(m.group(1)) * (1 << 20) -            return {"premium": True, "trafficleft": trafficleft, "validuntil": -1} - -        return {"premium": False, "trafficleft": None, "validuntil": None} - - -    def login(self, user, data, req): -        html = req.load("http://megarapid.cz/prihlaseni/", decode=True) - -        if "Heslo:" in html: -            start = html.index('id="inp_hash" name="hash" value="') -            html = html[start + 33:] -            hashes = html[0:32] -            html = req.load("http://megarapid.cz/prihlaseni/", -                           post={"hash": hashes, -                                 "login": user, -                                 "pass1": data['password'], -                                 "remember": 0, -                                 "sbmt": u"Přihlásit"}) diff --git a/module/plugins/accounts/MegaRapidoNet.py b/module/plugins/accounts/MegaRapidoNet.py deleted file mode 100644 index d061d02bc..000000000 --- a/module/plugins/accounts/MegaRapidoNet.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class MegaRapidoNet(Account): -    __name__    = "MegaRapidoNet" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """MegaRapido.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")] - - -    VALID_UNTIL_PATTERN = r'<\s*?div[^>]*?class\s*?=\s*?[\'"]premium_index[\'"].*?>[^<]*?<[^>]*?b.*?>\s*?TEMPO\s*?PREMIUM.*?<[^>]*?/b.*?>\s*?(\d*)[^\d]*?DIAS[^\d]*?(\d*)[^\d]*?HORAS[^\d]*?(\d*)[^\d]*?MINUTOS[^\d]*?(\d*)[^\d]*?SEGUNDOS' -    USER_ID_PATTERN     = r'<\s*?div[^>]*?class\s*?=\s*?["\']checkbox_compartilhar["\'].*?>.*?<\s*?input[^>]*?name\s*?=\s*?["\']usar["\'].*?>.*?<\s*?input[^>]*?name\s*?=\s*?["\']user["\'][^>]*?value\s*?=\s*?["\'](.*?)\s*?["\']' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = None -        premium     = False - -        html = req.load("http://megarapido.net/gerador", decode=True) - -        validuntil = re.search(self.VALID_UNTIL_PATTERN, html) -        if validuntil: -            #hier weitermachen!!! (müssen umbedingt die zeit richtig machen damit! (sollte aber möglich)) -            validuntil  = time.time() + int(validuntil.group(1)) * 24 * 3600 + int(validuntil.group(2)) * 3600 + int(validuntil.group(3)) * 60 + int(validuntil.group(4)) -            trafficleft = -1 -            premium     = True - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium} - - -    def login(self, user, data, req): -        req.load("http://megarapido.net/login") -        req.load("http://megarapido.net/painel_user/ajax/logar.php", -                 post={'login': user, 'senha': data['password']}, -                 decode=True) - -        html = req.load("http://megarapido.net/gerador") - -        if "sair" not in html.lower(): -            self.wrongPassword() -        else: -            m = re.search(self.USER_ID_PATTERN, html) -            if m: -                data['uid'] = m.group(1) -            else: -                self.fail("Couldn't find the user ID") diff --git a/module/plugins/accounts/MegasharesCom.py b/module/plugins/accounts/MegasharesCom.py deleted file mode 100644 index 3d7ddbe46..000000000 --- a/module/plugins/accounts/MegasharesCom.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class MegasharesCom(Account): -    __name__    = "MegasharesCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Megashares.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "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) - -        premium = False if '>Premium Upgrade<' in html else True - -        validuntil = trafficleft = -1 -        try: -            timestr = re.search(self.VALID_UNTIL_PATTERN, html).group(1) -            self.logDebug(timestr) -            validuntil = time.mktime(time.strptime(timestr, "%b %d, %Y")) -        except Exception, 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", -                              "mymslogin_name": user, -                              "mymspassword"  : data['password']}, -                        decode=True) - -        if not '<span class="b ml">%s</span>' % user in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/MovReelCom.py b/module/plugins/accounts/MovReelCom.py deleted file mode 100644 index 6128cddc8..000000000 --- a/module/plugins/accounts/MovReelCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class MovReelCom(XFSAccount): -    __name__    = "MovReelCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Movreel.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] - - -    login_timeout = 60 -    info_threshold = 30 - -    HOSTER_DOMAIN = "movreel.com" diff --git a/module/plugins/accounts/MultihostersCom.py b/module/plugins/accounts/MultihostersCom.py deleted file mode 100644 index e98f17b2d..000000000 --- a/module/plugins/accounts/MultihostersCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.accounts.ZeveraCom import ZeveraCom - - -class MultihostersCom(ZeveraCom): -    __name__    = "MultihostersCom" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Multihosters.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("tjeh", "tjeh@gmx.net")] - - -    HOSTER_DOMAIN = "multihosters.com" diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py deleted file mode 100644 index 3488e3288..000000000 --- a/module/plugins/accounts/MultishareCz.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class MultishareCz(Account): -    __name__    = "MultishareCz" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Multishare.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[\d.,]+) (?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) - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        trafficleft = self.parseTraffic(m.group('S') + m.group('U')) if m else 0 -        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", -                              "heslo": data['password'], -                              "jmeno": user}, -                        decode=True) - -        if '<div class="akce-chyba akce">' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/MyfastfileCom.py b/module/plugins/accounts/MyfastfileCom.py deleted file mode 100644 index 9a13e2e42..000000000 --- a/module/plugins/accounts/MyfastfileCom.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -from module.common.json_layer import json_loads -from module.plugins.Account import Account - - -class MyfastfileCom(Account): -    __name__    = "MyfastfileCom" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """Myfastfile.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        if 'days_left' in self.json_data: -            validuntil = time.time() + self.json_data['days_left'] * 24 * 60 * 60 -            return {"premium": True, "validuntil": validuntil, "trafficleft": -1} -        else: -            self.logError(_("Unable to get account information")) - - -    def login(self, user, data, req): -        # Password to use is the API-Password written in http://myfastfile.com/myaccount -        html = req.load("http://myfastfile.com/api.php", -                        get={"user": user, "pass": data['password']}) - -        self.logDebug("JSON data: " + html) - -        self.json_data = json_loads(html) -        if self.json_data['status'] != 'ok': -            self.logError(_('Invalid login. The password to use is the API-Password you find in your "My Account" page')) -            self.wrongPassword() diff --git a/module/plugins/accounts/NetloadIn.py b/module/plugins/accounts/NetloadIn.py deleted file mode 100644 index 066174a28..000000000 --- a/module/plugins/accounts/NetloadIn.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class NetloadIn(Account): -    __name__    = "NetloadIn" -    __type__    = "account" -    __version__ = "0.24" - -    __description__ = """Netload.in account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    def api_response(self, id, password, req): -        return req.load("http://api.netload.in/user_info.php", -                        get={'auth'         : "BVm96BWDSoB4WkfbEhn42HgnjIe1ilMt", -                             'user_id'      : id, -                             'user_password': password}).strip() - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = -1 -        premium     = False - -        html = self.api_response(user, self.getAccountData(user)['password'], req) - -        if html == "-1": -            premium = True - -        elif html == "0": -            validuntil = -1 - -        else: -            try: -                validuntil = time.mktime(time.strptime(html, "%Y-%m-%d %H:%M")) - -            except Exception, e: -                self.logError(e) - -            else: -                self.logDebug("Valid until: %s" % validuntil) - -                if validuntil > time.mktime(time.gmtime()): -                    premium = True -                else: -                    validuntil = -1 - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium} - - -    def login(self, user, data, req): -        html = self.api_response(user, data['password'], req) - -        if not html or re.search(r'disallowed_agent|unknown_auth|login_failed', html): -            self.wrongPassword() diff --git a/module/plugins/accounts/NoPremiumPl.py b/module/plugins/accounts/NoPremiumPl.py deleted file mode 100644 index 7e3f757d3..000000000 --- a/module/plugins/accounts/NoPremiumPl.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- - -import datetime -import hashlib -import time - -from module.plugins.Account import Account -from module.common.json_layer import json_loads as loads - - -class NoPremiumPl(Account): -    __name__ = "NoPremiumPl" -    __version__ = "0.01" -    __type__ = "account" -    __description__ = "NoPremium.pl account plugin" -    __license__ = "GPLv3" -    __authors__ = [("goddie", "dev@nopremium.pl")] - -    _api_url = "http://crypt.nopremium.pl" - -    _api_query = { -        "site": "nopremium", -        "username": "", -        "password": "", -        "output": "json", -        "loc": "1", -        "info": "1" -    } - -    _req = None -    _usr = None -    _pwd = None - -    def loadAccountInfo(self, name, req): -        self._req = req -        try: -            result = loads(self.runAuthQuery()) -        except Exception: -            # todo: return or let it be thrown? -            return - -        premium = False -        valid_untill = -1 - -        if "expire" in result.keys() and result["expire"]: -            premium = True -            valid_untill = time.mktime(datetime.datetime.fromtimestamp(int(result["expire"])).timetuple()) -        traffic_left = result["balance"] * 1024 - -        return ({ -                    "validuntil": valid_untill, -                    "trafficleft": traffic_left, -                    "premium": premium -                }) - -    def login(self, user, data, req): -        self._usr = user -        self._pwd = hashlib.sha1(hashlib.md5(data["password"]).hexdigest()).hexdigest() -        self._req = req - -        try: -            response = loads(self.runAuthQuery()) -        except Exception: -            self.wrongPassword() - -        if "errno" in response.keys(): -            self.wrongPassword() -        data['usr'] = self._usr -        data['pwd'] = self._pwd - -    def createAuthQuery(self): -        query = self._api_query -        query["username"] = self._usr -        query["password"] = self._pwd - -        return query - -    def runAuthQuery(self): -        data = self._req.load(self._api_url, post=self.createAuthQuery()) - -        return data
\ No newline at end of file diff --git a/module/plugins/accounts/NosuploadCom.py b/module/plugins/accounts/NosuploadCom.py deleted file mode 100644 index e523ee2f4..000000000 --- a/module/plugins/accounts/NosuploadCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class NosuploadCom(XFSAccount): -    __name__    = "NosuploadCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Nosupload.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "nosupload.com" diff --git a/module/plugins/accounts/NovafileCom.py b/module/plugins/accounts/NovafileCom.py deleted file mode 100644 index ab61bf0fc..000000000 --- a/module/plugins/accounts/NovafileCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class NovafileCom(XFSAccount): -    __name__    = "NovafileCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Novafile.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "novafile.com" diff --git a/module/plugins/accounts/NowVideoSx.py b/module/plugins/accounts/NowVideoSx.py deleted file mode 100644 index 2f7b033bd..000000000 --- a/module/plugins/accounts/NowVideoSx.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class NowVideoSx(Account): -    __name__    = "NowVideoSx" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """NowVideo.at account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    VALID_UNTIL_PATTERN = r'>Your premium membership expires on: (.+?)<' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = -1 -        premium     = None - -        html = req.load("http://www.nowvideo.sx/premium.php") - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            expiredate = m.group(1).strip() -            self.logDebug("Expire date: " + expiredate) - -            try: -                validuntil = time.mktime(time.strptime(expiredate, "%Y-%b-%d")) - -            except Exception, e: -                self.logError(e) - -            else: -                if validuntil > time.mktime(time.gmtime()): -                    premium = True -                else: -                    premium = False -                    validuntil = -1 - -        return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} - - -    def login(self, user, data, req): -        html = req.load("http://www.nowvideo.sx/login.php", -                        post={'user': user, 'pass': data['password']}, -                        decode=True) - -        if re.search(r'>Log In<', html): -            self.wrongPassword() diff --git a/module/plugins/accounts/OboomCom.py b/module/plugins/accounts/OboomCom.py deleted file mode 100644 index a9068f1df..000000000 --- a/module/plugins/accounts/OboomCom.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -try: -    from beaker.crypto.pbkdf2 import PBKDF2 - -except ImportError: -    from beaker.crypto.pbkdf2 import pbkdf2 -    from binascii import b2a_hex -    class PBKDF2(object): -        def __init__(self, passphrase, salt, iterations=1000): -            self.passphrase = passphrase -            self.salt = salt -            self.iterations = iterations - -        def hexread(self, octets): -            return b2a_hex(pbkdf2(self.passphrase, self.salt, self.iterations, octets)) - -from module.common.json_layer import json_loads -from module.plugins.Account import Account - - -class OboomCom(Account): -    __name__    = "OboomCom" -    __type__    = "account" -    __version__ = "0.24" - -    __description__ = """Oboom.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stanley", "stanley.foerster@gmail.com")] - - -    def loadAccountData(self, user, req): -        passwd = self.getAccountData(user)['password'] -        salt   = passwd[::-1] -        pbkdf2 = PBKDF2(passwd, salt, 1000).hexread(16) - -        result = json_loads(req.load("https://www.oboom.com/1/login", get={"auth": user, "pass": pbkdf2})) - -        if not result[0] == 200: -            self.logWarning(_("Failed to log in: %s") % result[1]) -            self.wrongPassword() - -        return result[1] - - -    def loadAccountInfo(self, name, req): -        accountData = self.loadAccountData(name, req) - -        userData = accountData['user'] - -        if userData['premium'] == "null": -            premium = False -        else: -            premium = True - -        if userData['premium_unix'] == "null": -            validUntil = -1 -        else: -            validUntil = float(userData['premium_unix']) - -        traffic = userData['traffic'] - -        trafficLeft = traffic['current'] / 1024  #@TODO: Remove `/ 1024` in 0.4.10 -        maxTraffic = traffic['max'] / 1024  #@TODO: Remove `/ 1024` in 0.4.10 - -        session = accountData['session'] - -        return {'premium'    : premium, -                'validuntil' : validUntil, -                'trafficleft': trafficLeft, -                'maxtraffic' : maxTraffic, -                'session'    : session} - - -    def login(self, user, data, req): -        self.loadAccountData(user, req) diff --git a/module/plugins/accounts/OneFichierCom.py b/module/plugins/accounts/OneFichierCom.py deleted file mode 100644 index be4b5e67e..000000000 --- a/module/plugins/accounts/OneFichierCom.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from pycurl import REFERER - -from module.plugins.Account import Account - - -class OneFichierCom(Account): -    __name__    = "OneFichierCom" -    __type__    = "account" -    __version__ = "0.12" - -    __description__ = """1fichier.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Elrick69", "elrick69[AT]rocketmail[DOT]com"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    VALID_UNTIL_PATTERN = r'Your Premium Status will end the (\d+/\d+/\d+)' - - -    def loadAccountInfo(self, user, req): -        validuntil = None -        trafficleft = -1 -        premium = None - -        html = req.load("https://1fichier.com/console/abo.pl") - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            expiredate = m.group(1) -            self.logDebug("Expire date: " + expiredate) - -            try: -                validuntil = time.mktime(time.strptime(expiredate, "%d/%m/%Y")) -            except Exception, e: -                self.logError(e) -            else: -                premium = True - -        return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium or False} - - -    def login(self, user, data, req): -        req.http.c.setopt(REFERER, "https://1fichier.com/login.pl?lg=en") - -        html = req.load("https://1fichier.com/login.pl?lg=en", -                        post={'mail'   : user, -                              'pass'   : data['password'], -                              'It'     : "on", -                              'purge'  : "off", -                              'valider': "Send"}, -                        decode=True) - -        if '>Invalid email address' in html or '>Invalid password' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/OverLoadMe.py b/module/plugins/accounts/OverLoadMe.py deleted file mode 100644 index 64d04aded..000000000 --- a/module/plugins/accounts/OverLoadMe.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class OverLoadMe(Account): -    __name__    = "OverLoadMe" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """Over-Load.me account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("marley", "marley@over-load.me")] - - -    def loadAccountInfo(self, user, req): -        https = "https" if self.getConfig('ssl') else "http" -        data  = self.getAccountData(user) -        html  = req.load(https + "://api.over-load.me/account.php", -                         get={'user': user, -                              'auth': data['password']}).strip() - -        data = json_loads(html) -        self.logDebug(data) - -        # Check for premium -        if data['membership'] == "Free": -            return {'premium': False, 'validuntil': None, 'trafficleft': None} -        else: -            return {'premium': True, 'validuntil': data['expirationunix'], 'trafficleft': -1} - - -    def login(self, user, data, req): -        https    = "https" if self.getConfig('ssl') else "http" -        jsondata = req.load(https + "://api.over-load.me/account.php", -                            get={'user': user, -                                 'auth': data['password']}).strip() - -        data = json_loads(jsondata) - -        if data['err'] == 1: -            self.wrongPassword() diff --git a/module/plugins/accounts/PremiumTo.py b/module/plugins/accounts/PremiumTo.py deleted file mode 100644 index c8ea2fa26..000000000 --- a/module/plugins/accounts/PremiumTo.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class PremiumTo(Account): -    __name__    = "PremiumTo" -    __type__    = "account" -    __version__ = "0.08" - -    __description__ = """Premium.to account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org"), -                       ("zoidberg", "zoidberg@mujmail.cz"), -                       ("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        traffic = req.load("http://premium.to/api/straffic.php", -                           get={'username': self.username, 'password': self.password}) - -        if "wrong username" not in traffic: -            trafficleft = sum(map(float, traffic.split(';'))) / 1024  #@TODO: Remove `/ 1024` in 0.4.10 -            return {'premium': True, 'trafficleft': trafficleft, 'validuntil': -1} -        else: -            return {'premium': False, 'trafficleft': None, 'validuntil': None} - - -    def login(self, user, data, req): -        self.username = user -        self.password = data['password'] -        authcode = req.load("http://premium.to/api/getauthcode.php", -                            get={'username': user, 'password': self.password}, -                            decode=True) - -        if "wrong username" in authcode: -            self.wrongPassword() diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py deleted file mode 100644 index 7d061ec2d..000000000 --- a/module/plugins/accounts/PremiumizeMe.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - -from module.common.json_layer import json_loads - - -class PremiumizeMe(Account): -    __name__    = "PremiumizeMe" -    __type__    = "account" -    __version__ = "0.13" - -    __description__ = """Premiumize.me account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Florian Franzen", "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)}  #@TODO: Remove `/ 1024` in 0.4.10 - -        if status['result']['type'] == 'free': -            account_info['premium'] = False - -        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", -                           get={'method'       : "accountstatus", -                                'params[login]': user, -                                'params[pass]' : self.getAccountData(user)['password']}) -        return json_loads(answer) diff --git a/module/plugins/accounts/PutdriveCom.py b/module/plugins/accounts/PutdriveCom.py deleted file mode 100644 index 4f2fadbcc..000000000 --- a/module/plugins/accounts/PutdriveCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.accounts.ZeveraCom import ZeveraCom - - -class PutdriveCom(ZeveraCom): -    __name__    = "PutdriveCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Putdrive.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "putdrive.com" diff --git a/module/plugins/accounts/QuickshareCz.py b/module/plugins/accounts/QuickshareCz.py deleted file mode 100644 index 16141d63e..000000000 --- a/module/plugins/accounts/QuickshareCz.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class QuickshareCz(Account): -    __name__    = "QuickshareCz" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Quickshare.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    TRAFFIC_LEFT_PATTERN = r'Stav kreditu: <strong>(.+?)</strong>' - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.quickshare.cz/premium", decode=True) - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        if m: -            trafficleft = self.parseTraffic(m.group(1)) -            premium = True if trafficleft else False -        else: -            trafficleft = None -            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={"akce": u'Přihlásit', -                              "heslo": data['password'], -                              "jmeno": user}, -                        decode=True) - -        if u'>Takový uživatel neexistuje.<' in html or u'>Špatné heslo.<' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/RPNetBiz.py b/module/plugins/accounts/RPNetBiz.py deleted file mode 100644 index 829e54a46..000000000 --- a/module/plugins/accounts/RPNetBiz.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class RPNetBiz(Account): -    __name__    = "RPNetBiz" -    __type__    = "account" -    __version__ = "0.12" - -    __description__ = """RPNet.biz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Dman", "dmanugm@gmail.com")] - - -    def loadAccountInfo(self, user, req): -        # Get account information from rpnet.biz -        res = self.getAccountStatus(user, req) -        try: -            if res['accountInfo']['isPremium']: -                # Parse account info. Change the trafficleft later to support per host info. -                account_info = {"validuntil": float(res['accountInfo']['premiumExpiry']), -                                "trafficleft": -1, "premium": True} -            else: -                account_info = {"validuntil": None, "trafficleft": None, "premium": False} - -        except KeyError: -            #handle wrong password exception -            account_info = {"validuntil": None, "trafficleft": None, "premium": False} - -        return account_info - - -    def login(self, user, data, req): -        # Get account information from rpnet.biz -        res = self.getAccountStatus(user, req) - -        # If we have an error in the res, we have wrong login information -        if 'error' in res: -            self.wrongPassword() - - -    def getAccountStatus(self, user, req): -        # Using the rpnet API, check if valid premium account -        res = req.load("https://premium.rpnet.biz/client_api.php", -                            get={"username": user, "password": self.getAccountData(user)['password'], -                                 "action": "showAccountInformation"}) -        self.logDebug("JSON data: %s" % res) - -        return json_loads(res) diff --git a/module/plugins/accounts/RapideoPl.py b/module/plugins/accounts/RapideoPl.py deleted file mode 100644 index 3e9d52fe8..000000000 --- a/module/plugins/accounts/RapideoPl.py +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- - -import datetime -import hashlib -import time - -from module.plugins.Account import Account -from module.common.json_layer import json_loads as loads - - -class RapideoPl(Account): -    __name__ = "RapideoPl" -    __version__ = "0.01" -    __type__ = "account" -    __description__ = "Rapideo.pl account plugin" -    __license__ = "GPLv3" -    __authors__ = [("goddie", "dev@rapideo.pl")] - -    _api_url = "http://enc.rapideo.pl" - -    _api_query = { -        "site": "newrd", -        "username": "", -        "password": "", -        "output": "json", -        "loc": "1", -        "info": "1" -    } - -    _req = None -    _usr = None -    _pwd = None - -    def loadAccountInfo(self, name, req): -        self._req = req -        try: -            result = loads(self.runAuthQuery()) -        except Exception: -            # todo: return or let it be thrown? -            return - -        premium = False -        valid_untill = -1 -        if "expire" in result.keys() and result["expire"]: -            premium = True -            valid_untill = time.mktime(datetime.datetime.fromtimestamp(int(result["expire"])).timetuple()) - -        traffic_left = result["balance"] - -        return ({ -                    "validuntil": valid_untill, -                    "trafficleft": traffic_left, -                    "premium": premium -                }) - -    def login(self, user, data, req): -        self._usr = user -        self._pwd = hashlib.md5(data["password"]).hexdigest() -        self._req = req -        try: -            response = loads(self.runAuthQuery()) -        except Exception: -            self.wrongPassword() - -        if "errno" in response.keys(): -            self.wrongPassword() -        data['usr'] = self._usr -        data['pwd'] = self._pwd - -    def createAuthQuery(self): -        query = self._api_query -        query["username"] = self._usr -        query["password"] = self._pwd - -        return query - -    def runAuthQuery(self): -        data = self._req.load(self._api_url, post=self.createAuthQuery()) - -        return data
\ No newline at end of file diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py deleted file mode 100644 index c0dd7eaee..000000000 --- a/module/plugins/accounts/RapidfileshareNet.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class RapidfileshareNet(XFSAccount): -    __name__    = "RapidfileshareNet" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Rapidfileshare.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "rapidfileshare.net" - -    TRAFFIC_LEFT_PATTERN = r'>Traffic available today:</TD><TD><label for="name">\s*(?P<S>[\d.,]+)\s*(?:(?P<U>[\w^_]+))?' diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py deleted file mode 100644 index 23d7aff53..000000000 --- a/module/plugins/accounts/RapidgatorNet.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class RapidgatorNet(Account): -    __name__    = "RapidgatorNet" -    __type__    = "account" -    __version__ = "0.09" - -    __description__ = """Rapidgator.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    API_URL = "http://rapidgator.net/api/user" - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = None -        premium     = False -        sid         = None - -        try: -            sid = self.getAccountData(user).get('sid') -            assert sid - -            html = req.load("%s/info" % self.API_URL, get={'sid': sid}) - -            self.logDebug("API:USERINFO", html) - -            json = json_loads(html) - -            if json['response_status'] == 200: -                if "reset_in" in json['response']: -                    self.scheduleRefresh(user, json['response']['reset_in']) - -                validuntil  = json['response']['expire_date'] -                trafficleft = float(json['response']['traffic_left']) / 1024  #@TODO: Remove `/ 1024` in 0.4.10 -                premium     = True -            else: -                self.logError(json['response_details']) - -        except Exception, e: -            self.logError(e) - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium, -                'sid'        : sid} - - -    def login(self, user, data, req): -        try: -            html = req.load('%s/login' % self.API_URL, post={"username": user, "password": data['password']}) - -            self.logDebug("API:LOGIN", html) - -            json = json_loads(html) - -            if json['response_status'] == 200: -                data['sid'] = str(json['response']['session_id']) -                return -            else: -                self.logError(json['response_details']) - -        except Exception, e: -            self.logError(e) - -        self.wrongPassword() diff --git a/module/plugins/accounts/RapiduNet.py b/module/plugins/accounts/RapiduNet.py deleted file mode 100644 index 70f47b673..000000000 --- a/module/plugins/accounts/RapiduNet.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class RapiduNet(Account): -    __name__    = "RapiduNet" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Rapidu.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("prOq", None), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    PREMIUM_PATTERN = r'>Account: <b>Premium' - -    VALID_UNTIL_PATTERN = r'>Account: <b>\w+ \((\d+)' - -    TRAFFIC_LEFT_PATTERN = r'class="tipsyS"><b>(.+?)<' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = -1 -        premium     = False - -        html = req.load("https://rapidu.net/", decode=True) - -        if re.search(self.PREMIUM_PATTERN, html): -            premium = True - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            validuntil = time.time() + (86400 * int(m.group(1))) - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        if m: -            trafficleft = self.parseTraffic(m.group(1)) - -        return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} - - -    def login(self, user, data, req): -        req.load("https://rapidu.net/ajax.php", -                 get={'a': "getChangeLang"}, -                 post={'_go' : "", -                       'lang': "en"}) - -        json = json_loads(req.load("https://rapidu.net/ajax.php", -                                   get={'a': "getUserLogin"}, -                                   post={'_go'     : "", -                                         'login'   : user, -                                         'pass'    : data['password'], -                                         'remember': "1"})) - -        self.logDebug(json) - -        if not json['message'] == "success": -            self.wrongPassword() diff --git a/module/plugins/accounts/RarefileNet.py b/module/plugins/accounts/RarefileNet.py deleted file mode 100644 index 577a6c8f6..000000000 --- a/module/plugins/accounts/RarefileNet.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class RarefileNet(XFSAccount): -    __name__    = "RarefileNet" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """RareFile.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    HOSTER_DOMAIN = "rarefile.net" diff --git a/module/plugins/accounts/RealdebridCom.py b/module/plugins/accounts/RealdebridCom.py deleted file mode 100644 index 41d8a0975..000000000 --- a/module/plugins/accounts/RealdebridCom.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- - -import xml.dom.minidom as dom - -from module.plugins.Account import Account - - -class RealdebridCom(Account): -    __name__    = "RealdebridCom" -    __type__    = "account" -    __version__ = "0.45" - -    __description__ = """Real-Debrid.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Devirex Hazzard", "naibaf_11@yahoo.de")] - - -    def loadAccountInfo(self, user, req): -        if self.pin_code: -            return {"premium": False} -        html = req.load("https://real-debrid.com/api/account.php") -        xml = dom.parseString(html) -        account_info = {"validuntil": float(xml.getElementsByTagName("expiration")[0].childNodes[0].nodeValue), -                        "trafficleft": -1} - -        return account_info - - -    def login(self, user, data, req): -        self.pin_code = False -        html = req.load("https://real-debrid.com/ajax/login.php", -                        get={"user": user, "pass": data['password']}, -                        decode=True) - -        if "Your login informations are incorrect" in html: -            self.wrongPassword() - -        elif "PIN Code required" in html: -            self.logWarning(_("PIN code required. Please login to https://real-debrid.com using the PIN or disable the double authentication in your control panel on https://real-debrid.com")) -            self.pin_code = True diff --git a/module/plugins/accounts/RehostTo.py b/module/plugins/accounts/RehostTo.py deleted file mode 100644 index 04e71c9ad..000000000 --- a/module/plugins/accounts/RehostTo.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class RehostTo(Account): -    __name__    = "RehostTo" -    __type__    = "account" -    __version__ = "0.16" - -    __description__ = """Rehost.to account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org")] - - -    def loadAccountInfo(self, user, req): -        premium     = False -        trafficleft = None -        validuntil  = -1 -        session     = "" - -        html = req.load("http://rehost.to/api.php", -                        get={'cmd' : "login", 'user': user, -                             'pass': self.getAccountData(user)['password']}) -        try: -            session = html.split(",")[1].split("=")[1] - -            html = req.load("http://rehost.to/api.php", -                            get={'cmd': "get_premium_credits", 'long_ses': session}) - -            if html.strip() == "0,0" or "ERROR" in html: -                self.logDebug(html) -            else: -                traffic, valid = html.split(",") - -                premium     = True -                trafficleft = self.parseTraffic(traffic + "MB") -                validuntil  = float(valid) - -        finally: -            return {'premium'    : premium, -                    'trafficleft': trafficleft, -                    'validuntil' : validuntil, -                    'session'    : session} - - -    def login(self, user, data, req): -        html = req.load("http://rehost.to/api.php", -                        get={'cmd': "login", 'user': user, 'pass': data['password']}, -                        decode=True) - -        if "ERROR" in html: -            self.logDebug(html) -            self.wrongPassword() diff --git a/module/plugins/accounts/RyushareCom.py b/module/plugins/accounts/RyushareCom.py deleted file mode 100644 index 8c56ff20f..000000000 --- a/module/plugins/accounts/RyushareCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class RyushareCom(XFSAccount): -    __name__    = "RyushareCom" -    __type__    = "account" -    __version__ = "0.06" - -    __description__ = """Ryushare.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "ryushare.com" diff --git a/module/plugins/accounts/SafesharingEu.py b/module/plugins/accounts/SafesharingEu.py deleted file mode 100644 index 2e58d33b3..000000000 --- a/module/plugins/accounts/SafesharingEu.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class SafesharingEu(XFSAccount): -    __name__    = "SafesharingEu" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Safesharing.eu account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "safesharing.eu" diff --git a/module/plugins/accounts/SecureUploadEu.py b/module/plugins/accounts/SecureUploadEu.py deleted file mode 100644 index b335c94da..000000000 --- a/module/plugins/accounts/SecureUploadEu.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class SecureUploadEu(XFSAccount): -    __name__    = "SecureUploadEu" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """SecureUpload.eu account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "secureupload.eu" diff --git a/module/plugins/accounts/SendmywayCom.py b/module/plugins/accounts/SendmywayCom.py deleted file mode 100644 index 4fcbe0b7a..000000000 --- a/module/plugins/accounts/SendmywayCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class SendmywayCom(XFSAccount): -    __name__    = "SendmywayCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Sendmyway.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "sendmyway.com" diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py deleted file mode 100644 index 7e05e2e76..000000000 --- a/module/plugins/accounts/ShareonlineBiz.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class ShareonlineBiz(Account): -    __name__    = "ShareonlineBiz" -    __type__    = "account" -    __version__ = "0.31" - -    __description__ = """Share-online.biz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    def api_response(self, user, req): -        return req.load("http://api.share-online.biz/cgi-bin", -                        get={'q'       : "userdetails", -                             'aux'     : "traffic", -                             'username': user, -                             'password': self.getAccountData(user)['password']}) - - -    def loadAccountInfo(self, user, req): -        premium     = False -        validuntil  = None -        trafficleft = -1 -        maxtraffic  = 100 * 1024 * 1024 * 1024  #: 100 GB - -        api = {} -        for line in self.api_response(user, req).splitlines(): -            if "=" in line: -                key, value = line.split("=") -                api[key] = value - -        self.logDebug(api) - -        if api['a'].lower() != "not_available": -            req.cj.setCookie("share-online.biz", 'a', api['a']) - -            premium = api['group'] in ("Premium", "PrePaid") - -            validuntil = float(api['expire_date']) - -            traffic     = float(api['traffic_1d'].split(";")[0]) -            maxtraffic  = max(maxtraffic, traffic) -            trafficleft = maxtraffic - traffic - -        maxtraffic  /= 1024  #@TODO: Remove `/ 1024` in 0.4.10 -        trafficleft /= 1024  #@TODO: Remove `/ 1024` in 0.4.10 - -        return {'premium'    : premium, -                'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'maxtraffic' : maxtraffic} - - -    def login(self, user, data, req): -        html = self.api_response(user, req) -        err  = re.search(r'\*\*(.+?)\*\*', html) -        if err: -            self.logError(err.group(1)) -            self.wrongPassword() diff --git a/module/plugins/accounts/SimplyPremiumCom.py b/module/plugins/accounts/SimplyPremiumCom.py deleted file mode 100644 index 8caf600f9..000000000 --- a/module/plugins/accounts/SimplyPremiumCom.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.common.json_layer import json_loads -from module.plugins.Account import Account - - -class SimplyPremiumCom(Account): -    __name__    = "SimplyPremiumCom" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Simply-Premium.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("EvolutionClip", "evolutionclip@live.de")] - - -    def loadAccountInfo(self, user, req): -        premium     = False -        validuntil  = -1 -        trafficleft = None - -        json_data = req.load('http://www.simply-premium.com/api/user.php?format=json') - -        self.logDebug("JSON data: %s" % json_data) - -        json_data = json_loads(json_data) - -        if 'vip' in json_data['result'] and json_data['result']['vip']: -            premium = True - -        if 'timeend' in json_data['result'] and json_data['result']['timeend']: -            validuntil = float(json_data['result']['timeend']) - -        if 'remain_traffic' in json_data['result'] and json_data['result']['remain_traffic']: -            trafficleft = float(json_data['result']['remain_traffic']) / 1024  #@TODO: Remove `/ 1024` in 0.4.10 - -        return {"premium": premium, "validuntil": validuntil, "trafficleft": trafficleft} - - -    def login(self, user, data, req): -        req.cj.setCookie("simply-premium.com", "lang", "EN") - -        html = req.load("http://www.simply-premium.com/login.php", -                        post={'key': user} if not data['password'] else {'login_name': user, 'login_pass': data['password']}, -                        decode=True) - -        if 'logout' not in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/SimplydebridCom.py b/module/plugins/accounts/SimplydebridCom.py deleted file mode 100644 index 24108eb0b..000000000 --- a/module/plugins/accounts/SimplydebridCom.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -from module.plugins.Account import Account - - -class SimplydebridCom(Account): -    __name__    = "SimplydebridCom" -    __type__    = "account" -    __version__ = "0.11" - -    __description__ = """Simply-Debrid.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")] - - -    def loadAccountInfo(self, user, req): -        get_data = {'login': 2, 'u': self.loginname, 'p': self.password} -        res = req.load("http://simply-debrid.com/api.php", get=get_data, decode=True) -        data = [x.strip() for x in res.split(";")] -        if str(data[0]) != "1": -            return {"premium": False} -        else: -            return {"trafficleft": -1, "validuntil": time.mktime(time.strptime(str(data[2]), "%d/%m/%Y"))} - - -    def login(self, user, data, req): -        self.loginname = user -        self.password  = data['password'] -        get_data       = {'login': 1, 'u': self.loginname, 'p': self.password} - -        res = req.load("http://simply-debrid.com/api.php", get=get_data, decode=True) -        if res != "02: loggin success": -            self.wrongPassword() diff --git a/module/plugins/accounts/SmoozedCom.py b/module/plugins/accounts/SmoozedCom.py deleted file mode 100644 index 3c8226704..000000000 --- a/module/plugins/accounts/SmoozedCom.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- - -import hashlib -import time - -try: -    from beaker.crypto.pbkdf2 import PBKDF2 - -except ImportError: -    from beaker.crypto.pbkdf2 import pbkdf2 -    from binascii import b2a_hex -    class PBKDF2(object): -        def __init__(self, passphrase, salt, iterations=1000): -            self.passphrase = passphrase -            self.salt = salt -            self.iterations = iterations - -        def hexread(self, octets): -            return b2a_hex(pbkdf2(self.passphrase, self.salt, self.iterations, octets)) - -from module.common.json_layer import json_loads -from module.plugins.Account import Account - - -class SmoozedCom(Account): -    __name__    = "SmoozedCom" -    __type__    = "account" -    __version__ = "0.04" - -    __description__ = """Smoozed.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("", "")] - - -    def loadAccountInfo(self, user, req): -        # Get user data from premiumize.me -        status = self.getAccountStatus(user, req) - -        self.logDebug(status) - -        if status['state'] != 'ok': -            info = {'validuntil' : None, -                    'trafficleft': None, -                    'premium'    : False} -        else: -            # Parse account info -            info = {'validuntil' : float(status["data"]["user"]["user_premium"]), -                    'trafficleft': max(0, status["data"]["traffic"][1] - status["data"]["traffic"][0]), -                    'session'    : status["data"]["session_key"], -                    'hosters'    : [hoster["name"] for hoster in status["data"]["hoster"]]} - -            if info['validuntil'] < time.time(): -                info['premium'] = False -            else: -                info['premium'] = True - -        return 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['state'] != 'ok': -            self.wrongPassword() - - -    def getAccountStatus(self, user, req): -        password  = self.getAccountData(user)['password'] -        salt      = hashlib.sha256(password).hexdigest() -        encrypted = PBKDF2(password, salt, iterations=1000).hexread(32) - -        return json_loads(req.load("http://www2.smoozed.com/api/login", -                                   get={'auth': user, 'password': encrypted})) diff --git a/module/plugins/accounts/StahnuTo.py b/module/plugins/accounts/StahnuTo.py deleted file mode 100644 index 882dbd2c3..000000000 --- a/module/plugins/accounts/StahnuTo.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class StahnuTo(Account): -    __name__    = "StahnuTo" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """StahnuTo account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.stahnu.to/") - -        m = re.search(r'>VIP: (\d+.*)<', html) -        trafficleft = self.parseTraffic(m.group(1)) if m else 0 - -        return {"premium": trafficleft > 512, "trafficleft": trafficleft, "validuntil": -1} - - -    def login(self, user, data, req): -        html = req.load("http://www.stahnu.to/login.php", -                        post={"username": user, -                              "password": data['password'], -                              "submit": "Login"}, -                        decode=True) - -        if not '<a href="logout.php">' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/StreamcloudEu.py b/module/plugins/accounts/StreamcloudEu.py deleted file mode 100644 index aa1eafcbd..000000000 --- a/module/plugins/accounts/StreamcloudEu.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class StreamcloudEu(XFSAccount): -    __name__    = "StreamcloudEu" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Streamcloud.eu account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "streamcloud.eu" diff --git a/module/plugins/accounts/TurbobitNet.py b/module/plugins/accounts/TurbobitNet.py deleted file mode 100644 index 010fbc270..000000000 --- a/module/plugins/accounts/TurbobitNet.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class TurbobitNet(Account): -    __name__    = "TurbobitNet" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """TurbobitNet account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://turbobit.net") - -        m = re.search(r'<u>Turbo Access</u> to ([\d.]+)', html) -        if m: -            premium = True -            validuntil = time.mktime(time.strptime(m.group(1), "%d.%m.%Y")) -        else: -            premium = False -            validuntil = -1 - -        return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} - - -    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"}, -                        decode=True) - -        if not '<div class="menu-item user-name">' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/TusfilesNet.py b/module/plugins/accounts/TusfilesNet.py deleted file mode 100644 index d06ba0583..000000000 --- a/module/plugins/accounts/TusfilesNet.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.internal.XFSAccount import XFSAccount - - -class TusfilesNet(XFSAccount): -    __name__    = "TusfilesNet" -    __type__    = "account" -    __version__ = "0.06" - -    __description__ = """ Tusfile.net account plugin """ -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "tusfiles.net" - -    VALID_UNTIL_PATTERN = r'<span class="label label-default">([^<]+)</span>' -    TRAFFIC_LEFT_PATTERN = r'<td><img src="//www\.tusfiles\.net/i/icon/meter\.png" alt=""/></td>\n<td> (?P<S>[\d.,]+)' diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py deleted file mode 100644 index 6ddb34385..000000000 --- a/module/plugins/accounts/UlozTo.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urlparse import urljoin - -from module.plugins.Account import Account - - -class UlozTo(Account): -    __name__    = "UlozTo" -    __type__    = "account" -    __version__ = "0.10" - -    __description__ = """Uloz.to account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("pulpe", None)] - - -    TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a .*?title=".+?GB = ([\d.]+) MB"' - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.ulozto.net/", decode=True) - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - -        trafficleft = float(m.group(1).replace(' ', '').replace(',', '.')) * 1000 * 1.048 if m else 0 -        premium     = True if trafficleft else False - -        return {'validuntil': -1, 'trafficleft': trafficleft, 'premium': premium} - - -    def login(self, user, data, req): -        login_page = req.load('http://www.ulozto.net/?do=web-login', decode=True) -        action     = re.findall('<form action="(.+?)"', login_page)[1].replace('&', '&') -        token      = re.search('_token_" value="(.+?)"', login_page).group(1) - -        html = req.load(urljoin("http://www.ulozto.net/", action), -                        post={'_token_' : token, -                              'do'      : "loginForm-submit", -                              'login'   : u"Přihlásit", -                              'password': data['password'], -                              'username': user, -                              'remember': "on"}, -                        decode=True) - -        if '<div class="flash error">' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/UnrestrictLi.py b/module/plugins/accounts/UnrestrictLi.py deleted file mode 100644 index 6a8187234..000000000 --- a/module/plugins/accounts/UnrestrictLi.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class UnrestrictLi(Account): -    __name__    = "UnrestrictLi" -    __type__    = "account" -    __version__ = "0.05" - -    __description__ = """Unrestrict.li account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("stickell", "l.stickell@yahoo.it")] - - -    def loadAccountInfo(self, user, req): -        json_data = req.load('http://unrestrict.li/api/jdownloader/user.php?format=json') -        self.logDebug("JSON data: " + json_data) -        json_data = json_loads(json_data) - -        if 'vip' in json_data['result'] and json_data['result']['vip'] == 0: -            return {"premium": False} - -        validuntil = json_data['result']['expires'] -        trafficleft = float(json_data['result']['traffic'] / 1024)  #@TODO: Remove `/ 1024` in 0.4.10 - -        return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} - - -    def login(self, user, data, req): -        req.cj.setCookie("unrestrict.li", "lang", "EN") -        html = req.load("https://unrestrict.li/sign_in", decode=True) - -        if 'solvemedia' in html: -            self.logError(_("A Captcha is required. Go to http://unrestrict.li/sign_in and login, then retry")) -            return - -        post_data = {"username": user, "password": data['password'], -                     "remember_me": "remember", "signin": "Sign in"} -        html = req.load("https://unrestrict.li/sign_in", post=post_data, decode=True) - -        if 'sign_out' not in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/UploadableCh.py b/module/plugins/accounts/UploadableCh.py deleted file mode 100644 index 86ae5dd17..000000000 --- a/module/plugins/accounts/UploadableCh.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.Account import Account - - -class UploadableCh(Account): -    __name__    = "UploadableCh" -    __type__    = "account" -    __version__ = "0.03" - -    __description__ = """Uploadable.ch account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Sasch", "gsasch@gmail.com")] - - -    def loadAccountInfo(self, user, req): -        html = req.load("http://www.uploadable.ch/login.php") - -        premium     = '<a href="/logout.php"' in html -        trafficleft = -1 if premium else None - -        return {'validuntil': None, 'trafficleft': trafficleft, 'premium': premium}  #@TODO: validuntil - - -    def login(self, user, data, req): -        html = req.load("http://www.uploadable.ch/login.php", -                        post={'userName'     : user, -                              'userPassword' : data["password"], -                              'autoLogin'    : "1", -                              'action__login': "normalLogin"}, -                        decode=True) - -        if "Login failed" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/UploadcCom.py b/module/plugins/accounts/UploadcCom.py deleted file mode 100644 index d1e1a2ead..000000000 --- a/module/plugins/accounts/UploadcCom.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class UploadcCom(XFSAccount): -    __name__    = "UploadcCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """Uploadc.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "uploadc.com" diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py deleted file mode 100644 index d1556b6db..000000000 --- a/module/plugins/accounts/UploadedTo.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account - - -class UploadedTo(Account): -    __name__    = "UploadedTo" -    __type__    = "account" -    __version__ = "0.30" - -    __description__ = """Uploaded.to account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    PREMIUM_PATTERN = r'<em>Premium</em>' -    VALID_UNTIL_PATTERN = r'<td>Duration:</td>\s*<th>(.+?)<' -    TRAFFIC_LEFT_PATTERN = r'<b class="cB">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = None -        premium     = None - -        html = req.load("http://uploaded.net/me") - -        premium = True if re.search(self.PREMIUM_PATTERN, html) else False - -        m = re.search(self.VALID_UNTIL_PATTERN, html, re.M) -        if m: -            expiredate = m.group(1).lower().strip() - -            if expiredate == "unlimited": -                validuntil = -1 -            else: -                m = re.findall(r'(\d+) (week|day|hour)', expiredate) -                if m: -                    validuntil = time.time() -                    for n, u in m: -                        validuntil += float(n) * 60 * 60 * {'week': 168, 'day': 24, 'hour': 1}[u] - -        m = re.search(self.TRAFFIC_LEFT_PATTERN, html) -        if m: -            traffic = m.groupdict() -            size    = traffic['S'].replace('.', '') -            unit    = traffic['U'].lower() - -            if unit.startswith('t'):  #@NOTE: Remove in 0.4.10 -                trafficleft = float(size.replace(',', '.')) / 1024 -                trafficleft *= 1 << 40 -            else: -                trafficleft = self.parseTraffic(size + unit) - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium} - - -    def login(self, user, data, req): -        # req.cj.setCookie("uploaded.net", "lang", "en") - -        html = req.load("http://uploaded.net/io/login", -                        post={'id': user, 'pw': data['password'], '_': ""}, -                        decode=True) - -        if '"err"' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/UploadheroCom.py b/module/plugins/accounts/UploadheroCom.py deleted file mode 100644 index 714f5b0a6..000000000 --- a/module/plugins/accounts/UploadheroCom.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import datetime -import time - -from module.plugins.Account import Account - - -class UploadheroCom(Account): -    __name__    = "UploadheroCom" -    __type__    = "account" -    __version__ = "0.21" - -    __description__ = """Uploadhero.co account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mcmyst", "mcmyst@hotmail.fr")] - - -    def loadAccountInfo(self, user, req): -        premium_pattern = re.compile('Il vous reste <span class="bleu">(\d+)</span> jours premium') - -        data = self.getAccountData(user) -        html = req.load("http://uploadhero.co/my-account") - -        if premium_pattern.search(html): -            end_date = datetime.date.today() + datetime.timedelta(days=int(premium_pattern.search(html).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} - -        return account_info - - -    def login(self, user, data, req): -        html = req.load("http://uploadhero.co/lib/connexion.php", -                        post={"pseudo_login": user, "password_login": data['password']}, -                        decode=True) - -        if "mot de passe invalide" in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/UploadingCom.py b/module/plugins/accounts/UploadingCom.py deleted file mode 100644 index a20c44535..000000000 --- a/module/plugins/accounts/UploadingCom.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from module.plugins.Account import Account -from module.plugins.internal.SimpleHoster import set_cookies - - -class UploadingCom(Account): -    __name__    = "UploadingCom" -    __type__    = "account" -    __version__ = "0.12" - -    __description__ = """Uploading.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de")] - - -    PREMIUM_PATTERN = r'UPGRADE TO PREMIUM' -    VALID_UNTIL_PATTERN = r'Valid Until:(.+?)<' - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = None -        premium     = None - -        html = req.load("http://uploading.com/") - -        premium = False if re.search(self.PREMIUM_PATTERN, html) else True - -        m = re.search(self.VALID_UNTIL_PATTERN, html) -        if m: -            expiredate = m.group(1).strip() -            self.logDebug("Expire date: " + expiredate) - -            try: -                validuntil = time.mktime(time.strptime(expiredate, "%b %d, %Y")) - -            except Exception, e: -                self.logError(e) - -            else: -                if validuntil > time.mktime(time.gmtime()): -                    premium    = True -                else: -                    premium    = False -                    validuntil = None - -        return {'validuntil' : validuntil, -                'trafficleft': trafficleft, -                'premium'    : premium} - - -    def login(self, user, data, req): -        set_cookies(req.cj, -                    [("uploading.com", "lang"    , "1" ), -                     ("uploading.com", "language", "1" ), -                     ("uploading.com", "setlang" , "en"), -                     ("uploading.com", "_lang"   , "en")]) - -        req.load("http://uploading.com/") -        req.load("http://uploading.com/general/login_form/?JsHttpRequest=%s-xml" % long(time.time() * 1000), -                 post={'email': user, 'password': data['password'], 'remember': "on"}) diff --git a/module/plugins/accounts/UptoboxCom.py b/module/plugins/accounts/UptoboxCom.py deleted file mode 100644 index c40dbd6e6..000000000 --- a/module/plugins/accounts/UptoboxCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class UptoboxCom(XFSAccount): -    __name__    = "UptoboxCom" -    __type__    = "account" -    __version__ = "0.08" - -    __description__ = """DDLStorage.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    HOSTER_DOMAIN = "uptobox.com" -    HOSTER_URL    = "https://uptobox.com/" -    LOGIN_URL     = "https://login.uptobox.com/" diff --git a/module/plugins/accounts/VidPlayNet.py b/module/plugins/accounts/VidPlayNet.py deleted file mode 100644 index 5bfc24963..000000000 --- a/module/plugins/accounts/VidPlayNet.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class VidPlayNet(XFSAccount): -    __name__    = "VidPlayNet" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """VidPlay.net account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "vidplay.net" diff --git a/module/plugins/accounts/WebshareCz.py b/module/plugins/accounts/WebshareCz.py deleted file mode 100644 index 3c5f45d34..000000000 --- a/module/plugins/accounts/WebshareCz.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import time - -from hashlib import md5, sha1 -from passlib.hash import md5_crypt - -from module.plugins.Account import Account - - -class WebshareCz(Account): -    __name__    = "WebshareCz" -    __type__    = "account" -    __version__ = "0.07" - -    __description__ = """Webshare.cz account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("rush", "radek.senfeld@gmail.com")] - - -    VALID_UNTIL_PATTERN = r'<vip_until>(.+)</vip_until>' - -    TRAFFIC_LEFT_PATTERN = r'<bytes>(.+)</bytes>' - - -    def loadAccountInfo(self, user, req): -        html = req.load("https://webshare.cz/api/user_data/", -                        post={'wst': self.infos['wst']}, -                        decode=True) - -        self.logDebug("Response: " + html) - -        expiredate = re.search(self.VALID_UNTIL_PATTERN, html).group(1) -        self.logDebug("Expire date: " + expiredate) - -        validuntil  = time.mktime(time.strptime(expiredate, "%Y-%m-%d %H:%M:%S")) -        trafficleft = self.parseTraffic(re.search(self.TRAFFIC_LEFT_PATTERN, html).group(1)) -        premium     = validuntil > time.time() - -        return {'validuntil': validuntil, 'trafficleft': -1, 'premium': premium} - - -    def login(self, user, data, req): -        salt = req.load("https://webshare.cz/api/salt/", -                        post={'username_or_email': user, -                              'wst'              : ""}, -                        decode=True) - -        if "<status>OK</status>" not in salt: -            self.wrongPassword() - -        salt     = re.search('<salt>(.+)</salt>', salt).group(1) -        password = sha1(md5_crypt.encrypt(data["password"], salt=salt)).hexdigest() -        digest   = md5(user + ":Webshare:" + password).hexdigest() - -        login = req.load("https://webshare.cz/api/login/", -                         post={'digest'           : digest, -                               'keep_logged_in'   : 1, -                               'password'         : password, -                               'username_or_email': user, -                               'wst'              : ""}, -                         decode=True) - -        if "<status>OK</status>" not in login: -            self.wrongPassword() - -        self.infos['wst'] = re.search('<token>(.+)</token>', login).group(1) diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py deleted file mode 100644 index 8dc7f3a30..000000000 --- a/module/plugins/accounts/XFileSharingPro.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class XFileSharingPro(XFSAccount): -    __name__    = "XFileSharingPro" -    __type__    = "account" -    __version__ = "0.06" - -    __description__ = """XFileSharingPro multi-purpose account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = None - - -    def init(self): -        if self.HOSTER_DOMAIN: -            return super(XFileSharingPro, self).init() - - -    def loadAccountInfo(self, user, req): -        return super(XFileSharingPro if self.HOSTER_DOMAIN else XFSAccount, self).loadAccountInfo(user, req) - - -    def login(self, user, data, req): -        if self.HOSTER_DOMAIN: -            try: -                return super(XFileSharingPro, self).login(user, data, req) -            except Exception: -                self.HOSTER_URL = self.HOSTER_URL.replace("www.", "") -                return super(XFileSharingPro, self).login(user, data, req) diff --git a/module/plugins/accounts/YibaishiwuCom.py b/module/plugins/accounts/YibaishiwuCom.py deleted file mode 100644 index 33602a2fe..000000000 --- a/module/plugins/accounts/YibaishiwuCom.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Account import Account - - -class YibaishiwuCom(Account): -    __name__    = "YibaishiwuCom" -    __type__    = "account" -    __version__ = "0.02" - -    __description__ = """115.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -    ACCOUNT_INFO_PATTERN = r'var USER_PERMISSION = {(.*?)}' - - -    def loadAccountInfo(self, user, req): -        #self.relogin(user) -        html = req.load("http://115.com/", decode=True) - -        m = re.search(self.ACCOUNT_INFO_PATTERN, html, re.S) -        premium = True if m and 'is_vip: 1' in m.group(1) else False -        validuntil = trafficleft = (-1 if m 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={"back": "http://www.115.com/", -                              "goto": "http://115.com/", -                              "login[account]": user, -                              "login[passwd]": data['password']}, -                        decode=True) - -        if not 'var USER_PERMISSION = {' in html: -            self.wrongPassword() diff --git a/module/plugins/accounts/ZeveraCom.py b/module/plugins/accounts/ZeveraCom.py deleted file mode 100644 index 9bc6d0487..000000000 --- a/module/plugins/accounts/ZeveraCom.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -from module.plugins.Account import Account - - -class ZeveraCom(Account): -    __name__    = "ZeveraCom" -    __type__    = "account" -    __version__ = "0.26" - -    __description__ = """Zevera.com account plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    HOSTER_DOMAIN = "zevera.com" - - -    def __init__(self, manager, accounts):  #@TODO: remove in 0.4.10 -        self.init() -        return super(ZeveraCom, self).__init__(manager, accounts) - - -    def init(self): -        if not self.HOSTER_DOMAIN: -            self.logError(_("Missing HOSTER_DOMAIN")) - -        if not hasattr(self, "API_URL"): -            self.API_URL = "http://api.%s/jDownloader.ashx" % (self.HOSTER_DOMAIN or "") - - -    def loadAccountInfo(self, user, req): -        validuntil  = None -        trafficleft = None -        premium     = False - -        api = self.api_response(req) - -        if "No trafic" not in api and api['endsubscriptiondate'] != "Expired!": -            validuntil  = time.mktime(time.strptime(api['endsubscriptiondate'], "%Y/%m/%d %H:%M:%S")) -            trafficleft = float(api['availabletodaytraffic']) * 1024 if api['orondaytrafficlimit'] != '0' else -1 -            premium     = True - -        return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} - - -    def login(self, user, data, req): -        self.user     = user -        self.password = data['password'] - -        if self.api_response(req) == "No trafic": -            self.wrongPassword() - - -    def api_response(self, req, just_header=False, **kwargs): -        get_data = {'cmd'  : "accountinfo", -                    'login': self.user, -                    'pass' : self.password} - -        get_data.update(kwargs) - -        res = req.load(self.API_URL, -                       get=get_data, -                       just_header=just_header, -                       decode=True) - -        self.logDebug(res) - -        if ':' in res: -            if not just_header: -                res = res.replace(',', '\n') -            return dict((y.strip().lower(), z.strip()) for (y, z) in -                        [x.split(':', 1) for x in res.splitlines() if ':' in x]) -        else: -            return res diff --git a/module/plugins/accounts/__init__.py b/module/plugins/accounts/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/module/plugins/accounts/__init__.py +++ /dev/null  | 
