diff options
Diffstat (limited to 'pyload/plugins/account')
78 files changed, 744 insertions, 695 deletions
diff --git a/pyload/plugins/account/AlldebridCom.py b/pyload/plugins/account/AlldebridCom.py index 7183b8e6e..daf844a40 100644 --- a/pyload/plugins/account/AlldebridCom.py +++ b/pyload/plugins/account/AlldebridCom.py @@ -12,12 +12,13 @@ from pyload.plugins.base.Account import Account class AlldebridCom(Account): - __name__ = "AlldebridCom" - __type__ = "account" + __name__ = "AlldebridCom" + __type__ = "account" __version__ = "0.22" __description__ = """AllDebrid.com account plugin""" - __authors__ = [("Andy Voigt", "spamsales@online.de")] + __license__ = "GPLv3" + __authors__ = [("Andy Voigt", "spamsales@online.de")] def loadAccountInfo(self, user, req): @@ -43,6 +44,7 @@ class AlldebridCom(Account): account_info = {"validuntil": exp_time, "trafficleft": -1} return account_info + def login(self, user, data, req): urlparams = urlencode({'action': 'login', 'login_login': user, 'login_password': data['password']}) page = req.load("http://www.alldebrid.com/register/?%s" % urlparams) diff --git a/pyload/plugins/account/BayfilesCom.py b/pyload/plugins/account/BayfilesCom.py index af4f791cf..85dba44fb 100644 --- a/pyload/plugins/account/BayfilesCom.py +++ b/pyload/plugins/account/BayfilesCom.py @@ -7,29 +7,31 @@ from pyload.utils import json_loads class BayfilesCom(Account): - __name__ = "BayfilesCom" - __type__ = "account" + __name__ = "BayfilesCom" + __type__ = "account" __version__ = "0.03" __description__ = """Bayfiles.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] def loadAccountInfo(self, user, req): - for _ in xrange(2): - response = json_loads(req.load("http://api.bayfiles.com/v1/account/info")) - self.logDebug(response) - if not response['error']: + for _i in xrange(2): + res = json_loads(req.load("http://api.bayfiles.com/v1/account/info")) + self.logDebug(res) + if not res['error']: break - self.logWarning(response['error']) + self.logWarning(res['error']) self.relogin(user) - return {"premium": bool(response['premium']), "trafficleft": -1, - "validuntil": response['expires'] if response['expires'] >= int(time()) else -1} + return {"premium": bool(res['premium']), "trafficleft": -1, + "validuntil": res['expires'] if res['expires'] >= int(time()) else -1} + def login(self, user, data, req): - response = json_loads(req.load("http://api.bayfiles.com/v1/account/login/%s/%s" % (user, data['password']))) - self.logDebug(response) - if response['error']: - self.logError(response['error']) + res = json_loads(req.load("http://api.bayfiles.com/v1/account/login/%s/%s" % (user, data['password']))) + self.logDebug(res) + if res['error']: + self.logError(res['error']) self.wrongPassword() diff --git a/pyload/plugins/account/BillionuploadsCom.py b/pyload/plugins/account/BillionuploadsCom.py index a8ad94bd3..11af36591 100644 --- a/pyload/plugins/account/BillionuploadsCom.py +++ b/pyload/plugins/account/BillionuploadsCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class BillionuploadsCom(XFSPAccount): - __name__ = "BillionuploadsCom" - __type__ = "account" - __version__ = "0.01" +class BillionuploadsCom(XFSAccount): + __name__ = "BillionuploadsCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Billionuploads.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.billionuploads.com/" + HOSTER_DOMAIN = "billionuploads.com" diff --git a/pyload/plugins/account/BitshareCom.py b/pyload/plugins/account/BitshareCom.py index a91c25982..d35f3ce29 100644 --- a/pyload/plugins/account/BitshareCom.py +++ b/pyload/plugins/account/BitshareCom.py @@ -4,12 +4,13 @@ from pyload.plugins.base.Account import Account class BitshareCom(Account): - __name__ = "BitshareCom" - __type__ = "account" + __name__ = "BitshareCom" + __type__ = "account" __version__ = "0.12" __description__ = """Bitshare account plugin""" - __authors__ = [("Paul King", None)] + __license__ = "GPLv3" + __authors__ = [("Paul King", None)] def loadAccountInfo(self, user, req): @@ -23,6 +24,7 @@ class BitshareCom(Account): return {"validuntil": -1, "trafficleft": -1, "premium": True} + def login(self, user, data, req): page = req.load("http://bitshare.com/login.html", post={"user": user, "password": data['password'], "submit": "Login"}, cookies=True) diff --git a/pyload/plugins/account/CramitIn.py b/pyload/plugins/account/CramitIn.py index 24acd2488..a9e2274a2 100644 --- a/pyload/plugins/account/CramitIn.py +++ b/pyload/plugins/account/CramitIn.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class CramitIn(XFSPAccount): - __name__ = "CramitIn" - __type__ = "account" - __version__ = "0.02" +class CramitIn(XFSAccount): + __name__ = "CramitIn" + __type__ = "account" + __version__ = "0.03" __description__ = """Cramit.in account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.cramit.in/" + HOSTER_DOMAIN = "cramit.in" diff --git a/pyload/plugins/account/CzshareCom.py b/pyload/plugins/account/CzshareCom.py index dc8d513a5..54163c425 100644 --- a/pyload/plugins/account/CzshareCom.py +++ b/pyload/plugins/account/CzshareCom.py @@ -7,16 +7,17 @@ from pyload.plugins.base.Account import Account class CzshareCom(Account): - __name__ = "CzshareCom" - __type__ = "account" + __name__ = "CzshareCom" + __type__ = "account" __version__ = "0.14" __description__ = """Czshare.com account plugin, now Sdilej.cz""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("stickell", "l.stickell@yahoo.it")] - CREDIT_LEFT_PATTERN = r'<tr class="active">\s*<td>([0-9 ,]+) (KiB|MiB|GiB)</td>\s*<td>([^<]*)</td>\s*</tr>' + CREDIT_LEFT_PATTERN = r'<tr class="active">\s*<td>([\d ,]+) (KiB|MiB|GiB)</td>\s*<td>([^<]*)</td>\s*</tr>' def loadAccountInfo(self, user, req): @@ -31,6 +32,7 @@ class CzshareCom(Account): validuntil = mktime(strptime(m.group(3), '%d.%m.%y %H:%M')) return {"validuntil": validuntil, "trafficleft": credits} + def login(self, user, data, req): html = req.load('https://sdilej.cz/index.php', post={ "Prihlasit": "Prihlasit", diff --git a/pyload/plugins/account/DebridItaliaCom.py b/pyload/plugins/account/DebridItaliaCom.py index 850a9e60e..cdeb0a9f1 100644 --- a/pyload/plugins/account/DebridItaliaCom.py +++ b/pyload/plugins/account/DebridItaliaCom.py @@ -7,30 +7,34 @@ from pyload.plugins.base.Account import Account class DebridItaliaCom(Account): - __name__ = "DebridItaliaCom" - __type__ = "account" + __name__ = "DebridItaliaCom" + __type__ = "account" __version__ = "0.1" __description__ = """Debriditalia.com account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] - WALID_UNTIL_PATTERN = r"Premium valid till: (?P<D>[^|]+) \|" + WALID_UNTIL_PATTERN = r'Premium valid till: (?P<D>[^|]+) \|' def loadAccountInfo(self, user, req): - if 'Account premium not activated' in self.html: + html = req.load("http://debriditalia.com/") + + if 'Account premium not activated' in html: return {"premium": False, "validuntil": None, "trafficleft": None} - m = re.search(self.WALID_UNTIL_PATTERN, self.html) + m = re.search(self.WALID_UNTIL_PATTERN, html) if m: validuntil = int(time.mktime(time.strptime(m.group('D'), "%d/%m/%Y %H:%M"))) return {"premium": True, "validuntil": validuntil, "trafficleft": -1} else: - self.logError("Unable to retrieve account information - Plugin may be out of date") + self.logError(_("Unable to retrieve account information")) + def login(self, user, data, req): - self.html = req.load("http://debriditalia.com/login.php", - get={"u": user, "p": data['password']}) - if 'NO' in self.html: + html = req.load("http://debriditalia.com/login.php", + get={"u": user, "p": data['password']}) + if 'NO' in html: self.wrongPassword() diff --git a/pyload/plugins/account/DepositfilesCom.py b/pyload/plugins/account/DepositfilesCom.py index 8d75c6344..47d720322 100644 --- a/pyload/plugins/account/DepositfilesCom.py +++ b/pyload/plugins/account/DepositfilesCom.py @@ -8,26 +8,28 @@ from pyload.plugins.base.Account import Account class DepositfilesCom(Account): - __name__ = "DepositfilesCom" - __type__ = "account" + __name__ = "DepositfilesCom" + __type__ = "account" __version__ = "0.3" __description__ = """Depositfiles.com account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de"), - ("stickell", "l.stickell@yahoo.it"), - ("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de"), + ("stickell", "l.stickell@yahoo.it"), + ("Walter Purcaro", "vuolter@gmail.com")] def loadAccountInfo(self, user, req): - src = req.load("https://dfiles.eu/de/gold/") - validuntil = re.search(r"Sie haben Gold Zugang bis: <b>(.*?)</b></div>", src).group(1) + html = req.load("https://dfiles.eu/de/gold/") + validuntil = re.search(r"Sie haben Gold Zugang bis: <b>(.*?)</b></div>", html).group(1) validuntil = int(mktime(strptime(validuntil, "%Y-%m-%d %H:%M:%S"))) return {"validuntil": validuntil, "trafficleft": -1} + def login(self, user, data, req): - src = req.load("https://dfiles.eu/de/login.php", get={"return": "/de/gold/payment.php"}, - post={"login": user, "password": data['password']}) - if r'<div class="error_message">Sie haben eine falsche Benutzername-Passwort-Kombination verwendet.</div>' in src: + html = req.load("https://dfiles.eu/de/login.php", get={"return": "/de/gold/payment.php"}, + post={"login": user, "password": data['password']}) + if r'<div class="error_message">Sie haben eine falsche Benutzername-Passwort-Kombination verwendet.</div>' in html: self.wrongPassword() diff --git a/pyload/plugins/account/DevhostSt.py b/pyload/plugins/account/DevhostSt.py index 4d615cc68..07eaf339a 100644 --- a/pyload/plugins/account/DevhostSt.py +++ b/pyload/plugins/account/DevhostSt.py @@ -9,18 +9,19 @@ from pyload.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DevhostSt(SimpleHoster): - __name__ = "DevhostSt" - __type__ = "hoster" - __version__ = "0.02" + __name__ = "DevhostSt" + __type__ = "hoster" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?d-h\.st/(?!users/)\w{3}' __description__ = """d-h.st hoster plugin""" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] + __license__ = "GPLv3" + __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] - FILE_NAME_PATTERN = r'>Filename:</span> <div title="(?P<N>.+?)"' - FILE_SIZE_PATTERN = r'>Size:</span> (?P<S>[\d.]+) (?P<U>\w+)' + NAME_PATTERN = r'>Filename:</span> <div title="(?P<N>.+?)"' + SIZE_PATTERN = r'>Size:</span> (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>File Not Found<' LINK_PATTERN = r'id="downloadfile" href="(.+?)"' @@ -34,15 +35,14 @@ class DevhostSt(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error(_("Download link not found")) dl_url = m.group(1) - self.logDebug("Download URL = " + dl_url) self.download(dl_url, disposition=True) check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error(_("Downloaded file is an html page")) getInfo = create_getInfo(DevhostSt) diff --git a/pyload/plugins/account/DevhostStFolder.py b/pyload/plugins/account/DevhostStFolder.py index 59d293182..51142fde9 100644 --- a/pyload/plugins/account/DevhostStFolder.py +++ b/pyload/plugins/account/DevhostStFolder.py @@ -11,22 +11,28 @@ from pyload.plugins.internal.SimpleCrypter import SimpleCrypter class DevhostStFolder(SimpleCrypter): - __name__ = "DevhostStFolder" - __type__ = "crypter" - __version__ = "0.02" + __name__ = "DevhostStFolder" + __type__ = "crypter" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?' + __config__ = [("use_subfolder", "bool", "Save package to subfolder", True), + ("subfolder_per_package", "bool", "Create a subfolder for each package", True)] __description__ = """d-h.st folder decrypter plugin""" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), - ("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), + ("Walter Purcaro", "vuolter@gmail.com")] LINK_PATTERN = r'(?:/> |;">)<a href="(.+?)"(?!>Back to \w+<)' OFFLINE_PATTERN = r'"/cHP">test\.png<' - def getPackageNameAndFolder(self): + def getFileInfo(self): + if re.search(self.OFFLINE_PATTERN, self.html): + self.offline() + try: id = re.match(self.__pattern__, self.pyfile.url).group('ID') if id == "0": @@ -42,10 +48,10 @@ class DevhostStFolder(SimpleCrypter): name = folder = m.group(1) except Exception, e: - self.logDebug(str(e)) + self.logDebug(e) name = folder = re.match(self.__pattern__, self.pyfile.url).group('USER') - return name, folder + return {'name': name, 'folder': folder} def getLinks(self): diff --git a/pyload/plugins/account/DropboxCom.py b/pyload/plugins/account/DropboxCom.py index 639e2be9c..03e654e89 100644 --- a/pyload/plugins/account/DropboxCom.py +++ b/pyload/plugins/account/DropboxCom.py @@ -6,18 +6,19 @@ from pyload.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DropboxCom(SimpleHoster): - __name__ = "DropboxCom" - __type__ = "hoster" - __version__ = "0.02" + __name__ = "DropboxCom" + __type__ = "hoster" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?dropbox\.com/.+' __description__ = """Dropbox.com hoster plugin""" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] + __license__ = "GPLv3" + __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] - FILE_NAME_PATTERN = r'<title>Dropbox - (?P<N>.+?)<' - FILE_SIZE_PATTERN = r' · (?P<S>[\d,]+) (?P<U>\w+)' + NAME_PATTERN = r'<title>Dropbox - (?P<N>.+?)<' + SIZE_PATTERN = r' · (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'<title>Dropbox - (404|Shared link error)<' @@ -35,7 +36,7 @@ class DropboxCom(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error(_("Downloaded file is an html page")) getInfo = create_getInfo(DropboxCom) diff --git a/pyload/plugins/account/EasybytezCom.py b/pyload/plugins/account/EasybytezCom.py index bb4948811..f368840ef 100644 --- a/pyload/plugins/account/EasybytezCom.py +++ b/pyload/plugins/account/EasybytezCom.py @@ -4,53 +4,19 @@ import re from time import mktime, strptime, gmtime -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount from pyload.utils import parseFileSize -class EasybytezCom(XFSPAccount): - __name__ = "EasybytezCom" - __type__ = "account" - __version__ = "0.07" +class EasybytezCom(XFSAccount): + __name__ = "EasybytezCom" + __type__ = "account" + __version__ = "0.10" __description__ = """EasyBytez.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("guidobelix", "guidobelix@hotmail.it")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.easybytez.com/" - - - def loadAccountInfo(self, user, req): - html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) - - validuntil = None - trafficleft = None - premium = False - - m = re.search(self.VALID_UNTIL_PATTERN, html) - if m: - expiredate = m.group(1) - self.logDebug("Expire date: " + expiredate) - - try: - validuntil = mktime(strptime(expiredate, "%d %B %Y")) - except Exception, e: - self.logError(e) - - if validuntil > mktime(gmtime()): - premium = True - trafficleft = -1 - else: - premium = False - validuntil = -1 - - m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - if m: - trafficleft = m.group(1) - if "Unlimited" in trafficleft: - trafficleft = -1 - else: - trafficleft = parseFileSize(trafficleft) / 1024 - - return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + HOSTER_DOMAIN = "easybytez.com" diff --git a/pyload/plugins/account/EuroshareEu.py b/pyload/plugins/account/EuroshareEu.py index c1103afba..e3ed51464 100644 --- a/pyload/plugins/account/EuroshareEu.py +++ b/pyload/plugins/account/EuroshareEu.py @@ -7,12 +7,13 @@ from pyload.plugins.base.Account import Account class EuroshareEu(Account): - __name__ = "EuroshareEu" - __type__ = "account" + __name__ = "EuroshareEu" + __type__ = "account" __version__ = "0.01" __description__ = """Euroshare.eu account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] def loadAccountInfo(self, user, req): @@ -28,8 +29,8 @@ class EuroshareEu(Account): return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} - def login(self, user, data, req): + def login(self, user, data, req): html = req.load('http://euroshare.eu/customer-zone/login/', post={ "trvale": "1", "login": user, diff --git a/pyload/plugins/account/FastixRu.py b/pyload/plugins/account/FastixRu.py index 2c7353920..6dacb8b11 100644 --- a/pyload/plugins/account/FastixRu.py +++ b/pyload/plugins/account/FastixRu.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class FastixRu(Account): - __name__ = "FastixRu" - __type__ = "account" + __name__ = "FastixRu" + __type__ = "account" __version__ = "0.02" __description__ = """Fastix account plugin""" - __authors__ = [("Massimo Rosamilia", "max@spiritix.eu")] + __license__ = "GPLv3" + __authors__ = [("Massimo Rosamilia", "max@spiritix.eu")] def loadAccountInfo(self, user, req): @@ -26,6 +27,7 @@ class FastixRu(Account): account_info = {"validuntil": None, "trafficleft": None, "premium": False} return account_info + def login(self, user, data, req): page = req.load("http://fastix.ru/api_v2/?sub=get_apikey&email=%s&password=%s" % (user, data['password'])) api = json_loads(page) diff --git a/pyload/plugins/account/FastshareCz.py b/pyload/plugins/account/FastshareCz.py index d4ef08c2b..1a7dff4b1 100644 --- a/pyload/plugins/account/FastshareCz.py +++ b/pyload/plugins/account/FastshareCz.py @@ -1,42 +1,53 @@ # -*- coding: utf-8 -*- import re + from pyload.plugins.base.Account import Account -from pyload.utils import parseFileSize +from module.utils import parseFileSize class FastshareCz(Account): - __name__ = "FastshareCz" - __type__ = "account" - __version__ = "0.03" + __name__ = "FastshareCz" + __type__ = "account" + __version__ = "0.05" __description__ = """Fastshare.cz account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("stickell", "l.stickell@yahoo.it")] - CREDIT_PATTERN = r'(?:Kredit|Credit)\s*</td>\s*<td[^>]*>([\d. \w]+) ' + CREDIT_PATTERN = r'My account\s*\((.+?)\)' def loadAccountInfo(self, user, req): + validuntil = None + trafficleft = None + premium = None + html = req.load("http://www.fastshare.cz/user", decode=True) m = re.search(self.CREDIT_PATTERN, html) if m: - trafficleft = parseFileSize(m.group(1)) / 1024 - premium = True if trafficleft else False + trafficleft = self.parseTraffic(m.group(1)) + + if trafficleft: + premium = True + validuntil = -1 else: - trafficleft = None premium = False - return {"validuntil": -1, "trafficleft": trafficleft, "premium": premium} + 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={ - "heslo": data['password'], - "login": user - }, decode=True) - if u'>Špatné uživatelské jméno nebo heslo.<' in html: + 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/pyload/plugins/account/File4safeCom.py b/pyload/plugins/account/File4safeCom.py index ffc2fc26d..20053d895 100644 --- a/pyload/plugins/account/File4safeCom.py +++ b/pyload/plugins/account/File4safeCom.py @@ -1,18 +1,18 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class File4safeCom(XFSPAccount): - __name__ = "File4safeCom" - __type__ = "account" - __version__ = "0.02" +class File4safeCom(XFSAccount): + __name__ = "File4safeCom" + __type__ = "account" + __version__ = "0.04" __description__ = """File4safe.com account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] - HOSTER_URL = "http://www.file4safe.com/" + HOSTER_DOMAIN = "file4safe.com" LOGIN_FAIL_PATTERN = r'input_login' - PREMIUM_PATTERN = r'Extend Premium' diff --git a/pyload/plugins/account/FileParadoxIn.py b/pyload/plugins/account/FileParadoxIn.py index f36456da0..c12d99d6a 100644 --- a/pyload/plugins/account/FileParadoxIn.py +++ b/pyload/plugins/account/FileParadoxIn.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class FileParadoxIn(XFSPAccount): - __name__ = "FileParadoxIn" - __type__ = "account" - __version__ = "0.01" +class FileParadoxIn(XFSAccount): + __name__ = "FileParadoxIn" + __type__ = "account" + __version__ = "0.02" __description__ = """FileParadox.in account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.fileparadox.in/" + HOSTER_DOMAIN = "fileparadox.in" diff --git a/pyload/plugins/account/FilecloudIo.py b/pyload/plugins/account/FilecloudIo.py index 49c74b93d..0d5126fc0 100644 --- a/pyload/plugins/account/FilecloudIo.py +++ b/pyload/plugins/account/FilecloudIo.py @@ -5,25 +5,26 @@ from pyload.utils import json_loads class FilecloudIo(Account): - __name__ = "FilecloudIo" - __type__ = "account" + __name__ = "FilecloudIo" + __type__ = "account" __version__ = "0.02" __description__ = """FilecloudIo account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __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 _ in xrange(5): + for _i in xrange(5): rep = req.load("https://secure.filecloud.io/api-fetch_apikey.api", post={"username": user, "password": self.accounts[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") + self.logError(_("Wrong username or password")) return {"valid": False, "premium": False} else: return {"premium": False} @@ -39,8 +40,9 @@ class FilecloudIo(Account): else: return {"premium": False} + def login(self, user, data, req): - req.cj.setCookie("secure.filecloud.io", "lang", "en") + req.cj.setCookie(".secure.filecloud.io", "lang", "en") html = req.load('https://secure.filecloud.io/user-login.html') if not hasattr(self, "form_data"): diff --git a/pyload/plugins/account/FilefactoryCom.py b/pyload/plugins/account/FilefactoryCom.py index cf42f2666..7eedb59a1 100644 --- a/pyload/plugins/account/FilefactoryCom.py +++ b/pyload/plugins/account/FilefactoryCom.py @@ -9,13 +9,14 @@ from pyload.plugins.base.Account import Account class FilefactoryCom(Account): - __name__ = "FilefactoryCom" - __type__ = "account" + __name__ = "FilefactoryCom" + __type__ = "account" __version__ = "0.14" __description__ = """Filefactory.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __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>' @@ -35,6 +36,7 @@ class FilefactoryCom(Account): 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") diff --git a/pyload/plugins/account/FilejungleCom.py b/pyload/plugins/account/FilejungleCom.py index d63b0c273..c8b7bb655 100644 --- a/pyload/plugins/account/FilejungleCom.py +++ b/pyload/plugins/account/FilejungleCom.py @@ -7,18 +7,19 @@ from pyload.plugins.base.Account import Account class FilejungleCom(Account): - __name__ = "FilejungleCom" - __type__ = "account" + __name__ = "FilejungleCom" + __type__ = "account" __version__ = "0.11" __description__ = """Filejungle.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] login_timeout = 60 URL = "http://filejungle.com/" - TRAFFIC_LEFT_PATTERN = r'"/extend_premium\.php">Until (\d+ [A-Za-z]+ \d+)<br' + 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">' @@ -34,6 +35,7 @@ class FilejungleCom(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): html = req.load(self.URL + "login.php", post={ "loginUserName": user, diff --git a/pyload/plugins/account/FileomCom.py b/pyload/plugins/account/FileomCom.py index 3ca32416d..7c743f56a 100644 --- a/pyload/plugins/account/FileomCom.py +++ b/pyload/plugins/account/FileomCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class FileomCom(XFSPAccount): - __name__ = "FileomCom" - __type__ = "account" - __version__ = "0.01" +class FileomCom(XFSAccount): + __name__ = "FileomCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Fileom.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.fileom.com/" + HOSTER_DOMAIN = "fileom.com" diff --git a/pyload/plugins/account/FilerNet.py b/pyload/plugins/account/FilerNet.py index 1f08d2c1a..193dd6eb3 100644 --- a/pyload/plugins/account/FilerNet.py +++ b/pyload/plugins/account/FilerNet.py @@ -4,20 +4,20 @@ import re import time from pyload.plugins.base.Account import Account -from pyload.utils import parseFileSize class FilerNet(Account): - __name__ = "FilerNet" - __type__ = "account" - __version__ = "0.01" + __name__ = "FilerNet" + __type__ = "account" + __version__ = "0.02" __description__ = """Filer.net account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __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>" + 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' @@ -33,12 +33,13 @@ class FilerNet(Account): traffic = re.search(self.TRAFFIC_PATTERN, html) if until and traffic: validuntil = int(time.mktime(time.strptime(until.group(1), "%d.%m.%Y %H:%M:%S"))) - trafficleft = parseFileSize(traffic.group(1)) / 1024 + trafficleft = self.parseTraffic(traffic.group(1)) return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} else: - self.logError("Unable to retrieve account information - Plugin may be out of date") + 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) diff --git a/pyload/plugins/account/FilerioCom.py b/pyload/plugins/account/FilerioCom.py index badc14a56..4c6755293 100644 --- a/pyload/plugins/account/FilerioCom.py +++ b/pyload/plugins/account/FilerioCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class FilerioCom(XFSPAccount): - __name__ = "FilerioCom" - __type__ = "account" - __version__ = "0.02" +class FilerioCom(XFSAccount): + __name__ = "FilerioCom" + __type__ = "account" + __version__ = "0.03" __description__ = """FileRio.in account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.filerio.in/" + HOSTER_DOMAIN = "filerio.in" diff --git a/pyload/plugins/account/FilesMailRu.py b/pyload/plugins/account/FilesMailRu.py index f258ead2f..c8d8d9270 100644 --- a/pyload/plugins/account/FilesMailRu.py +++ b/pyload/plugins/account/FilesMailRu.py @@ -4,17 +4,19 @@ from pyload.plugins.base.Account import Account class FilesMailRu(Account): - __name__ = "FilesMailRu" - __type__ = "account" + __name__ = "FilesMailRu" + __type__ = "account" __version__ = "0.1" __description__ = """Filesmail.ru account plugin""" - __authors__ = [("RaNaN", "RaNaN@pyload.org")] + __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("@") diff --git a/pyload/plugins/account/FileserveCom.py b/pyload/plugins/account/FileserveCom.py index dd5132734..773fc9117 100644 --- a/pyload/plugins/account/FileserveCom.py +++ b/pyload/plugins/account/FileserveCom.py @@ -7,12 +7,13 @@ from pyload.utils import json_loads class FileserveCom(Account): - __name__ = "FileserveCom" - __type__ = "account" + __name__ = "FileserveCom" + __type__ = "account" __version__ = "0.2" __description__ = """Fileserve.com account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de")] def loadAccountInfo(self, user, req): @@ -28,6 +29,7 @@ class FileserveCom(Account): else: return {"premium": False, "trafficleft": None, "validuntil": None} + def login(self, user, data, req): page = req.load("http://app.fileserve.com/api/login/", post={"username": user, "password": data['password'], "submit": "Submit+Query"}) diff --git a/pyload/plugins/account/FourSharedCom.py b/pyload/plugins/account/FourSharedCom.py index 6cc69a88d..766998ccc 100644 --- a/pyload/plugins/account/FourSharedCom.py +++ b/pyload/plugins/account/FourSharedCom.py @@ -5,28 +5,29 @@ from pyload.utils import json_loads class FourSharedCom(Account): - __name__ = "FourSharedCom" - __type__ = "account" + __name__ = "FourSharedCom" + __type__ = "account" __version__ = "0.03" __description__ = """FourShared.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] - + __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") - response = 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"}) - - if 'Please log in to access your 4shared account' in response: + 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"}) + + if 'Please log in to access your 4shared account' in res: self.wrongPassword() diff --git a/pyload/plugins/account/FreakshareCom.py b/pyload/plugins/account/FreakshareCom.py index 85d813e58..742ede902 100644 --- a/pyload/plugins/account/FreakshareCom.py +++ b/pyload/plugins/account/FreakshareCom.py @@ -1,38 +1,43 @@ # -*- coding: utf-8 -*- import re + from time import strptime, mktime from pyload.plugins.base.Account import Account class FreakshareCom(Account): - __name__ = "FreakshareCom" - __type__ = "account" - __version__ = "0.1" + __name__ = "FreakshareCom" + __type__ = "account" + __version__ = "0.11" __description__ = """Freakshare.com account plugin""" - __authors__ = [("RaNaN", "RaNaN@pyload.org")] + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org")] def loadAccountInfo(self, user, req): page = req.load("http://freakshare.com/") - validuntil = r"ltig bis:</td>\s*<td><b>([0-9 \-:.]+)</b></td>" - validuntil = re.search(validuntil, page, re.MULTILINE) + validuntil = r'ltig bis:</td>\s*<td><b>([\d.:-]+)</b></td>' + validuntil = re.search(validuntil, page, re.M) validuntil = validuntil.group(1).strip() validuntil = mktime(strptime(validuntil, "%d.%m.%Y - %H:%M")) - traffic = r"Traffic verbleibend:</td>\s*<td>([^<]+)" - traffic = re.search(traffic, page, re.MULTILINE) + traffic = r'Traffic verbleibend:</td>\s*<td>([^<]+)' + traffic = re.search(traffic, page, re.M) traffic = traffic.group(1).strip() traffic = self.parseTraffic(traffic) return {"validuntil": validuntil, "trafficleft": traffic} + def login(self, user, data, req): + req.load("http://freakshare.com/index.php?language=EN") + page = req.load("http://freakshare.com/login.html", None, {"submit": "Login", "user": user, "pass": data['password']}, cookies=True) - if "Falsche Logindaten!" in page or "Wrong Username or Password!" in page: + if ">Wrong Username or Password" in page: self.wrongPassword() diff --git a/pyload/plugins/account/FreeWayMe.py b/pyload/plugins/account/FreeWayMe.py index 28e5c7b80..2c48d54f4 100644 --- a/pyload/plugins/account/FreeWayMe.py +++ b/pyload/plugins/account/FreeWayMe.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class FreeWayMe(Account): - __name__ = "FreeWayMe" - __type__ = "account" + __name__ = "FreeWayMe" + __type__ = "account" __version__ = "0.11" __description__ = """FreeWayMe account plugin""" - __authors__ = [("Nicolas Giese", "james@free-way.me")] + __license__ = "GPLv3" + __authors__ = [("Nicolas Giese", "james@free-way.me")] def loadAccountInfo(self, user, req): @@ -31,9 +32,11 @@ class FreeWayMe(Account): return account_info + def getpw(self, user): return self.accounts[user]['password'] + def login(self, user, data, req): status = self.getAccountStatus(user, req) @@ -41,6 +44,7 @@ class FreeWayMe(Account): 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.accounts[user]['password']}) diff --git a/pyload/plugins/account/FshareVn.py b/pyload/plugins/account/FshareVn.py index 84130c11b..b449018bc 100644 --- a/pyload/plugins/account/FshareVn.py +++ b/pyload/plugins/account/FshareVn.py @@ -8,18 +8,19 @@ from pyload.plugins.base.Account import Account class FshareVn(Account): - __name__ = "FshareVn" - __type__ = "account" + __name__ = "FshareVn" + __type__ = "account" __version__ = "0.07" __description__ = """Fshare.vn account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __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[^>]*>([0-9.]+) ([kKMG])B</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>' @@ -43,6 +44,7 @@ class FshareVn(Account): return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): req.http.c.setopt(REFERER, "https://www.fshare.vn/login.php") @@ -55,6 +57,7 @@ class FshareVn(Account): if not re.search(r'<img\s+alt="VIP"', html): self.wrongPassword() + def getTrafficLeft(self): m = re.search(self.TRAFFIC_LEFT_PATTERN, html) return float(m.group(1)) * 1024 ** {'k': 0, 'K': 0, 'M': 1, 'G': 2}[m.group(2)] if m else 0 diff --git a/pyload/plugins/account/Ftp.py b/pyload/plugins/account/Ftp.py index 3917b59e8..90a8a8768 100644 --- a/pyload/plugins/account/Ftp.py +++ b/pyload/plugins/account/Ftp.py @@ -4,12 +4,13 @@ from pyload.plugins.base.Account import Account class Ftp(Account): - __name__ = "Ftp" - __type__ = "account" + __name__ = "Ftp" + __type__ = "account" __version__ = "0.01" __description__ = """Ftp dummy account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] login_timeout = info_threshold = -1 #: Unlimited diff --git a/pyload/plugins/account/HellshareCz.py b/pyload/plugins/account/HellshareCz.py index 1d033e9f3..cd02c8462 100644 --- a/pyload/plugins/account/HellshareCz.py +++ b/pyload/plugins/account/HellshareCz.py @@ -7,12 +7,13 @@ from pyload.plugins.base.Account import Account class HellshareCz(Account): - __name__ = "HellshareCz" - __type__ = "account" + __name__ = "HellshareCz" + __type__ = "account" __version__ = "0.14" __description__ = """Hellshare.cz account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __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>' @@ -43,19 +44,20 @@ class HellshareCz(Account): trafficleft = int(credit) * 1024 validuntil = -1 except Exception, e: - self.logError("Unable to parse credit info", 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/') 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) + 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) diff --git a/pyload/plugins/account/Http.py b/pyload/plugins/account/Http.py index 798d154e0..3f3d4d66f 100644 --- a/pyload/plugins/account/Http.py +++ b/pyload/plugins/account/Http.py @@ -4,12 +4,13 @@ from pyload.plugins.base.Account import Account class Http(Account): - __name__ = "Http" - __type__ = "account" + __name__ = "Http" + __type__ = "account" __version__ = "0.01" __description__ = """Http dummy account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] login_timeout = info_threshold = -1 #: Unlimited diff --git a/pyload/plugins/account/HugefilesNet.py b/pyload/plugins/account/HugefilesNet.py index d9828e333..5da3bbc37 100644 --- a/pyload/plugins/account/HugefilesNet.py +++ b/pyload/plugins/account/HugefilesNet.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class HugefilesNet(XFSPAccount): - __name__ = "HugefilesNet" - __type__ = "account" - __version__ = "0.01" +class HugefilesNet(XFSAccount): + __name__ = "HugefilesNet" + __type__ = "account" + __version__ = "0.02" __description__ = """Hugefiles.net account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.hugefiles.net/" + HOSTER_DOMAIN = "hugefiles.net" diff --git a/pyload/plugins/account/HundredEightyUploadCom.py b/pyload/plugins/account/HundredEightyUploadCom.py index 77768fbef..39f91a8af 100644 --- a/pyload/plugins/account/HundredEightyUploadCom.py +++ b/pyload/plugins/account/HundredEightyUploadCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class HundredEightyUploadCom(XFSPAccount): - __name__ = "HundredEightyUploadCom" - __type__ = "account" - __version__ = "0.01" +class HundredEightyUploadCom(XFSAccount): + __name__ = "HundredEightyUploadCom" + __type__ = "account" + __version__ = "0.02" __description__ = """180upload.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.180upload.com/" + HOSTER_DOMAIN = "180upload.com" diff --git a/pyload/plugins/account/KingfilesNet.py b/pyload/plugins/account/KingfilesNet.py index 1ec0f8d8a..ebd5baec3 100644 --- a/pyload/plugins/account/KingfilesNet.py +++ b/pyload/plugins/account/KingfilesNet.py @@ -7,19 +7,20 @@ from pyload.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class KingfilesNet(SimpleHoster): - __name__ = "KingfilesNet" - __type__ = "hoster" - __version__ = "0.01" + __name__ = "KingfilesNet" + __type__ = "hoster" + __version__ = "0.04" __pattern__ = r'http://(?:www\.)?kingfiles\.net/(?P<ID>\w{12})' __description__ = """Kingfiles.net hoster plugin""" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), - ("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), + ("Walter Purcaro", "vuolter@gmail.com")] - FILE_NAME_PATTERN = r'name="fname" value="(?P<N>.+?)">' - FILE_SIZE_PATTERN = r'>Size: .+?">(?P<S>[\d.]+) (?P<U>\w+)' + NAME_PATTERN = r'name="fname" value="(?P<N>.+?)">' + SIZE_PATTERN = r'>Size: .+?">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>(File Not Found</b><br><br>|File Not Found</h2>)' @@ -37,31 +38,26 @@ class KingfilesNet(SimpleHoster): # Click the free user button post_data = {'op': "download1", 'usr_login': "", - 'id': file_info['ID'], + 'id': self.info['ID'], 'fname': self.pyfile.name, 'referer': "", 'method_free': "+"} - b = self.load(self.pyfile.url, post=post_data, cookies=True, decode=True) - solvemedia = SolveMedia(self) - - captcha_key = solvemedia.detect_key() - if captcha_key is None: - self.parseError("SolveMedia key not found") + self.html = self.load(self.pyfile.url, post=post_data, cookies=True, decode=True) - self.logDebug("captcha_key", captcha_key) - captcha_challenge, captcha_response = solvemedia.challenge(captcha_key) + solvemedia = SolveMedia(self) + captcha_challenge, captcha_response = solvemedia.challenge() # Make the downloadlink appear and load the file - m = re.search(self.RAND_ID_PATTERN, b) + m = re.search(self.RAND_ID_PATTERN, self.html) if m is None: - self.parseError("Random key not found") + self.error(_("Random key not found")) rand = m.group(1) - self.logDebug("rand", rand) + self.logDebug("rand = ", rand) post_data = {'op': "download2", - 'id': file_id, + 'id': self.info['ID'], 'rand': rand, 'referer': self.pyfile.url, 'method_free': "+", @@ -69,18 +65,18 @@ class KingfilesNet(SimpleHoster): 'adcopy_response': captcha_response, 'adcopy_challenge': captcha_challenge, 'down_direct': "1"} - c = self.load(self.pyfile.url, post=post_data, cookies=True, decode=True) - m = re.search(self.LINK_PATTERN, c) + self.html = self.load(self.pyfile.url, post=post_data, cookies=True, decode=True) + + m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download url not found") + self.error(_("Download url not found")) - dl_url = m.group(1) - self.download(dl_url, cookies=True, disposition=True) + self.download(m.group(1), cookies=True, disposition=True) check = self.checkDownload({'html': re.compile("<html>")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error(_("Downloaded file is an html page")) getInfo = create_getInfo(KingfilesNet) diff --git a/pyload/plugins/account/LetitbitNet.py b/pyload/plugins/account/LetitbitNet.py index a914693fd..41823418d 100644 --- a/pyload/plugins/account/LetitbitNet.py +++ b/pyload/plugins/account/LetitbitNet.py @@ -5,12 +5,13 @@ from pyload.plugins.base.Account import Account class LetitbitNet(Account): - __name__ = "LetitbitNet" - __type__ = "account" + __name__ = "LetitbitNet" + __type__ = "account" __version__ = "0.01" __description__ = """Letitbit.net account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] def loadAccountInfo(self, user, req): @@ -27,6 +28,7 @@ class LetitbitNet(Account): 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.") + self.logInfo(_("You must use your API KEY as username and the PREMIUM KEY as password")) diff --git a/pyload/plugins/account/LinksnappyCom.py b/pyload/plugins/account/LinksnappyCom.py index 3d0ef7bca..912c2b4cb 100644 --- a/pyload/plugins/account/LinksnappyCom.py +++ b/pyload/plugins/account/LinksnappyCom.py @@ -7,12 +7,13 @@ from pyload.utils import json_loads class LinksnappyCom(Account): - __name__ = "LinksnappyCom" - __type__ = "account" + __name__ = "LinksnappyCom" + __type__ = "account" __version__ = "0.02" __description__ = """Linksnappy.com account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] def loadAccountInfo(self, user, req): @@ -40,6 +41,7 @@ class LinksnappyCom(Account): 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()}) diff --git a/pyload/plugins/account/LomafileCom.py b/pyload/plugins/account/LomafileCom.py index b1faf3bf6..cfd21679c 100644 --- a/pyload/plugins/account/LomafileCom.py +++ b/pyload/plugins/account/LomafileCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class LomafileCom(XFSPAccount): - __name__ = "LomafileCom" - __type__ = "account" - __version__ = "0.01" +class LomafileCom(XFSAccount): + __name__ = "LomafileCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Lomafile.com account plugin""" - __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.lomafile.com/" + HOSTER_DOMAIN = "lomafile.com" diff --git a/pyload/plugins/account/MegaDebridEu.py b/pyload/plugins/account/MegaDebridEu.py index a408690c6..50f24b83d 100644 --- a/pyload/plugins/account/MegaDebridEu.py +++ b/pyload/plugins/account/MegaDebridEu.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class MegaDebridEu(Account): - __name__ = "MegaDebridEu" - __type__ = "account" + __name__ = "MegaDebridEu" + __type__ = "account" __version__ = "0.2" __description__ = """mega-debrid.eu account plugin""" - __authors__ = [("D.Ducatel", "dducatel@je-geek.fr")] + __license__ = "GPLv3" + __authors__ = [("D.Ducatel", "dducatel@je-geek.fr")] # Define the base URL of MegaDebrid api @@ -21,17 +22,18 @@ class MegaDebridEu(Account): data = self.getAccountData(user) jsonResponse = req.load(self.API_URL, get={'action': 'connectUser', 'login': user, 'password': data['password']}) - response = json_loads(jsonResponse) + res = json_loads(jsonResponse) - if response['response_code'] == "ok": - return {"premium": True, "validuntil": float(response['vip_end']), "status": True} + if res['response_code'] == "ok": + return {"premium": True, "validuntil": float(res['vip_end']), "status": True} else: - self.logError(response) + 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']}) - response = json_loads(jsonResponse) - if response['response_code'] != "ok": + res = json_loads(jsonResponse) + if res['response_code'] != "ok": self.wrongPassword() diff --git a/pyload/plugins/account/MegasharesCom.py b/pyload/plugins/account/MegasharesCom.py index f9bd6553d..5931e4e7e 100644 --- a/pyload/plugins/account/MegasharesCom.py +++ b/pyload/plugins/account/MegasharesCom.py @@ -7,12 +7,13 @@ from pyload.plugins.base.Account import Account class MegasharesCom(Account): - __name__ = "MegasharesCom" - __type__ = "account" + __name__ = "MegasharesCom" + __type__ = "account" __version__ = "0.02" __description__ = """Megashares.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __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>' @@ -34,6 +35,7 @@ class MegasharesCom(Account): 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": "", diff --git a/pyload/plugins/account/MovReelCom.py b/pyload/plugins/account/MovReelCom.py index ba71bec2a..6128cddc8 100644 --- a/pyload/plugins/account/MovReelCom.py +++ b/pyload/plugins/account/MovReelCom.py @@ -1,18 +1,19 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class MovReelCom(XFSPAccount): - __name__ = "MovReelCom" - __type__ = "account" - __version__ = "0.02" +class MovReelCom(XFSAccount): + __name__ = "MovReelCom" + __type__ = "account" + __version__ = "0.03" __description__ = """Movreel.com account plugin""" - __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] + __license__ = "GPLv3" + __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] login_timeout = 60 info_threshold = 30 - HOSTER_URL = "http://www.movreel.com/" + HOSTER_DOMAIN = "movreel.com" diff --git a/pyload/plugins/account/MultishareCz.py b/pyload/plugins/account/MultishareCz.py index e882d0eab..9eb0b50b2 100644 --- a/pyload/plugins/account/MultishareCz.py +++ b/pyload/plugins/account/MultishareCz.py @@ -1,22 +1,21 @@ # -*- coding: utf-8 -*- -from pyload.plugins.base.Account import Account -#from time import mktime, strptime -#from pycurl import REFERER import re -from pyload.utils import parseFileSize + +from module.plugins.Account import Account class MultishareCz(Account): - __name__ = "MultishareCz" - __type__ = "account" - __version__ = "0.02" + __name__ = "MultishareCz" + __type__ = "account" + __version__ = "0.03" __description__ = """Multishare.cz account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[0-9,]+) (?P<U>\w+)</strong>' + 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="([^"]+)">' @@ -25,7 +24,7 @@ class MultishareCz(Account): html = req.load("http://www.multishare.cz/profil/", decode=True) m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - trafficleft = parseFileSize(m.group('S'), m.group('U')) / 1024 if m else 0 + 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) @@ -33,6 +32,7 @@ class MultishareCz(Account): 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", diff --git a/pyload/plugins/account/MyfastfileCom.py b/pyload/plugins/account/MyfastfileCom.py index 559b1bd3b..33cc3a694 100644 --- a/pyload/plugins/account/MyfastfileCom.py +++ b/pyload/plugins/account/MyfastfileCom.py @@ -7,13 +7,13 @@ from pyload.utils import json_loads class MyfastfileCom(Account): - __name__ = "MyfastfileCom" - __type__ = "account" + __name__ = "MyfastfileCom" + __type__ = "account" __version__ = "0.02" __description__ = """Myfastfile.com account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] - + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] def loadAccountInfo(self, user, req): @@ -21,7 +21,8 @@ class MyfastfileCom(Account): validuntil = int(time() + self.json_data['days_left'] * 24 * 60 * 60) return {"premium": True, "validuntil": validuntil, "trafficleft": -1} else: - self.logError("Unable to get account information") + 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 @@ -30,5 +31,5 @@ class MyfastfileCom(Account): 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.logError(_('Invalid login. The password to use is the API-Password you find in your "My Account" page')) self.wrongPassword() diff --git a/pyload/plugins/account/NetloadIn.py b/pyload/plugins/account/NetloadIn.py index fc3c0ac60..2d6ae6eea 100644 --- a/pyload/plugins/account/NetloadIn.py +++ b/pyload/plugins/account/NetloadIn.py @@ -7,18 +7,19 @@ from pyload.plugins.base.Account import Account class NetloadIn(Account): - __name__ = "NetloadIn" - __type__ = "account" + __name__ = "NetloadIn" + __type__ = "account" __version__ = "0.22" __description__ = """Netload.in account plugin""" - __authors__ = [("RaNaN", "RaNaN@pyload.org"), - ("CryNickSystems", "webmaster@pcProfil.de")] + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org"), + ("CryNickSystems", "webmaster@pcProfil.de")] def loadAccountInfo(self, user, req): page = req.load("http://netload.in/index.php?id=2&lang=de") - left = r">(\d+) (Tag|Tage), (\d+) Stunden<" + left = r'>(\d+) (Tag|Tage), (\d+) Stunden<' left = re.search(left, page) if left: validuntil = time() + int(left.group(1)) * 24 * 60 * 60 + int(left.group(3)) * 60 * 60 @@ -30,6 +31,7 @@ class NetloadIn(Account): trafficleft = None return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): page = req.load("http://netload.in/index.php", None, {"txtuser": user, "txtpass": data['password'], "txtcheck": "login", "txtlogin": "Login"}, diff --git a/pyload/plugins/account/NosuploadCom.py b/pyload/plugins/account/NosuploadCom.py index b02ae50e8..e523ee2f4 100644 --- a/pyload/plugins/account/NosuploadCom.py +++ b/pyload/plugins/account/NosuploadCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class NosuploadCom(XFSPAccount): - __name__ = "NosuploadCom" - __type__ = "account" - __version__ = "0.01" +class NosuploadCom(XFSAccount): + __name__ = "NosuploadCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Nosupload.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.nosupload.com/" + HOSTER_DOMAIN = "nosupload.com" diff --git a/pyload/plugins/account/NovafileCom.py b/pyload/plugins/account/NovafileCom.py index fa5e28946..ab61bf0fc 100644 --- a/pyload/plugins/account/NovafileCom.py +++ b/pyload/plugins/account/NovafileCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class NovafileCom(XFSPAccount): - __name__ = "NovafileCom" - __type__ = "account" - __version__ = "0.01" +class NovafileCom(XFSAccount): + __name__ = "NovafileCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Novafile.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.novafile.com/" + HOSTER_DOMAIN = "novafile.com" diff --git a/pyload/plugins/account/OboomCom.py b/pyload/plugins/account/OboomCom.py index 205edad32..71663bc3f 100644 --- a/pyload/plugins/account/OboomCom.py +++ b/pyload/plugins/account/OboomCom.py @@ -9,12 +9,13 @@ from pyload.plugins.base.Account import Account class OboomCom(Account): - __name__ = "OboomCom" - __type__ = "account" + __name__ = "OboomCom" + __type__ = "account" __version__ = "0.2" __description__ = """Oboom.com account plugin""" - __authors__ = [("stanley", "stanley.foerster@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("stanley", "stanley.foerster@gmail.com")] def loadAccountData(self, user, req): @@ -23,7 +24,7 @@ class OboomCom(Account): 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.logWarning(_("Failed to log in: %s") % result[1]) self.wrongPassword() return result[1] @@ -52,8 +53,8 @@ class OboomCom(Account): return {'premium': premium, 'validuntil': validUntil, - 'trafficleft': trafficLeft / 1024, - 'maxtraffic': maxTraffic / 1024, + 'trafficleft': trafficLeft, + 'maxtraffic': maxTraffic, 'session': session} diff --git a/pyload/plugins/account/OneFichierCom.py b/pyload/plugins/account/OneFichierCom.py index 5d106a72a..857fd20b5 100644 --- a/pyload/plugins/account/OneFichierCom.py +++ b/pyload/plugins/account/OneFichierCom.py @@ -1,48 +1,55 @@ # -*- coding: utf-8 -*- import re + from time import strptime, mktime + from pycurl import REFERER from pyload.plugins.base.Account import Account class OneFichierCom(Account): - __name__ = "OneFichierCom" - __type__ = "account" - __version__ = "0.1" + __name__ = "OneFichierCom" + __type__ = "account" + __version__ = "0.11" __description__ = """1fichier.com account plugin""" - __authors__ = [("Elrick69", "elrick69[AT]rocketmail[DOT]com")] + __license__ = "GPLv3" + __authors__ = [("Elrick69", "elrick69[AT]rocketmail[DOT]com"), + ("Walter Purcaro", "vuolter@gmail.com")] - VALID_UNTIL_PATTERN = r'You are a premium user until (?P<d>\d{2})/(?P<m>\d{2})/(?P<y>\d{4})' + 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("http://1fichier.com/console/abo.pl") + html = req.load("https://1fichier.com/console/abo.pl") 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 = int(mktime(strptime(validuntil, "%d/%m/%Y"))) - else: - premium = False - validuntil = -1 + expiredate = m.group(1) + self.logDebug("Expire date: " + expiredate) - return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + try: + validuntil = mktime(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, "http://1fichier.com/login.pl?lg=en") + def login(self, user, data, req): + req.http.c.setopt(REFERER, "https://1fichier.com/login.pl?lg=en") - html = req.load("http://1fichier.com/login.pl?lg=en", post={ - "mail": user, - "pass": data['password'], - "Login": "Login"}) + html = req.load("https://1fichier.com/login.pl?lg=en", + post={'mail': user, 'pass': data['password'], 'It': "on", 'purge': "off", 'valider': "Send"}) - if r'<div class="error_message">Invalid username or password.</div>' in html: + if '>Invalid email address' in html or '>Invalid password' in html: self.wrongPassword() diff --git a/pyload/plugins/account/OverLoadMe.py b/pyload/plugins/account/OverLoadMe.py index 514573dfb..d011cf063 100644 --- a/pyload/plugins/account/OverLoadMe.py +++ b/pyload/plugins/account/OverLoadMe.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class OverLoadMe(Account): - __name__ = "OverLoadMe" - __type__ = "account" + __name__ = "OverLoadMe" + __type__ = "account" __version__ = "0.01" __description__ = """Over-Load.me account plugin""" - __authors__ = [("marley", "marley@over-load.me")] + __license__ = "GPLv3" + __authors__ = [("marley", "marley@over-load.me")] def loadAccountInfo(self, user, req): @@ -25,6 +26,7 @@ class OverLoadMe(Account): account_info = {"validuntil": data['expirationunix'], "trafficleft": -1} return account_info + def login(self, user, data, req): jsondata = req.load("https://api.over-load.me/account.php", get={"user": user, "auth": data['password']}).strip() diff --git a/pyload/plugins/account/PremiumTo.py b/pyload/plugins/account/PremiumTo.py index ccb5c4c87..2943ba41c 100644 --- a/pyload/plugins/account/PremiumTo.py +++ b/pyload/plugins/account/PremiumTo.py @@ -4,14 +4,15 @@ from pyload.plugins.base.Account import Account class PremiumTo(Account): - __name__ = "PremiumTo" - __type__ = "account" + __name__ = "PremiumTo" + __type__ = "account" __version__ = "0.04" __description__ = """Premium.to account plugin""" - __authors__ = [("RaNaN", "RaNaN@pyload.org"), - ("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org"), + ("zoidberg", "zoidberg@mujmail.cz"), + ("stickell", "l.stickell@yahoo.it")] @@ -20,7 +21,8 @@ class PremiumTo(Account): get={'username': self.username, 'password': self.password}) traffic = sum(map(int, api_r.split(';'))) - return {"trafficleft": int(traffic) / 1024, "validuntil": -1} + return {"trafficleft": int(traffic), "validuntil": -1} + def login(self, user, data, req): self.username = user diff --git a/pyload/plugins/account/PremiumizeMe.py b/pyload/plugins/account/PremiumizeMe.py index ebc488226..4071e0ad2 100644 --- a/pyload/plugins/account/PremiumizeMe.py +++ b/pyload/plugins/account/PremiumizeMe.py @@ -6,12 +6,13 @@ from pyload.utils import json_loads class PremiumizeMe(Account): - __name__ = "PremiumizeMe" - __type__ = "account" + __name__ = "PremiumizeMe" + __type__ = "account" __version__ = "0.11" __description__ = """Premiumize.me account plugin""" - __authors__ = [("Florian Franzen", "FlorianFranzen@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Florian Franzen", "FlorianFranzen@gmail.com")] def loadAccountInfo(self, user, req): @@ -21,13 +22,14 @@ class PremiumizeMe(Account): # Parse account info account_info = {"validuntil": float(status['result']['expires']), - "trafficleft": max(0, status['result']['trafficleft_bytes'] / 1024)} + "trafficleft": max(0, status['result']['trafficleft_bytes'])} 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) @@ -36,6 +38,7 @@ class PremiumizeMe(Account): 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 diff --git a/pyload/plugins/account/QuickshareCz.py b/pyload/plugins/account/QuickshareCz.py index 32d7f2d8e..18af5f736 100644 --- a/pyload/plugins/account/QuickshareCz.py +++ b/pyload/plugins/account/QuickshareCz.py @@ -1,25 +1,29 @@ # -*- coding: utf-8 -*- import re -from pyload.plugins.base.Account import Account -from pyload.utils import parseFileSize + +from module.plugins.Account import Account class QuickshareCz(Account): - __name__ = "QuickshareCz" - __type__ = "account" - __version__ = "0.01" + __name__ = "QuickshareCz" + __type__ = "account" + __version__ = "0.02" __description__ = """Quickshare.cz account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __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(r'Stav kreditu: <strong>(.+?)</strong>', html) + m = re.search(self.TRAFFIC_LEFT_PATTERN, html) if m: - trafficleft = parseFileSize(m.group(1)) / 1024 + trafficleft = self.parseTraffic(m.group(1)) premium = True if trafficleft else False else: trafficleft = None @@ -27,6 +31,7 @@ class QuickshareCz(Account): 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', diff --git a/pyload/plugins/account/RPNetBiz.py b/pyload/plugins/account/RPNetBiz.py index 6cd6b6d76..442355a8c 100644 --- a/pyload/plugins/account/RPNetBiz.py +++ b/pyload/plugins/account/RPNetBiz.py @@ -5,21 +5,22 @@ from pyload.utils import json_loads class RPNetBiz(Account): - __name__ = "RPNetBiz" - __type__ = "account" + __name__ = "RPNetBiz" + __type__ = "account" __version__ = "0.1" __description__ = """RPNet.biz account plugin""" - __authors__ = [("Dman", "dmanugm@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Dman", "dmanugm@gmail.com")] def loadAccountInfo(self, user, req): # Get account information from rpnet.biz - response = self.getAccountStatus(user, req) + res = self.getAccountStatus(user, req) try: - if response['accountInfo']['isPremium']: + if res['accountInfo']['isPremium']: # Parse account info. Change the trafficleft later to support per host info. - account_info = {"validuntil": int(response['accountInfo']['premiumExpiry']), + account_info = {"validuntil": int(res['accountInfo']['premiumExpiry']), "trafficleft": -1, "premium": True} else: account_info = {"validuntil": None, "trafficleft": None, "premium": False} @@ -30,19 +31,21 @@ class RPNetBiz(Account): return account_info + def login(self, user, data, req): # Get account information from rpnet.biz - response = self.getAccountStatus(user, req) + res = self.getAccountStatus(user, req) - # If we have an error in the response, we have wrong login information - if 'error' in response: + # 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 - response = req.load("https://premium.rpnet.biz/client_api.php", + res = req.load("https://premium.rpnet.biz/client_api.php", get={"username": user, "password": self.accounts[user]['password'], "action": "showAccountInformation"}) - self.logDebug("JSON data: %s" % response) + self.logDebug("JSON data: %s" % res) - return json_loads(response) + return json_loads(res) diff --git a/pyload/plugins/account/RapidgatorNet.py b/pyload/plugins/account/RapidgatorNet.py index 8e26a9df4..ec308e63c 100644 --- a/pyload/plugins/account/RapidgatorNet.py +++ b/pyload/plugins/account/RapidgatorNet.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class RapidgatorNet(Account): - __name__ = "RapidgatorNet" - __type__ = "account" + __name__ = "RapidgatorNet" + __type__ = "account" __version__ = "0.04" __description__ = """Rapidgator.net account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] API_URL = 'http://rapidgator.net/api/user' @@ -30,7 +31,7 @@ class RapidgatorNet(Account): self.scheduleRefresh(user, json['response']['reset_in']) return {"validuntil": json['response']['expire_date'], - "trafficleft": int(json['response']['traffic_left']) / 1024, + "trafficleft": int(json['response']['traffic_left']), "premium": True} else: self.logError(json['response_details']) @@ -39,6 +40,7 @@ class RapidgatorNet(Account): return {"validuntil": None, "trafficleft": None, "premium": False} + def login(self, user, data, req): try: json = req.load('%s/login' % self.API_URL, post={"username": user, "password": data['password']}) diff --git a/pyload/plugins/account/RapidshareCom.py b/pyload/plugins/account/RapidshareCom.py index cd4e313a1..9ebb9a568 100644 --- a/pyload/plugins/account/RapidshareCom.py +++ b/pyload/plugins/account/RapidshareCom.py @@ -4,12 +4,13 @@ from pyload.plugins.base.Account import Account class RapidshareCom(Account): - __name__ = "RapidshareCom" - __type__ = "account" + __name__ = "RapidshareCom" + __type__ = "account" __version__ = "0.22" __description__ = """Rapidshare.com account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de")] def loadAccountInfo(self, user, req): @@ -17,10 +18,10 @@ class RapidshareCom(Account): api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi" api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, "password": data['password'], "withcookie": 1} - src = req.load(api_url_base, cookies=False, get=api_param_prem) - if src.startswith("ERROR"): - raise Exception(src) - fields = src.split("\n") + html = req.load(api_url_base, cookies=False, get=api_param_prem) + if html.startswith("ERROR"): + raise Exception(html) + fields = html.split("\n") info = {} for t in fields: if not t.strip(): @@ -35,14 +36,15 @@ class RapidshareCom(Account): return tmp + def login(self, user, data, req): api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi" api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, "password": data['password'], "withcookie": 1} - src = req.load(api_url_base, cookies=False, get=api_param_prem) - if src.startswith("ERROR"): - raise Exception(src + "### Note you have to use your account number for login, instead of name.") - fields = src.split("\n") + html = req.load(api_url_base, cookies=False, get=api_param_prem) + if html.startswith("ERROR"): + raise Exception(html + "### Note you have to use your account number for login, instead of name") + fields = html.split("\n") info = {} for t in fields: if not t.strip(): @@ -50,4 +52,4 @@ class RapidshareCom(Account): k, v = t.split("=") info[k] = v cj = self.getAccountCookies(user) - cj.setCookie("rapidshare.com", "enc", info['cookie']) + cj.setCookie(".rapidshare.com", "enc", info['cookie']) diff --git a/pyload/plugins/account/RarefileNet.py b/pyload/plugins/account/RarefileNet.py index ba2c7b95a..577a6c8f6 100644 --- a/pyload/plugins/account/RarefileNet.py +++ b/pyload/plugins/account/RarefileNet.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class RarefileNet(XFSPAccount): - __name__ = "RarefileNet" - __type__ = "account" - __version__ = "0.03" +class RarefileNet(XFSAccount): + __name__ = "RarefileNet" + __type__ = "account" + __version__ = "0.04" __description__ = """RareFile.net account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.rarefile.net/" + HOSTER_DOMAIN = "rarefile.net" diff --git a/pyload/plugins/account/RealdebridCom.py b/pyload/plugins/account/RealdebridCom.py index 70b99c906..ef96cca89 100644 --- a/pyload/plugins/account/RealdebridCom.py +++ b/pyload/plugins/account/RealdebridCom.py @@ -6,12 +6,13 @@ from pyload.plugins.base.Account import Account class RealdebridCom(Account): - __name__ = "RealdebridCom" - __type__ = "account" + __name__ = "RealdebridCom" + __type__ = "account" __version__ = "0.43" __description__ = """Real-Debrid.com account plugin""" - __authors__ = [("Devirex Hazzard", "naibaf_11@yahoo.de")] + __license__ = "GPLv3" + __authors__ = [("Devirex Hazzard", "naibaf_11@yahoo.de")] def loadAccountInfo(self, user, req): @@ -24,11 +25,12 @@ class RealdebridCom(Account): return account_info + def login(self, user, data, req): self.pin_code = False page = req.load("https://real-debrid.com/ajax/login.php", get={"user": user, "pass": data['password']}) if "Your login informations are incorrect" in page: self.wrongPassword() elif "PIN Code required" in page: - 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.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/pyload/plugins/account/RehostTo.py b/pyload/plugins/account/RehostTo.py index 0ade81540..6896555bf 100644 --- a/pyload/plugins/account/RehostTo.py +++ b/pyload/plugins/account/RehostTo.py @@ -4,12 +4,13 @@ from pyload.plugins.base.Account import Account class RehostTo(Account): - __name__ = "RehostTo" - __type__ = "account" + __name__ = "RehostTo" + __type__ = "account" __version__ = "0.1" __description__ = """Rehost.to account plugin""" - __authors__ = [("RaNaN", "RaNaN@pyload.org")] + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org")] def loadAccountInfo(self, user, req): @@ -29,6 +30,7 @@ class RehostTo(Account): return account_info + def login(self, user, data, req): page = req.load("http://rehost.to/api.php?cmd=login&user=%s&pass=%s" % (user, data['password'])) diff --git a/pyload/plugins/account/RyushareCom.py b/pyload/plugins/account/RyushareCom.py index 9c83dabec..ca476366b 100644 --- a/pyload/plugins/account/RyushareCom.py +++ b/pyload/plugins/account/RyushareCom.py @@ -1,19 +1,20 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class RyushareCom(XFSPAccount): - __name__ = "RyushareCom" - __type__ = "account" - __version__ = "0.04" +class RyushareCom(XFSAccount): + __name__ = "RyushareCom" + __type__ = "account" + __version__ = "0.05" __description__ = """Ryushare.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("trance4us", None)] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("trance4us", None)] - HOSTER_URL = "http://www.ryushare.com/" + HOSTER_DOMAIN = "ryushare.com" def login(self, user, data, req): diff --git a/pyload/plugins/account/SecureUploadEu.py b/pyload/plugins/account/SecureUploadEu.py index efcfabba0..b335c94da 100644 --- a/pyload/plugins/account/SecureUploadEu.py +++ b/pyload/plugins/account/SecureUploadEu.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class SecureUploadEu(XFSPAccount): - __name__ = "SecureUploadEu" - __type__ = "account" - __version__ = "0.01" +class SecureUploadEu(XFSAccount): + __name__ = "SecureUploadEu" + __type__ = "account" + __version__ = "0.02" __description__ = """SecureUpload.eu account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.secureupload.eu/" + HOSTER_DOMAIN = "secureupload.eu" diff --git a/pyload/plugins/account/SendmywayCom.py b/pyload/plugins/account/SendmywayCom.py index 5a169dcc0..4fcbe0b7a 100644 --- a/pyload/plugins/account/SendmywayCom.py +++ b/pyload/plugins/account/SendmywayCom.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class SendmywayCom(XFSPAccount): - __name__ = "SendmywayCom" - __type__ = "account" - __version__ = "0.01" +class SendmywayCom(XFSAccount): + __name__ = "SendmywayCom" + __type__ = "account" + __version__ = "0.02" __description__ = """Sendmyway.com account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.sendmyway.com/" + HOSTER_DOMAIN = "sendmyway.com" diff --git a/pyload/plugins/account/ShareRapidCom.py b/pyload/plugins/account/ShareRapidCom.py deleted file mode 100644 index 4c20770f4..000000000 --- a/pyload/plugins/account/ShareRapidCom.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from time import mktime, strptime -from pyload.plugins.base.Account import Account - - -class ShareRapidCom(Account): - __name__ = "ShareRapidCom" - __type__ = "account" - __version__ = "0.34" - - __description__ = """MegaRapid.cz account plugin""" - __authors__ = [("MikyWoW", "mikywow@seznam.cz"), - ("zoidberg", "zoidberg@mujmail.cz")] - - - login_timeout = 60 - - - def loadAccountInfo(self, user, req): - src = req.load("http://megarapid.cz/mujucet/", decode=True) - - m = re.search(ur'<td>Max. počet paralelních stahování: </td><td>(\d+)', src) - if m: - data = self.getAccountData(user) - data['options']['limitDL'] = [int(m.group(1))] - - m = re.search(ur'<td>Paušální stahování aktivní. Vyprší </td><td><strong>(.*?)</strong>', src) - if m: - validuntil = mktime(strptime(m.group(1), "%d.%m.%Y - %H:%M")) - return {"premium": True, "trafficleft": -1, "validuntil": validuntil} - - m = re.search(r'<tr><td>Kredit</td><td>(.*?) GiB', src) - 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): - htm = req.load("http://megarapid.cz/prihlaseni/", cookies=True) - if "Heslo:" in htm: - start = htm.index('id="inp_hash" name="hash" value="') - htm = htm[start + 33:] - hashes = htm[0:32] - htm = req.load("http://megarapid.cz/prihlaseni/", - post={"hash": hashes, - "login": user, - "pass1": data['password'], - "remember": 0, - "sbmt": u"Přihlásit"}, cookies=True) diff --git a/pyload/plugins/account/ShareonlineBiz.py b/pyload/plugins/account/ShareonlineBiz.py index 681f1b5a8..31242e563 100644 --- a/pyload/plugins/account/ShareonlineBiz.py +++ b/pyload/plugins/account/ShareonlineBiz.py @@ -4,39 +4,42 @@ from pyload.plugins.base.Account import Account class ShareonlineBiz(Account): - __name__ = "ShareonlineBiz" - __type__ = "account" + __name__ = "ShareonlineBiz" + __type__ = "account" __version__ = "0.24" __description__ = """Share-online.biz account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de"), - ("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de"), + ("zoidberg", "zoidberg@mujmail.cz")] def getUserAPI(self, user, req): return req.load("http://api.share-online.biz/account.php", {"username": user, "password": self.accounts[user]['password'], "act": "userDetails"}) + def loadAccountInfo(self, user, req): - src = self.getUserAPI(user, req) + html = self.getUserAPI(user, req) info = {} - for line in src.splitlines(): + for line in html.splitlines(): if "=" in line: key, value = line.split("=") info[key] = value self.logDebug(info) if "dl" in info and info['dl'].lower() != "not_available": - req.cj.setCookie("share-online.biz", "dl", info['dl']) + req.cj.setCookie(".share-online.biz", "dl", info['dl']) if "a" in info and info['a'].lower() != "not_available": - req.cj.setCookie("share-online.biz", "a", info['a']) + req.cj.setCookie(".share-online.biz", "a", info['a']) return {"validuntil": int(info['expire_date']) if "expire_date" in info else -1, "trafficleft": -1, "premium": True if ("dl" in info or "a" in info) and (info['group'] != "Sammler") else False} + def login(self, user, data, req): - src = self.getUserAPI(user, req) - if "EXCEPTION" in src: + html = self.getUserAPI(user, req) + if "EXCEPTION" in html: self.wrongPassword() diff --git a/pyload/plugins/account/SimplyPremiumCom.py b/pyload/plugins/account/SimplyPremiumCom.py index a601aa533..fd626b43c 100644 --- a/pyload/plugins/account/SimplyPremiumCom.py +++ b/pyload/plugins/account/SimplyPremiumCom.py @@ -5,12 +5,13 @@ from pyload.plugins.base.Account import Account class SimplyPremiumCom(Account): - __name__ = "SimplyPremiumCom" - __type__ = "account" + __name__ = "SimplyPremiumCom" + __type__ = "account" __version__ = "0.01" __description__ = """Simply-Premium.com account plugin""" - __authors__ = [("EvolutionClip", "evolutionclip@live.de")] + __license__ = "GPLv3" + __authors__ = [("EvolutionClip", "evolutionclip@live.de")] def loadAccountInfo(self, user, req): @@ -24,14 +25,15 @@ class SimplyPremiumCom(Account): #Time package validuntil = float(json_data['result']['timeend']) #Traffic package - # {"trafficleft": int(traffic) / 1024, "validuntil": -1} - #trafficleft = int(json_data['result']['traffic'] / 1024) + # {"trafficleft": int(traffic), "validuntil": -1} + #trafficleft = int(json_data['result']['traffic']) #return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} return {"premium": True, "validuntil": validuntil} + def login(self, user, data, req): - req.cj.setCookie("simply-premium.com", "lang", "EN") + req.cj.setCookie(".simply-premium.com", "lang", "EN") if data['password'] == '' or data['password'] == '0': post_data = {"key": user} diff --git a/pyload/plugins/account/SimplydebridCom.py b/pyload/plugins/account/SimplydebridCom.py index bf49b652b..a92e6ca95 100644 --- a/pyload/plugins/account/SimplydebridCom.py +++ b/pyload/plugins/account/SimplydebridCom.py @@ -6,27 +6,29 @@ from pyload.plugins.base.Account import Account class SimplydebridCom(Account): - __name__ = "SimplydebridCom" - __type__ = "account" + __name__ = "SimplydebridCom" + __type__ = "account" __version__ = "0.1" __description__ = """Simply-Debrid.com account plugin""" - __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] + __license__ = "GPLv3" + __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] def loadAccountInfo(self, user, req): get_data = {'login': 2, 'u': self.loginname, 'p': self.password} - response = req.load("http://simply-debrid.com/api.php", get=get_data, decode=True) - data = [x.strip() for x in response.split(";")] + 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": mktime(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} - response = req.load("http://simply-debrid.com/api.php", get=get_data, decode=True) - if response != "02: loggin success": + res = req.load("http://simply-debrid.com/api.php", get=get_data, decode=True) + if res != "02: loggin success": self.wrongPassword() diff --git a/pyload/plugins/account/StahnuTo.py b/pyload/plugins/account/StahnuTo.py index fa08b234d..44884f835 100644 --- a/pyload/plugins/account/StahnuTo.py +++ b/pyload/plugins/account/StahnuTo.py @@ -2,27 +2,28 @@ import re -from pyload.plugins.base.Account import Account -from pyload.utils import parseFileSize +from module.plugins.Account import Account class StahnuTo(Account): - __name__ = "StahnuTo" - __type__ = "account" - __version__ = "0.02" + __name__ = "StahnuTo" + __type__ = "account" + __version__ = "0.03" __description__ = """StahnuTo account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __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 = parseFileSize(m.group(1)) * 1024 if m else 0 + trafficleft = self.parseTraffic(m.group(1)) * 1024 if m else 0 return {"premium": trafficleft > (512 * 1024), "trafficleft": trafficleft, "validuntil": -1} + def login(self, user, data, req): html = req.load("http://www.stahnu.to/login.php", post={ "username": user, diff --git a/pyload/plugins/account/StreamcloudEu.py b/pyload/plugins/account/StreamcloudEu.py index 78d4179bf..aa1eafcbd 100644 --- a/pyload/plugins/account/StreamcloudEu.py +++ b/pyload/plugins/account/StreamcloudEu.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class StreamcloudEu(XFSPAccount): - __name__ = "StreamcloudEu" - __type__ = "account" - __version__ = "0.01" +class StreamcloudEu(XFSAccount): + __name__ = "StreamcloudEu" + __type__ = "account" + __version__ = "0.02" __description__ = """Streamcloud.eu account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.streamcloud.eu/" + HOSTER_DOMAIN = "streamcloud.eu" diff --git a/pyload/plugins/account/TurbobitNet.py b/pyload/plugins/account/TurbobitNet.py index 48ed17d73..cb8975158 100644 --- a/pyload/plugins/account/TurbobitNet.py +++ b/pyload/plugins/account/TurbobitNet.py @@ -7,18 +7,19 @@ from pyload.plugins.base.Account import Account class TurbobitNet(Account): - __name__ = "TurbobitNet" - __type__ = "account" + __name__ = "TurbobitNet" + __type__ = "account" __version__ = "0.01" __description__ = """TurbobitNet account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __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 ([0-9.]+)', html) + m = re.search(r'<u>Turbo Access</u> to ([\d.]+)', html) if m: premium = True validuntil = mktime(strptime(m.group(1), "%d.%m.%Y")) @@ -28,8 +29,9 @@ class TurbobitNet(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): - req.cj.setCookie("turbobit.net", "user_lang", "en") + req.cj.setCookie(".turbobit.net", "user_lang", "en") html = req.load("http://turbobit.net/user/login", post={ "user[login]": user, diff --git a/pyload/plugins/account/TusfilesNet.py b/pyload/plugins/account/TusfilesNet.py index 36110fca7..552047a64 100644 --- a/pyload/plugins/account/TusfilesNet.py +++ b/pyload/plugins/account/TusfilesNet.py @@ -4,54 +4,20 @@ import re from time import mktime, strptime, gmtime -from pyload.plugins.internal.XFSPAccount import XFSPAccount -from pyload.utils import parseFileSize +from module.plugins.internal.XFSAccount import XFSAccount -class TusfilesNet(XFSPAccount): - __name__ = "TusfilesNet" - __type__ = "account" - __version__ = "0.02" +class TusfilesNet(XFSAccount): + __name__ = "TusfilesNet" + __type__ = "account" + __version__ = "0.06" __description__ = """Tusfile.net account plugin""" - __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.tusfiles.net/" + 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>[^<]+)</td>' - - - def loadAccountInfo(self, user, req): - html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) - - validuntil = None - trafficleft = None - premium = False - - m = re.search(self.VALID_UNTIL_PATTERN, html) - if m: - expiredate = m.group(1) - self.logDebug("Expire date: " + expiredate) - - try: - validuntil = mktime(strptime(expiredate, "%d %B %Y")) - except Exception, e: - self.logError(e) - - if validuntil > mktime(gmtime()): - premium = True - else: - premium = False - validuntil = None - - m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - if m: - trafficleft = m.group(1) - if "Unlimited" in trafficleft: - trafficleft = -1 - else: - trafficleft = parseFileSize(trafficleft) * 1024 - - return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} + TRAFFIC_LEFT_PATTERN = r'<td><img src="//www\.tusfiles\.net/i/icon/meter\.png" alt=""/></td>\n<td> (?P<S>[\d.,]+)' diff --git a/pyload/plugins/account/UlozTo.py b/pyload/plugins/account/UlozTo.py index 913ddc56f..105a962cd 100644 --- a/pyload/plugins/account/UlozTo.py +++ b/pyload/plugins/account/UlozTo.py @@ -6,23 +6,24 @@ from pyload.plugins.base.Account import Account class UlozTo(Account): - __name__ = "UlozTo" - __type__ = "account" + __name__ = "UlozTo" + __type__ = "account" __version__ = "0.06" __description__ = """Uloz.to account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("pulpe", None)] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("pulpe", None)] - TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a href="/kredit" title="[^"]*?GB = ([0-9.]+) MB"' + TRAFFIC_LEFT_PATTERN = r'<li class="menu-kredit"><a href="/kredit" title="[^"]*?GB = ([\d.]+) MB"' def loadAccountInfo(self, user, req): #this cookie gets lost somehow after each request self.phpsessid = req.cj.getCookie("ULOSESSID") html = req.load("http://www.ulozto.net/", decode=True) - req.cj.setCookie("www.ulozto.net", "ULOSESSID", self.phpsessid) + req.cj.setCookie(".ulozto.net", "ULOSESSID", self.phpsessid) m = re.search(self.TRAFFIC_LEFT_PATTERN, html) trafficleft = int(float(m.group(1).replace(' ', '').replace(',', '.')) * 1000 * 1.048) if m else 0 @@ -30,6 +31,7 @@ class UlozTo(Account): return {"validuntil": -1, "trafficleft": trafficleft} + 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('&', '&') diff --git a/pyload/plugins/account/UnrestrictLi.py b/pyload/plugins/account/UnrestrictLi.py index 179d2bd8a..b5ae43d72 100644 --- a/pyload/plugins/account/UnrestrictLi.py +++ b/pyload/plugins/account/UnrestrictLi.py @@ -5,12 +5,13 @@ from pyload.utils import json_loads class UnrestrictLi(Account): - __name__ = "UnrestrictLi" - __type__ = "account" + __name__ = "UnrestrictLi" + __type__ = "account" __version__ = "0.03" __description__ = """Unrestrict.li account plugin""" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("stickell", "l.stickell@yahoo.it")] def loadAccountInfo(self, user, req): @@ -22,16 +23,17 @@ class UnrestrictLi(Account): return {"premium": False} validuntil = json_data['result']['expires'] - trafficleft = int(json_data['result']['traffic'] / 1024) + trafficleft = int(json_data['result']['traffic']) return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} + def login(self, user, data, req): - req.cj.setCookie("unrestrict.li", "lang", "EN") + req.cj.setCookie(".unrestrict.li", "lang", "EN") html = req.load("https://unrestrict.li/sign_in") if 'solvemedia' in html: - self.logError("A Captcha is required. Go to http://unrestrict.li/sign_in and login, then retry") + 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'], diff --git a/pyload/plugins/account/UploadedTo.py b/pyload/plugins/account/UploadedTo.py index 145205530..0054b60bf 100644 --- a/pyload/plugins/account/UploadedTo.py +++ b/pyload/plugins/account/UploadedTo.py @@ -7,46 +7,54 @@ from pyload.plugins.base.Account import Account class UploadedTo(Account): - __name__ = "UploadedTo" - __type__ = "account" - __version__ = "0.26" + __name__ = "UploadedTo" + __type__ = "account" + __version__ = "0.27" __description__ = """Uploaded.to account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de")] + + + PREMIUM_PATTERN = r'<em>Premium</em>' + VALID_UNTIL_PATTERN = r'<td>Duration:</td>\s*<th>([^<]+)' + TRAFFIC_LEFT_PATTERN = r'<th colspan="2"><b class="cB">([^<]+)' def loadAccountInfo(self, user, req): + validuntil = None + trafficleft = None + premium = None - req.load("http://uploaded.net/language/en") html = req.load("http://uploaded.net/me") - premium = '<a href="register"><em>Premium</em>' in html or '<em>Premium</em></th>' in html - - if premium: - raw_traffic = re.search(r'<th colspan="2"><b class="cB">([^<]+)', html).group(1).replace('.', '') - raw_valid = re.search(r"<td>Duration:</td>\s*<th>([^<]+)", html, re.MULTILINE).group(1).strip() + premium = True if re.search(self.PREMIUM_PATTERN, html) else False - traffic = int(self.parseTraffic(raw_traffic)) + m = re.search(self.VALID_UNTIL_PATTERN, html, re.M) + if m: + expiredate = m.group(1).strip() - if raw_valid == "unlimited": + if expiredate == "unlimited": validuntil = -1 else: - raw_valid = re.findall(r"(\d+) (Week|weeks|days|day|hours|hour)", raw_valid) - validuntil = time() - for n, u in raw_valid: - validuntil += int(n) * 60 * 60 * {"Week": 168, "weeks": 168, "days": 24, - "day": 24, "hours": 1, "hour": 1}[u] + m = re.findall(r'(\d+) (Week|weeks|day|hour)', expiredate) + if m: + validuntil = time() + for n, u in m: + validuntil += int(n) * 60 * 60 * {'Week': 168, 'weeks': 168, 'day': 24, 'hour': 1}[u] - return {"validuntil": validuntil, "trafficleft": traffic, "maxtraffic": 50 * 1024 * 1024} - else: - return {"premium": False, "validuntil": -1} + m = re.search(self.TRAFFIC_LEFT_PATTERN, html) + if m: + trafficleft = self.parseTraffic(m.group(1).replace('.', '')) + + return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} - def login(self, user, data, req): - req.load("http://uploaded.net/language/en") - req.cj.setCookie("uploaded.net", "lang", "en") + def login(self, user, data, req): + req.cj.setCookie(".uploaded.net", "lang", "en") - page = req.load("http://uploaded.net/io/login", post={"id": user, "pw": data['password'], "_": ""}) + page = req.load("http://uploaded.net/io/login", + post={'id': user, 'pw': data['password'], '_': ""}) - if "User and password do not match!" in page: + if "User and password do not match" in page: self.wrongPassword() diff --git a/pyload/plugins/account/UploadheroCom.py b/pyload/plugins/account/UploadheroCom.py index ec3cdf906..c3a39e5dc 100644 --- a/pyload/plugins/account/UploadheroCom.py +++ b/pyload/plugins/account/UploadheroCom.py @@ -8,16 +8,17 @@ from pyload.plugins.base.Account import Account class UploadheroCom(Account): - __name__ = "UploadheroCom" - __type__ = "account" + __name__ = "UploadheroCom" + __type__ = "account" __version__ = "0.2" __description__ = """Uploadhero.co account plugin""" - __authors__ = [("mcmyst", "mcmyst@hotmail.fr")] + __license__ = "GPLv3" + __authors__ = [("mcmyst", "mcmyst@hotmail.fr")] def loadAccountInfo(self, user, req): - premium_pattern = re.compile('Il vous reste <span class="bleu">([0-9]+)</span> jours premium.') + premium_pattern = re.compile('Il vous reste <span class="bleu">(\d+)</span> jours premium') data = self.getAccountData(user) page = req.load("http://uploadhero.co/my-account") @@ -31,6 +32,7 @@ class UploadheroCom(Account): return account_info + def login(self, user, data, req): page = req.load("http://uploadhero.co/lib/connexion.php", post={"pseudo_login": user, "password_login": data['password']}) diff --git a/pyload/plugins/account/UploadingCom.py b/pyload/plugins/account/UploadingCom.py index a25281ca4..b5ea91119 100644 --- a/pyload/plugins/account/UploadingCom.py +++ b/pyload/plugins/account/UploadingCom.py @@ -1,39 +1,63 @@ # -*- coding: utf-8 -*- -from time import time, strptime, mktime import re +from time import time, strptime, mktime + from pyload.plugins.base.Account import Account +from module.plugins.internal.SimpleHoster import set_cookies class UploadingCom(Account): - __name__ = "UploadingCom" - __type__ = "account" - __version__ = "0.1" + __name__ = "UploadingCom" + __type__ = "account" + __version__ = "0.11" __description__ = """Uploading.com account plugin""" - __authors__ = [("mkaay", "mkaay@mkaay.de")] + __license__ = "GPLv3" + __authors__ = [("mkaay", "mkaay@mkaay.de")] + + + PREMIUM_PATTERN = r'UPGRADE TO PREMIUM' + VALID_UNTIL_PATTERN = r'Valid Until:(.+?)<' def loadAccountInfo(self, user, req): - src = req.load("http://uploading.com/") - premium = True - if "UPGRADE TO PREMIUM" in src: - return {"validuntil": -1, "trafficleft": -1, "premium": False} + validuntil = None + trafficleft = None + premium = None + + html = req.load("http://uploading.com/") - m = re.search("Valid Until:(.*?)<", src) + premium = False if re.search(self.PREMIUM_PATTERN, html) else True + + m = re.search(self.VALID_UNTIL_PATTERN, html) if m: - validuntil = int(mktime(strptime(m.group(1).strip(), "%b %d, %Y"))) - else: - validuntil = -1 + expiredate = m.group(1).strip() + self.logDebug("Expire date: " + expiredate) + + try: + validuntil = mktime(strptime(expiredate, "%b %d, %Y")) + + except Exception, e: + self.logError(e) + + else: + if validuntil > mktime(gmtime()): + premium = True + else: + premium = False + validuntil = None + + return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} - return {"validuntil": validuntil, "trafficleft": -1, "premium": True} def login(self, user, data, req): - req.cj.setCookie("uploading.com", "lang", "1") - req.cj.setCookie("uploading.com", "language", "1") - req.cj.setCookie("uploading.com", "setlang", "en") - req.cj.setCookie("uploading.com", "_lang", "en") + set_cookies([(".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() * 1000), - post={"email": user, "password": data['password'], "remember": "on"}) + post={'email': user, 'password': data['password'], 'remember': "on"}) diff --git a/pyload/plugins/account/UptoboxCom.py b/pyload/plugins/account/UptoboxCom.py index 917663d63..d3fb4e559 100644 --- a/pyload/plugins/account/UptoboxCom.py +++ b/pyload/plugins/account/UptoboxCom.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class UptoboxCom(XFSPAccount): - __name__ = "UptoboxCom" - __type__ = "account" - __version__ = "0.03" +class UptoboxCom(XFSAccount): + __name__ = "UptoboxCom" + __type__ = "account" + __version__ = "0.06" __description__ = """DDLStorage.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.uptobox.com/" - - VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire: ([^<]+)</strong>' + HOSTER_DOMAIN = "uptobox.com" diff --git a/pyload/plugins/account/VidPlayNet.py b/pyload/plugins/account/VidPlayNet.py index a7e71365e..5bfc24963 100644 --- a/pyload/plugins/account/VidPlayNet.py +++ b/pyload/plugins/account/VidPlayNet.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- -from pyload.plugins.internal.XFSPAccount import XFSPAccount +from module.plugins.internal.XFSAccount import XFSAccount -class VidPlayNet(XFSPAccount): - __name__ = "VidPlayNet" - __type__ = "account" - __version__ = "0.01" +class VidPlayNet(XFSAccount): + __name__ = "VidPlayNet" + __type__ = "account" + __version__ = "0.02" __description__ = """VidPlay.net account plugin""" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.vidplay.net/" + HOSTER_DOMAIN = "vidplay.net" diff --git a/pyload/plugins/account/YibaishiwuCom.py b/pyload/plugins/account/YibaishiwuCom.py index e9fe0facf..d9a9f37ca 100644 --- a/pyload/plugins/account/YibaishiwuCom.py +++ b/pyload/plugins/account/YibaishiwuCom.py @@ -6,12 +6,13 @@ from pyload.plugins.base.Account import Account class YibaishiwuCom(Account): - __name__ = "YibaishiwuCom" - __type__ = "account" + __name__ = "YibaishiwuCom" + __type__ = "account" __version__ = "0.01" __description__ = """115.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] ACCOUNT_INFO_PATTERN = r'var USER_PERMISSION = {(.*?)}' @@ -26,6 +27,7 @@ class YibaishiwuCom(Account): 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/", diff --git a/pyload/plugins/account/ZeveraCom.py b/pyload/plugins/account/ZeveraCom.py index 17bfb114c..701198c84 100644 --- a/pyload/plugins/account/ZeveraCom.py +++ b/pyload/plugins/account/ZeveraCom.py @@ -6,12 +6,13 @@ from pyload.plugins.base.Account import Account class ZeveraCom(Account): - __name__ = "ZeveraCom" - __type__ = "account" + __name__ = "ZeveraCom" + __type__ = "account" __version__ = "0.21" __description__ = """Zevera.com account plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] def loadAccountInfo(self, user, req): @@ -26,12 +27,14 @@ class ZeveraCom(Account): } return account_info + def login(self, user, data, req): self.loginname = user self.password = data['password'] if self.getAPIData(req) == "No traffic": self.wrongPassword() + def getAPIData(self, req, just_header=False, **kwargs): get_data = { 'cmd': 'accountinfo', @@ -40,14 +43,14 @@ class ZeveraCom(Account): } get_data.update(kwargs) - response = req.load("http://www.zevera.com/jDownloader.ashx", get=get_data, + res = req.load("http://www.zevera.com/jDownloader.ashx", get=get_data, decode=True, just_header=just_header) - self.logDebug(response) + self.logDebug(res) - if ':' in response: + if ':' in res: if not just_header: - response = response.replace(',', '\n') + res = res.replace(',', '\n') return dict((y.strip().lower(), z.strip()) for (y, z) in - [x.split(':', 1) for x in response.splitlines() if ':' in x]) + [x.split(':', 1) for x in res.splitlines() if ':' in x]) else: - return response + return res |