import xml.dom.minidom as dom from time import time import re import urllib from pyload.plugins.MultiHoster import MultiHoster from BeautifulSoup import BeautifulSoup class AlldebridCom(MultiHoster): __name__ = "AlldebridCom" __version__ = "0.21" __type__ = "account" __config__ = [("activated", "bool", "Activated", "False"), ("https", "bool", "Enable HTTPS", "False"), ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported)", "all"), ("hosterList", "str", "Hoster list (comma separated)", ""), ("unloadFailing", "bool", "Revert to stanard download if download fails", "False"), ("interval", "int", "Reload interval in hours (0 to disable)", "24")] __description__ = """AllDebrid.com account plugin""" __author_name__ = ("Andy, Voigt") __author_mail__ = ("spamsales@online.de") def loadAccountInfo(self, user, req): data = self.getAccountData(user) page = req.load("http://www.alldebrid.com/account/") soup = BeautifulSoup(page) #Try to parse expiration date directly from the control panel page (better accuracy) try: time_text = soup.find('div', attrs={'class': 'remaining_time_text'}).strong.string self.log.debug("Account expires in: %s" % time_text) p = re.compile('\d+') exp_data = p.findall(time_text) exp_time = time() + int(exp_data[0]) * 24 * 60 * 60 + int( exp_data[1]) * 60 * 60 + (int(exp_data[2]) - 1) * 60 #Get expiration date from API except: data = self.getAccountData(user) page = req.load("http://www.alldebrid.com/api.php?action=info_user&login=%s&pw=%s" % (user, data["password"])) self.log.debug(page) xml = dom.parseString(page) exp_time = time() + int(xml.getElementsByTagName("date")[0].childNodes[0].nodeValue) * 86400 account_info = {"validuntil": exp_time, "trafficleft": -1} return account_info def login(self, user, data, req): urlparams = urllib.urlencode({'action': 'login', 'login_login': user, 'login_password': data["password"]}) page = req.load("http://www.alldebrid.com/register/?%s" % urlparams) if "This login doesn't exist" in page: self.wrongPassword() if "The password is not valid" in page: self.wrongPassword() if "Invalid captcha" in page: self.wrongPassword() def loadHosterList(self, req): https = "https" if self.getConfig("https") else "http" page = req.load(https + "://www.alldebrid.com/api.php?action=get_host").replace("\"","").strip() return [x.strip() for x in page.split(",") if x.strip()]