from module.plugins.Account import Account
import xml.dom.minidom as dom
from BeautifulSoup import BeautifulSoup
from time import time
import re
import urllib

class AlldebridCom(Account):
    __name__ = "AlldebridCom"
    __version__ = "0.21"
    __type__ = "account"
    __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()