diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/plugins/hoster/OneFichierCom.py | 59 | 
1 files changed, 58 insertions, 1 deletions
diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index cba67b26c..93f056377 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -2,13 +2,14 @@  import re +from module.network.RequestFactory import getURL as get_url  from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo  class OneFichierCom(SimpleHoster):      __name__    = "OneFichierCom"      __type__    = "hoster" -    __version__ = "0.88" +    __version__ = "0.89"      __status__  = "testing"      __pattern__ = r'https?://(?:www\.)?(?:(?P<ID1>\w+)\.)?(?P<HOST>1fichier\.com|alterupload\.com|cjoint\.net|d(es)?fichiers\.com|dl4free\.com|megadl\.fr|mesfichiers\.org|piecejointe\.net|pjointe\.com|tenvoi\.com)(?:/\?(?P<ID2>\w+))?' @@ -28,6 +29,8 @@ class OneFichierCom(SimpleHoster):      COOKIES     = [("1fichier.com", "LG", "en")] +    DIRECT_LINK = True +      NAME_PATTERN    = r'>File\s*Name :</td>\s*<td.*>(?P<N>.+?)<'      SIZE_PATTERN    = r'>Size :</td>\s*<td.*>(?P<S>[\d.,]+) (?P<U>[\w^_]+)'      OFFLINE_PATTERN = r'File not found !\s*<' @@ -40,7 +43,61 @@ class OneFichierCom(SimpleHoster):          self.resume_download = True +    @classmethod +    def get_info(cls, url="", html=""): +        redirect = url +        for i in xrange(10): +            try: +                headers = dict(re.findall(r"(?P<name>.+?): (?P<value>.+?)\r?\n", get_url(redirect, just_header=True).lower())) +                if 'location' in headers and headers['location']: +                    redirect = headers['location'] +                else: +                    if 'content-type' in headers and headers['content-type'] == "application/octet-stream": +                        if "filename=" in headers.get('content-disposition'): +                            name = dict(_i.split("=") for _i in map(str.strip, headers['content-disposition'].split(";"))[1:]['filename'].strip("\"'") +                        else: +                            name = url + +                        info = {'name'  : name, +                                'size'  : long(headers.get('content-length')), +                                'status': 3, +                                'url'   : url} + +                    else: +                        info = super(OneFichierCom, cls).get_info(url, html) + +                    break + +            except Exception, e: +                info = {'status' : 8, +                        'error'  : e.message} + +        else: +            info = {'status' : 8, +                    'error'    : _("Too many redirects")} + +        return info + + +    def handle_direct(self, pyfile): +        redirect = pyfile.url +        for i in xrange(self.get_config("maxredirs", plugin="UserAgentSwitcher")): + +            headers = self.load(redirect, just_header=True) +            if 'location' in headers and headers['location']: +                self.log_debug("Redirect #%d to: %s" % (i, redirect)) +                redirect = headers['location'] +            else: +                if 'content-type' in headers and headers['content-type'] == "application/octet-stream": +                    self.link = pyfile.url +                break +        else: +            self.fail(_("Too many redirects")) + +      def handle_free(self, pyfile): +        self.check_errors() +          id = self.info['pattern']['ID1'] or self.info['pattern']['ID2']          url, inputs = self.parse_html_form('action="https://1fichier.com/\?%s' % id)  | 
