summaryrefslogtreecommitdiffstats
path: root/module/plugins/accounts
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/accounts')
-rw-r--r--module/plugins/accounts/NitroflareCom.py55
-rw-r--r--module/plugins/accounts/RapidgatorNet.py20
-rw-r--r--module/plugins/accounts/UploadedTo.py4
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^_]+)'