diff options
Diffstat (limited to 'module/plugins/accounts')
-rw-r--r-- | module/plugins/accounts/NitroflareCom.py | 55 | ||||
-rw-r--r-- | module/plugins/accounts/RapidgatorNet.py | 20 | ||||
-rw-r--r-- | module/plugins/accounts/UploadedTo.py | 4 |
3 files changed, 59 insertions, 20 deletions
diff --git a/module/plugins/accounts/NitroflareCom.py b/module/plugins/accounts/NitroflareCom.py index cc0ce3ea9..7ffcd172d 100644 --- a/module/plugins/accounts/NitroflareCom.py +++ b/module/plugins/accounts/NitroflareCom.py @@ -4,24 +4,27 @@ import re import time from module.plugins.internal.Account import Account +from module.PyFile import PyFile +from module.plugins.captcha.ReCaptcha import ReCaptcha class NitroflareCom(Account): __name__ = "NitroflareCom" __type__ = "account" - __version__ = "0.11" + __version__ = "0.15" __status__ = "testing" __description__ = """Nitroflare.com account plugin""" __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + __authors__ = [("Walter Purcaro", "vuolter@gmail.com" ), + ("GammaC0de", "nitzo2001[AT]yahoo[DOT]com")] VALID_UNTIL_PATTERN = r'>Time Left</label><strong>(.+?)</' - TRAFFIC_LEFT_PATTERN = r'>Daily Limit</label><strong>([\d.,]+)' + TRAFFIC_LEFT_PATTERN = r'>Your Daily Limit</label><strong>(?P<S1>[\d.,]+) (?P<U1>[\w^_]+ )?/ (?P<S2>[\d.,]+) (?P<U2>[\w^_]+)' LOGIN_FAIL_PATTERN = r'<ul class="errors">\s*<li>' - TOKEN_PATTERN = r'name="token" value="(.+?)"' + TOKEN_PATTERN = r'name="token" value="(.+?)"' def grab_info(self, user, password, data): @@ -56,7 +59,7 @@ class NitroflareCom(Account): m = re.search(self.TRAFFIC_LEFT_PATTERN, html) if m is not None: try: - trafficleft = self.parse_traffic(str(max(0, 50 - float(m.group(1)))), "GB") + trafficleft = self.parse_traffic(m.group('S2'), m.group('U2')) - self.parse_traffic(m.group('S1'), m.group('U1') or "B") except Exception, e: self.log_error(e, trace=True) @@ -69,15 +72,41 @@ class NitroflareCom(Account): def signin(self, user, password, data): - html = self.load("https://nitroflare.com/login") + login_url = "https://nitroflare.com/login" + post_data = {'login' : "", + 'email' : user, + 'password': password} - token = re.search(self.TOKEN_PATTERN, html).group(1) + self.data = self.load(login_url) - html = self.load("https://nitroflare.com/login", - post={'login' : "", - 'email' : user, - 'password': password, - 'token' : token}) + # dummy pyfile + pyfile = PyFile(self.pyload.files, -1, login_url, login_url, 0, 0, "", self.classname, -1, -1) + pyfile.plugin = self - if re.search(self.LOGIN_FAIL_PATTERN, html): + self.captcha = ReCaptcha(pyfile) + + captcha_key = self.captcha.detect_key() + if captcha_key: + response, challenge = self.captcha.challenge() + post_data['g-recaptcha-response'] = response + + token = re.search(self.TOKEN_PATTERN, self.data).group(1) + post_data['token'] = token + + self.data = self.load("https://nitroflare.com/login", post=post_data) + + if re.search(self.LOGIN_FAIL_PATTERN, self.data): self.fail_login() + + """ + @NOTE: below are methods + necessary for captcha to work with account plugins + """ + def check_status(self): + pass + + def retry_captcha(self, attemps=10, wait=1, msg=_("Max captcha retries reached")): + self.captcha.invalid() + self.fail_login(msg="Invalid captcha") + + diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py index 3fb2cf928..701997480 100644 --- a/module/plugins/accounts/RapidgatorNet.py +++ b/module/plugins/accounts/RapidgatorNet.py @@ -9,14 +9,17 @@ from module.plugins.internal.misc import json class RapidgatorNet(Account): __name__ = "RapidgatorNet" __type__ = "account" - __version__ = "0.18" + __version__ = "0.21" __status__ = "testing" __description__ = """Rapidgator.net account plugin""" __license__ = "GPLv3" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __authors__ = [("zoidberg", "zoidberg@mujmail.cz" ), + ("GammaC0de", "nitzo2001[AT]yahoo[DOT]com")] + TUNE_TIMEOUT = False + API_URL = "http://rapidgator.net/api/user/" @@ -37,12 +40,10 @@ class RapidgatorNet(Account): json_data = json.loads(html) if json_data['response_status'] == 200: - if "reset_in" in json_data['response']: - self._schedule_refresh(user, json_data['response']['reset_in']) - validuntil = json_data['response']['expire_date'] trafficleft = float(json_data['response']['traffic_left']) / 1024 #@TODO: Remove `/ 1024` in 0.4.10 premium = True + else: self.log_error(json_data['response_details']) @@ -67,7 +68,16 @@ class RapidgatorNet(Account): if json_data['response_status'] == 200: data['sid'] = str(json_data['response']['session_id']) + + if 'reset_in' in json_data['response']: + self.timeout = float(json_data['response']['reset_in']) + self.TUNE_TIMEOUT = False + + else: + self.TUNE_TIMEOUT = True + return + else: self.log_error(json_data['response_details']) diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py index c46a6de13..50c03041d 100644 --- a/module/plugins/accounts/UploadedTo.py +++ b/module/plugins/accounts/UploadedTo.py @@ -9,7 +9,7 @@ from module.plugins.internal.Account import Account class UploadedTo(Account): __name__ = "UploadedTo" __type__ = "account" - __version__ = "0.41" + __version__ = "0.42" __status__ = "testing" __description__ = """Uploaded.to account plugin""" @@ -20,7 +20,7 @@ class UploadedTo(Account): COOKIES = False PREMIUM_PATTERN = r'<em>Premium</em>' - VALID_UNTIL_PATTERN = r'<td>Duration:</td>\s*<th>(.+?)<' + VALID_UNTIL_PATTERN = r'<td>Duration:</td>\s*<th>\s*(.+?)<' TRAFFIC_LEFT_PATTERN = r'<b class="cB">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' |