#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from module.plugins.Hoster import Hoster
from module.plugins.Plugin import chunks
from module.network.Request import getURL
#from module.BeautifulSoup import BeautifulSoup
def getInfo(urls):
    api_url = "http://www.share.cx/uapi?do=check&links="
    
    for chunk in chunks(urls, 90):
        get = ""
        for url in chunk:
            get += ";"+url
            
        api = getURL(api_url+get[1:])
        result = []
        
        for i, link in enumerate(api.split()):
            url,name,size = link.split(";")
            if name and size:
                status = 2
            else:
                status = 1
                
            if not name: name = chunk[i]
            if not size: size = 0
                
            result.append( (name, size, status, chunk[i]) )
        
        yield result
class ShareCx(Hoster):
    __name__ = "ShareCx"
    __type__ = "hoster"
    __pattern__ = r"http://[\w\.]*?share\.cx/(files|videos)/\d+"
    __version__ = "0.2"
    __description__ = """Share.cx Download Hoster"""
    __author_name__ = ("jeix")
    __author_mail__ = ("jeix@hasnomail.de")
        
        
    def setup(self):
        self.multiDL = False
        
        
    def process(self, pyfile):
        self.pyfile = pyfile
        self.download_html()
        if not self.file_exists():
            self.offline()
            
        pyfile.name = self.get_file_name()
        self.doDownload()
        
        
    def download_html(self):
        self.html = self.load(self.pyfile.url)
    def doDownload(self):
        """ returns the absolute downloadable filepath
        """
        if self.html is None:
            self.download_html()
        try:
            op          = re.search(r'name="op" value="(.*?)"', self.html).group(1)
            usr_login   = re.search(r'name="usr_login" value="(.*?)"', self.html).group(1)
            id          = re.search(r'name="id" value="(.*?)"', self.html).group(1)
            fname       = re.search(r'name="fname" value="(.*?)"', self.html).group(1)
            referer     = re.search(r'name="referer" value="(.*?)"', self.html).group(1)
            method_free = "Datei+herunterladen"
            
            self.html   = self.load(self.pyfile.url, post={
                    "op" : op,
                    "usr_login" : usr_login,
                    "id" : id,
                    "fname" : fname,
                    "referer" : referer,
                    "method_free" : method_free
                })
        except:
            # looks like we ARE already on page 2
            pass
        m = re.search(r'startTimer\((\d+)\)', self.html)
        if m is not None:
            wait_time = int(m.group(1))
            self.setWait(wait_time)
            self.wantReconnect = True
            self.log.debug("%s: IP blocked wait %d seconds." % (self.__name__, wait_time))
            self.wait()
            self.retry()
            
        m = re.search(r'countdown">.*?(\d+).*?', self.html)
        if m is None:
            m = re.search(r'id="countdown_str".*?.*?(\d+).*?Download: (.*?) at Share.cx', self.html).group(1)
        return name
    def file_exists(self):
        """ returns True or False
        """
        if self.html is None:
            self.download_html()
        
        if re.search(r'File not found
It was deleted due to inactivity or abuse request', self.html) is not None:
            return False
        return True