From 0715dcafc11567e07b8f1c252bbd2b86065ae760 Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Thu, 12 Jan 2012 17:10:25 +0100 Subject: linkdecrypter api (thx flowlee), fix uloz.to, 1fichier - closed #493, #494, #496 --- module/plugins/hoster/DlFreeFr.py | 73 ------------------ module/plugins/hoster/OneFichierCom.py | 130 +++++++-------------------------- module/plugins/hoster/UlozTo.py | 14 ++-- 3 files changed, 33 insertions(+), 184 deletions(-) delete mode 100644 module/plugins/hoster/DlFreeFr.py (limited to 'module/plugins/hoster') diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py deleted file mode 100644 index 8ab9dd8eb..000000000 --- a/module/plugins/hoster/DlFreeFr.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import re - -from module.plugins.Hoster import Hoster - -class DlFreeFr(Hoster): - __name__ = "DlFreeFr" - __type__ = "hoster" - __pattern__ = r"http://dl\.free\.fr/([a-zA-Z0-9]+|getfile\.pl\?file=/[a-zA-Z0-9]+)$" - __version__ = "0.1" - __description__ = """dl.free.fr download hoster""" - __author_name__ = ("the-razer") - __author_mail__ = ("daniel_ AT gmx DOT net") - - def setup(self): - self.html = None - self.multiDL = False - - def process(self, pyfile): - - self.download_html() - - if not self.file_exists(): - self.log.debug(self.__name__+": File not yet available.") - self.offline() - - pyfile.name = self.get_file_name() - - url = self.get_file_url() - if url: - self.download(url) - else: - self.offline() - - def download_html(self): - self.html = self.load(self.pyfile.url, cookies=False) - - def file_exists(self): - warnings = (r"Erreur 404 - Document non trouv", - r"Fichier inexistant.", - r"Le fichier demandé n'a pas été trouvé") - expr = '(' + '|'.join(warnings) + ')' - if re.search(expr, self.html) is not None: - return False - return True - - def get_file_url(self): - self.log.debug(self.__name__+": Getting file URL") - file_url_pattern = r'href="(?Phttp://.*?)">Télécharger ce fichier' - - m = re.search(file_url_pattern, self.html) - if m is not None: - url = m.group('url') - self.log.debug(self.__name__+": File URL [%s]" % url) - return url - else: - self.log.debug(self.__name__+": Error getting URL") - return False - - def get_file_name(self): - self.log.debug(self.__name__+": Getting file name") - - file_name_pattern = r"Fichier:\s*(?P.*?)" - m = re.search(file_name_pattern, self.html) - - if m is not None: - name = m.group('name').strip() - self.log.debug(self.__name__+": File name [%s]" % name) - return name - else: - self.log.debug(self.__name__+": Could not find filename") diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index 3343c7c8c..16401891b 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -1,80 +1,29 @@ # -*- coding: utf-8 -*- import re +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo -from module.plugins.Hoster import Hoster -from module.network.RequestFactory import getURL - - -def getInfo(urls): - result = [] - - for url in urls: - - # Get file info html - id = re.match(OneFichierCom.__pattern__, url).group('id') - url = 'http://%s.1fichier.com/en' % id # Force response in english - html = getURL(url) - - # Offline? - if re.search(OneFichierCom.FILE_OFFLINE_PATTERN, html): - result.append((url, 0, 1, url)) - continue - - # Name - for pattern in OneFichierCom.FILE_NAME_PATTERNS: - m = re.search(pattern, html) - if m is not None: - name = m.group('name').strip() - - # Size - m = re.search(OneFichierCom.FILE_SIZE_PATTERN, html) - value = float(m.group('size')) - units = m.group('units')[0].upper() - pow = {'K' : 1, 'M' : 2, 'G' : 3}[units] - size = int(value*1024**pow) - - # Return info - result.append((name, size, 2, url)) - - yield result - - -class OneFichierCom(Hoster): +class OneFichierCom(SimpleHoster): __name__ = "OneFichierCom" __type__ = "hoster" - __pattern__ = r"http://(?P[a-z0-9]+)\.1fichier\.com(?P.*)" - __version__ = "0.3" + __pattern__ = r"(http://\w+\.((1fichier|d(es)?fichiers|pjointe)\.(com|fr|net|org)|(cjoint|mesfichiers|piecejointe|oi)\.(org|net)|tenvoi\.(com|org|net)|dl4free\.com|alterupload\.com|megadl.fr))" + __version__ = "0.4" __description__ = """1fichier.com download hoster""" - __author_name__ = ("fragonib") - __author_mail__ = ("fragonib[AT]yahoo[DOT]es") + __author_name__ = ("fragonib", "the-razer", "zoidberg") + __author_mail__ = ("fragonib[AT]yahoo[DOT]es", "daniel_ AT gmx DOT net", "zoidberg@mujmail.cz") + + FILE_NAME_PATTERN = r'">File name :[\t\r\n ]+(?P.*?)' + FILE_SIZE_PATTERN = r'File size :\s+(?P[\d\.]*) (?P\w+)' + FILE_OFFLINE_PATTERN = r'The (requested)? file (could not be found|has been deleted)' + FILE_URL_REPLACEMENTS = [(r'(http://[^/]*).*', r'\1/en/')] - FILE_NAME_PATTERNS = ( - r'">File name :[\t\r\n ]+(?P.*?)', - r">Click here to download (?P.*?)", - r"content=\"Download the file named (?P.*?)\">", - r"Download the file\s*:\s*(?P<name>.*?)" - ) - FILE_SIZE_PATTERN = r"File size :\s+(?P[\d\.]*) (?P\w+)" - DOWNLOAD_LINK_PATTERN = r'
 
 
 \s+ 
 
 \s+
(?P[^<]+)' FILE_SIZE_PATTERN = r'
\s*
[^<]*\s+(?P[0-9.]+\s[kMG]B)\s*
\s*
' - FILE_SIZE_REPLACEMENTS = [('(\d+)\.?(\d+)? (\w)B', convertDecimalPrefix), (' ','')] + FILE_SIZE_REPLACEMENTS = [('([0-9.]+)\s([kMG])B', convertDecimalPrefix)] FILE_OFFLINE_PATTERN = r'http://www.uloz.to/(neexistujici|smazano|nenalezeno)' PASSWD_PATTERN = r'' @@ -70,7 +70,7 @@ class UlozTo(SimpleHoster): if re.search(self.VIPLINK_PATTERN, self.html): self.html = self.load(pyfile.url, get={"disclaimer": "1"}) - if self.premium and self.checkCredit(): + if self.premium and self.checkTrafficLeft(): self.handlePremium() else: self.handleFree() @@ -97,7 +97,7 @@ class UlozTo(SimpleHoster): self.log.debug('CAPTCHA_URL:' + captcha_url + ' CAPTCHA:' + captcha + ' CAPTCHA_NB:' + captcha_nb) # download and check - self.download(parsed_url, post={"captcha_user": captcha, "captcha_nb": captcha_nb}, cookies=True, disposition = True) + self.download(parsed_url, post={"captcha_user": captcha, "captcha_nb": captcha_nb}, cookies=True) self.doCheckDownload() self.setStorage("captchaUser", captcha) @@ -105,7 +105,7 @@ class UlozTo(SimpleHoster): def handlePremium(self): parsed_url = self.findDownloadURL(premium=True) - self.download(parsed_url, disposition = True) + self.download(parsed_url) self.doCheckDownload() def findDownloadURL(self, premium=False): -- cgit v1.2.3