# -*- coding: utf-8 -*-
import time
from module.plugins.internal.MultiAccount import MultiAccount
class ZeveraCom(MultiAccount):
__name__ = "ZeveraCom"
__type__ = "account"
__version__ = "0.32"
__status__ = "testing"
__config__ = [("mh_mode" , "all;listed;unlisted", "Filter hosters to use" , "all"),
("mh_list" , "str" , "Hoster list (comma separated)", "" ),
("mh_interval", "int" , "Reload interval in minutes" , 60 )]
__description__ = """Zevera.com account plugin"""
__license__ = "GPLv3"
__authors__ = [("zoidberg", "zoidberg@mujmail.cz"),
("Walter Purcaro", "vuolter@gmail.com")]
PLUGIN_DOMAIN = "zevera.com"
def grab_hosters(self, user, password, data):
html = self.api_response(user, password, cmd="gethosters")
return [x.strip() for x in html.split(",")]
def __init__(self, manager, accounts): #@TODO: remove in 0.4.10
self.init()
return super(ZeveraCom, self).__init__(manager, accounts)
def init(self):
if not self.PLUGIN_DOMAIN:
self.log_error(_("Missing PLUGIN_DOMAIN"))
if not hasattr(self, "API_URL"):
self.API_URL = "http://api.%s/jDownloader.ashx" % (self.PLUGIN_DOMAIN or "")
def grab_info(self, user, password, data):
validuntil = None
trafficleft = None
premium = False
api = self.api_response(user, password)
if "No trafic" not in api and api['endsubscriptiondate'] != "Expired!":
validuntil = time.mktime(time.strptime(api['endsubscriptiondate'], "%Y/%m/%d %H:%M:%S"))
trafficleft = float(api['availabletodaytraffic']) * 1024 if api['orondaytrafficlimit'] != '0' else -1
premium = True
return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium}
def signin(self, user, password, data):
if self.api_response(user, password) == "No trafic":
self.fail_login()
def api_response(self, user, password=None, just_header=False, **kwargs):
get_data = {'cmd' : "accountinfo",
'login': user,
'pass' : password}
get_data.update(kwargs)
res = self.load(self.API_URL,
get=get_data,
just_header=just_header)
self.log_debug(res)
if ':' in res:
if not just_header:
res = res.replace(',', '\n')
return dict((y.strip().lower(), z.strip()) for (y, z) in
[x.split(':', 1) for x in res.splitlines() if ':' in x])
else:
return res