summaryrefslogtreecommitdiffstats
path: root/module/plugins/accounts
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/accounts')
-rw-r--r--module/plugins/accounts/AlldebridCom.py4
-rw-r--r--module/plugins/accounts/CatShareNet.py2
-rw-r--r--module/plugins/accounts/FilerNet.py12
-rw-r--r--module/plugins/accounts/NitroflareCom.py83
-rw-r--r--module/plugins/accounts/NoPremiumPl.py52
-rw-r--r--module/plugins/accounts/PremiumizeMe.py7
-rw-r--r--module/plugins/accounts/RapideoPl.py53
-rw-r--r--module/plugins/accounts/RapidgatorNet.py2
-rw-r--r--module/plugins/accounts/RealdebridCom.py4
-rw-r--r--module/plugins/accounts/WebshareCz.py6
-rw-r--r--module/plugins/accounts/WorldbytezCom.py16
11 files changed, 170 insertions, 71 deletions
diff --git a/module/plugins/accounts/AlldebridCom.py b/module/plugins/accounts/AlldebridCom.py
index f9c1f2ca6..d09086907 100644
--- a/module/plugins/accounts/AlldebridCom.py
+++ b/module/plugins/accounts/AlldebridCom.py
@@ -2,7 +2,7 @@
import re
import time
-import xml.dom.minidom as dom
+import xml.dom.minidom
from BeautifulSoup import BeautifulSoup
@@ -43,7 +43,7 @@ class AlldebridCom(Account):
self.logDebug(html)
- xml = dom.parseString(html)
+ xml = xml.dom.minidom.parseString(html)
exp_time = time.time() + int(xml.getElementsByTagName("date")[0].childNodes[0].nodeValue) * 24 * 60 * 60
account_info = {"validuntil": exp_time, "trafficleft": -1}
diff --git a/module/plugins/accounts/CatShareNet.py b/module/plugins/accounts/CatShareNet.py
index bb42f443f..3ddadca8e 100644
--- a/module/plugins/accounts/CatShareNet.py
+++ b/module/plugins/accounts/CatShareNet.py
@@ -11,7 +11,7 @@ class CatShareNet(Account):
__type__ = "account"
__version__ = "0.05"
- __description__ = """CatShareNet account plugin"""
+ __description__ = """Catshare.net account plugin"""
__license__ = "GPLv3"
__authors__ = [("prOq", None)]
diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py
index ac5fd11da..149ff7d89 100644
--- a/module/plugins/accounts/FilerNet.py
+++ b/module/plugins/accounts/FilerNet.py
@@ -9,14 +9,14 @@ from module.plugins.Account import Account
class FilerNet(Account):
__name__ = "FilerNet"
__type__ = "account"
- __version__ = "0.04"
+ __version__ = "0.05"
__description__ = """Filer.net account plugin"""
__license__ = "GPLv3"
__authors__ = [("stickell", "l.stickell@yahoo.it")]
- TOKEN_PATTERN = r'_csrf_token" value="(.+?)" />'
+ TOKEN_PATTERN = r'name="_csrf_token" value="(.+?)"'
WALID_UNTIL_PATTERN = r'Der Premium-Zugang ist gültig bis (.+)\.\s*</td>'
TRAFFIC_PATTERN = r'Traffic</th>\s*<td>([^<]+)</td>'
FREE_PATTERN = r'Account Status</th>\s*<td>\s*Free'
@@ -43,15 +43,15 @@ class FilerNet(Account):
def login(self, user, data, req):
- html = req.load("https://filer.net/login")
+ html = req.load("https://filer.net/login", decode=True)
token = re.search(self.TOKEN_PATTERN, html).group(1)
html = req.load("https://filer.net/login_check",
- post={"_username": user,
- "_password": data['password'],
+ post={"_username" : user,
+ "_password" : data['password'],
"_remember_me": "on",
- "_csrf_token": token,
+ "_csrf_token" : token,
"_target_path": "https://filer.net/"},
decode=True)
diff --git a/module/plugins/accounts/NitroflareCom.py b/module/plugins/accounts/NitroflareCom.py
new file mode 100644
index 000000000..57f2b9ae8
--- /dev/null
+++ b/module/plugins/accounts/NitroflareCom.py
@@ -0,0 +1,83 @@
+# -*- coding: utf-8 -*-
+
+import re
+import time
+
+from module.plugins.Account import Account
+
+
+class NitroflareCom(Account):
+ __name__ = "NitroflareCom"
+ __type__ = "account"
+ __version__ = "0.04"
+
+ __description__ = """Nitroflare.com account plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("Walter Purcaro", "vuolter@gmail.com" )]
+
+
+ VALID_UNTIL_PATTERN = r'>Time Left</label><strong>(.+?)</'
+ TRAFFIC_LEFT_PATTERN = r'>Daily Limit</label><strong>([\d.,]+)'
+ LOGIN_FAIL_PATTERN = r'<ul class="errors">\s*<li>'
+
+ TOKEN_PATTERN = r'name="token" value="(.+?)"'
+
+
+ def loadAccountInfo(self, user, req):
+ validuntil = -1
+ trafficleft = None
+ premium = False
+
+ html = req.load("https://nitroflare.com/member",
+ get={'s': "premium"},
+ decode=True)
+
+ m = re.search(self.VALID_UNTIL_PATTERN, html)
+ if m:
+ expiredate = m.group(1).strip()
+ self.logDebug("Time Left: " + expiredate)
+
+ try:
+ validuntil = sum(int(v) * {'day': 24 * 3600, 'hour': 3600, 'minute': 60}[u.lower()] for v, u in
+ re.findall(r'(\d+)\s*(day|hour|minute)', expiredate, re.I))
+ except Exception, e:
+ self.logError(e)
+
+ else:
+ self.logDebug("Valid until: %s" % validuntil)
+
+ if validuntil:
+ validuntil += time.time()
+ premium = True
+ else:
+ validuntil = -1
+
+ m = re.search(self.TRAFFIC_LEFT_PATTERN, html)
+ if m:
+ try:
+ trafficleft = self.parseTraffic(str(max(0, 50 - float(m.group(1)))) + " GB")
+
+ except Exception, e:
+ self.logError(e)
+ else:
+ self.logDebug("TRAFFIC_LEFT_PATTERN not found")
+
+ return {'validuntil' : validuntil,
+ 'trafficleft': trafficleft,
+ 'premium' : premium}
+
+
+ def login(self, user, data, req):
+ html = req.load("https://nitroflare.com/login", decode=True)
+
+ token = re.search(self.TOKEN_PATTERN, html).group(1)
+
+ html = req.load("https://nitroflare.com/login",
+ post={'login' : "",
+ 'email' : user,
+ 'password': data['password'],
+ 'token' : token},
+ decode=True)
+
+ if re.search(self.LOGIN_FAIL_PATTERN, html):
+ self.wrongPassword()
diff --git a/module/plugins/accounts/NoPremiumPl.py b/module/plugins/accounts/NoPremiumPl.py
index 7e3f757d3..6c034b31f 100644
--- a/module/plugins/accounts/NoPremiumPl.py
+++ b/module/plugins/accounts/NoPremiumPl.py
@@ -4,37 +4,37 @@ import datetime
import hashlib
import time
+from module.common.json_layer import json_loads
from module.plugins.Account import Account
-from module.common.json_layer import json_loads as loads
class NoPremiumPl(Account):
- __name__ = "NoPremiumPl"
+ __name__ = "NoPremiumPl"
+ __type__ = "account"
__version__ = "0.01"
- __type__ = "account"
+
__description__ = "NoPremium.pl account plugin"
- __license__ = "GPLv3"
- __authors__ = [("goddie", "dev@nopremium.pl")]
+ __license__ = "GPLv3"
+ __authors__ = [("goddie", "dev@nopremium.pl")]
- _api_url = "http://crypt.nopremium.pl"
- _api_query = {
- "site": "nopremium",
- "username": "",
- "password": "",
- "output": "json",
- "loc": "1",
- "info": "1"
- }
+ API_URL = "http://crypt.nopremium.pl"
+ API_QUERY = {'site' : "nopremium",
+ 'username': "" ,
+ 'password': "" ,
+ 'output' : "json" ,
+ 'loc' : "1" ,
+ 'info' : "1" }
_req = None
_usr = None
_pwd = None
+
def loadAccountInfo(self, name, req):
self._req = req
try:
- result = loads(self.runAuthQuery())
+ result = json_loads(self.runAuthQuery())
except Exception:
# todo: return or let it be thrown?
return
@@ -45,13 +45,13 @@ class NoPremiumPl(Account):
if "expire" in result.keys() and result["expire"]:
premium = True
valid_untill = time.mktime(datetime.datetime.fromtimestamp(int(result["expire"])).timetuple())
+
traffic_left = result["balance"] * 1024
- return ({
- "validuntil": valid_untill,
- "trafficleft": traffic_left,
- "premium": premium
- })
+ return {'validuntil' : valid_untill,
+ 'trafficleft': traffic_left,
+ 'premium' : premium }
+
def login(self, user, data, req):
self._usr = user
@@ -59,23 +59,23 @@ class NoPremiumPl(Account):
self._req = req
try:
- response = loads(self.runAuthQuery())
+ response = json_loads(self.runAuthQuery())
except Exception:
self.wrongPassword()
if "errno" in response.keys():
self.wrongPassword()
+
data['usr'] = self._usr
data['pwd'] = self._pwd
+
def createAuthQuery(self):
- query = self._api_query
+ query = self.API_QUERY
query["username"] = self._usr
query["password"] = self._pwd
-
return query
- def runAuthQuery(self):
- data = self._req.load(self._api_url, post=self.createAuthQuery())
- return data \ No newline at end of file
+ def runAuthQuery(self):
+ return self._req.load(self.API_URL, post=self.createAuthQuery())
diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py
index 7d061ec2d..da31d93ee 100644
--- a/module/plugins/accounts/PremiumizeMe.py
+++ b/module/plugins/accounts/PremiumizeMe.py
@@ -1,14 +1,13 @@
# -*- coding: utf-8 -*-
-from module.plugins.Account import Account
-
from module.common.json_layer import json_loads
+from module.plugins.Account import Account
class PremiumizeMe(Account):
__name__ = "PremiumizeMe"
__type__ = "account"
- __version__ = "0.13"
+ __version__ = "0.16"
__description__ = """Premiumize.me account plugin"""
__license__ = "GPLv3"
@@ -42,7 +41,7 @@ class PremiumizeMe(Account):
def getAccountStatus(self, user, req):
# Use premiumize.me API v1 (see https://secure.premiumize.me/?show=api)
# to retrieve account info and return the parsed json answer
- answer = req.load("https://api.premiumize.me/pm-api/v1.php",
+ answer = req.load("http://api.premiumize.me/pm-api/v1.php",
get={'method' : "accountstatus",
'params[login]': user,
'params[pass]' : self.getAccountData(user)['password']})
diff --git a/module/plugins/accounts/RapideoPl.py b/module/plugins/accounts/RapideoPl.py
index 3e9d52fe8..92736cba0 100644
--- a/module/plugins/accounts/RapideoPl.py
+++ b/module/plugins/accounts/RapideoPl.py
@@ -4,77 +4,78 @@ import datetime
import hashlib
import time
+from module.common.json_layer import json_loads
from module.plugins.Account import Account
-from module.common.json_layer import json_loads as loads
class RapideoPl(Account):
- __name__ = "RapideoPl"
+ __name__ = "RapideoPl"
+ __type__ = "account"
__version__ = "0.01"
- __type__ = "account"
+
__description__ = "Rapideo.pl account plugin"
- __license__ = "GPLv3"
- __authors__ = [("goddie", "dev@rapideo.pl")]
+ __license__ = "GPLv3"
+ __authors__ = [("goddie", "dev@rapideo.pl")]
- _api_url = "http://enc.rapideo.pl"
- _api_query = {
- "site": "newrd",
- "username": "",
- "password": "",
- "output": "json",
- "loc": "1",
- "info": "1"
- }
+ API_URL = "http://enc.rapideo.pl"
+ API_QUERY = {'site' : "newrd",
+ 'username': "" ,
+ 'password': "" ,
+ 'output' : "json" ,
+ 'loc' : "1" ,
+ 'info' : "1" }
_req = None
_usr = None
_pwd = None
+
def loadAccountInfo(self, name, req):
self._req = req
try:
- result = loads(self.runAuthQuery())
+ result = json_loads(self.runAuthQuery())
except Exception:
# todo: return or let it be thrown?
return
premium = False
valid_untill = -1
+
if "expire" in result.keys() and result["expire"]:
premium = True
valid_untill = time.mktime(datetime.datetime.fromtimestamp(int(result["expire"])).timetuple())
traffic_left = result["balance"]
- return ({
- "validuntil": valid_untill,
- "trafficleft": traffic_left,
- "premium": premium
- })
+ return {'validuntil' : valid_untill,
+ 'trafficleft': traffic_left,
+ 'premium' : premium }
+
def login(self, user, data, req):
self._usr = user
self._pwd = hashlib.md5(data["password"]).hexdigest()
self._req = req
+
try:
- response = loads(self.runAuthQuery())
+ response = json_loads(self.runAuthQuery())
except Exception:
self.wrongPassword()
if "errno" in response.keys():
self.wrongPassword()
+
data['usr'] = self._usr
data['pwd'] = self._pwd
+
def createAuthQuery(self):
- query = self._api_query
+ query = self.API_QUERY
query["username"] = self._usr
query["password"] = self._pwd
-
return query
- def runAuthQuery(self):
- data = self._req.load(self._api_url, post=self.createAuthQuery())
- return data \ No newline at end of file
+ def runAuthQuery(self):
+ return self._req.load(self.API_URL, post=self.createAuthQuery())
diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py
index 23d7aff53..5ff30e061 100644
--- a/module/plugins/accounts/RapidgatorNet.py
+++ b/module/plugins/accounts/RapidgatorNet.py
@@ -24,7 +24,7 @@ class RapidgatorNet(Account):
sid = None
try:
- sid = self.getAccountData(user).get('sid')
+ sid = self.getAccountData(user).get('sid', None)
assert sid
html = req.load("%s/info" % self.API_URL, get={'sid': sid})
diff --git a/module/plugins/accounts/RealdebridCom.py b/module/plugins/accounts/RealdebridCom.py
index 41d8a0975..ad2975aa9 100644
--- a/module/plugins/accounts/RealdebridCom.py
+++ b/module/plugins/accounts/RealdebridCom.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-import xml.dom.minidom as dom
+import xml.dom.minidom
from module.plugins.Account import Account
@@ -19,7 +19,7 @@ class RealdebridCom(Account):
if self.pin_code:
return {"premium": False}
html = req.load("https://real-debrid.com/api/account.php")
- xml = dom.parseString(html)
+ xml = xml.dom.minidom.parseString(html)
account_info = {"validuntil": float(xml.getElementsByTagName("expiration")[0].childNodes[0].nodeValue),
"trafficleft": -1}
diff --git a/module/plugins/accounts/WebshareCz.py b/module/plugins/accounts/WebshareCz.py
index f032e2317..8c53dd41e 100644
--- a/module/plugins/accounts/WebshareCz.py
+++ b/module/plugins/accounts/WebshareCz.py
@@ -12,7 +12,7 @@ from module.plugins.Account import Account
class WebshareCz(Account):
__name__ = "WebshareCz"
__type__ = "account"
- __version__ = "0.07"
+ __version__ = "0.08"
__description__ = """Webshare.cz account plugin"""
__license__ = "GPLv3"
@@ -26,7 +26,7 @@ class WebshareCz(Account):
def loadAccountInfo(self, user, req):
html = req.load("https://webshare.cz/api/user_data/",
- post={'wst': self.infos['wst']},
+ post={'wst': self.getAccountData(user).get('wst', None)},
decode=True)
self.logDebug("Response: " + html)
@@ -65,4 +65,4 @@ class WebshareCz(Account):
if "<status>OK</status>" not in login:
self.wrongPassword()
- self.infos['wst'] = re.search('<token>(.+)</token>', login).group(1)
+ data['wst'] = re.search('<token>(.+)</token>', login).group(1)
diff --git a/module/plugins/accounts/WorldbytezCom.py b/module/plugins/accounts/WorldbytezCom.py
new file mode 100644
index 000000000..a90dbea56
--- /dev/null
+++ b/module/plugins/accounts/WorldbytezCom.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.XFSAccount import XFSAccount
+
+
+class WorldbytezCom(XFSAccount):
+ __name__ = "WorldbytezCom"
+ __type__ = "account"
+ __version__ = "0.01"
+
+ __description__ = """Worldbytez.com account plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
+
+ HOSTER_DOMAIN = "worldbytez.com"