diff options
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/ExtabitCom.py | 5 | ||||
-rw-r--r-- | module/plugins/hoster/FileserveCom.py | 5 | ||||
-rw-r--r-- | module/plugins/hoster/FreakshareCom.py | 4 | ||||
-rw-r--r-- | module/plugins/hoster/HighWayMe.py | 4 | ||||
-rw-r--r-- | module/plugins/hoster/Keep2ShareCc.py | 20 | ||||
-rw-r--r-- | module/plugins/hoster/LetitbitNet.py | 5 | ||||
-rw-r--r-- | module/plugins/hoster/LinksnappyCom.py | 7 | ||||
-rw-r--r-- | module/plugins/hoster/NitroflareCom.py | 1 | ||||
-rw-r--r-- | module/plugins/hoster/OneFichierCom.py | 35 | ||||
-rw-r--r-- | module/plugins/hoster/RyushareCom.py | 2 | ||||
-rw-r--r-- | module/plugins/hoster/ShareonlineBiz.py | 2 | ||||
-rw-r--r-- | module/plugins/hoster/UgouploadNet.py | 56 | ||||
-rw-r--r-- | module/plugins/hoster/UpleaCom.py | 12 | ||||
-rw-r--r-- | module/plugins/hoster/UpstoreNet.py | 36 |
14 files changed, 144 insertions, 50 deletions
diff --git a/module/plugins/hoster/ExtabitCom.py b/module/plugins/hoster/ExtabitCom.py index 328714229..c573cca1a 100644 --- a/module/plugins/hoster/ExtabitCom.py +++ b/module/plugins/hoster/ExtabitCom.py @@ -5,13 +5,14 @@ import re from module.plugins.internal.utils import json from module.plugins.captcha.ReCaptcha import ReCaptcha -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, seconds_to_midnight +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo +from module.plugins.internal.utils import seconds_to_midnight class ExtabitCom(SimpleHoster): __name__ = "ExtabitCom" __type__ = "hoster" - __version__ = "0.70" + __version__ = "0.71" __status__ = "testing" __pattern__ = r'http://(?:www\.)?extabit\.com/(file|go|fid)/(?P<ID>\w+)' diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index d30559646..97041c434 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -5,8 +5,7 @@ import re from module.network.RequestFactory import getURL as get_url from module.plugins.captcha.ReCaptcha import ReCaptcha from module.plugins.internal.Hoster import Hoster -from module.plugins.internal.SimpleHoster import seconds_to_midnight -from module.plugins.internal.utils import chunks, json, parse_size +from module.plugins.internal.utils import chunks, json, parse_size, seconds_to_midnight def check_file(plugin, urls): @@ -32,7 +31,7 @@ def check_file(plugin, urls): class FileserveCom(Hoster): __name__ = "FileserveCom" __type__ = "hoster" - __version__ = "0.64" + __version__ = "0.65" __status__ = "testing" __pattern__ = r'http://(?:www\.)?fileserve\.com/file/(?P<ID>[^/]+)' diff --git a/module/plugins/hoster/FreakshareCom.py b/module/plugins/hoster/FreakshareCom.py index 3881e53e7..e1366913e 100644 --- a/module/plugins/hoster/FreakshareCom.py +++ b/module/plugins/hoster/FreakshareCom.py @@ -4,13 +4,13 @@ import re from module.plugins.internal.Hoster import Hoster from module.plugins.captcha.ReCaptcha import ReCaptcha -from module.plugins.internal.SimpleHoster import seconds_to_midnight +from module.plugins.internal.utils import seconds_to_midnight class FreakshareCom(Hoster): __name__ = "FreakshareCom" __type__ = "hoster" - __version__ = "0.46" + __version__ = "0.47" __status__ = "testing" __pattern__ = r'http://(?:www\.)?freakshare\.(net|com)/files/\S*?/' diff --git a/module/plugins/hoster/HighWayMe.py b/module/plugins/hoster/HighWayMe.py index 6c66dce3e..178c11daf 100644 --- a/module/plugins/hoster/HighWayMe.py +++ b/module/plugins/hoster/HighWayMe.py @@ -3,13 +3,13 @@ import re from module.plugins.internal.MultiHoster import MultiHoster, create_getInfo -from module.plugins.internal.SimpleHoster import seconds_to_midnight +from module.plugins.internal.utils import seconds_to_midnight class HighWayMe(MultiHoster): __name__ = "HighWayMe" __type__ = "hoster" - __version__ = "0.17" + __version__ = "0.18" __status__ = "testing" __pattern__ = r'https?://.+high-way\.my' diff --git a/module/plugins/hoster/Keep2ShareCc.py b/module/plugins/hoster/Keep2ShareCc.py index c927ea11c..1dba9713a 100644 --- a/module/plugins/hoster/Keep2ShareCc.py +++ b/module/plugins/hoster/Keep2ShareCc.py @@ -11,7 +11,7 @@ class Keep2ShareCc(SimpleHoster): __name__ = "Keep2ShareCc" __type__ = "hoster" __version__ = "0.28" - __status__ = "broken" + __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(keep2share|k2s|keep2s)\.cc/file/(?P<ID>\w+)' __config__ = [("activated" , "bool", "Activated" , True), @@ -34,8 +34,9 @@ class Keep2ShareCc(SimpleHoster): OFFLINE_PATTERN = r'File not found or deleted|Sorry, this file is blocked or deleted|Error 404' TEMP_OFFLINE_PATTERN = r'Downloading blocked due to' - LINK_FREE_PATTERN = r'"(.+?url.html\?file=.+?)"|window\.location\.href = \'(.+?)\';' + LINK_FREE_PATTERN = r'"([^"]+?url.html\?file=.+?)"|window\.location\.href = \'(.+?)\';' LINK_PREMIUM_PATTERN = r'window\.location\.href = \'(.+?)\';' + UNIQUE_ID_PATTERN = r"data: {uniqueId: '(?P<uID>\w+)', free: 1}" CAPTCHA_PATTERN = r'src="(/file/captcha\.html.+?)"' @@ -68,6 +69,7 @@ class Keep2ShareCc(SimpleHoster): self.retry(wait=wait_time, msg="Please wait to download this file") self.info.pop('error', None) + # super(Keep2ShareCc, self).check_errors() def handle_free(self, pyfile): @@ -83,13 +85,22 @@ class Keep2ShareCc(SimpleHoster): if m is None: self.handle_captcha() self.wait(31) - self.data = self.load(pyfile.url) + # get the uniqueId from the html code + m = re.search(self.UNIQUE_ID_PATTERN, self.data) + if m is None: + self.error(_("Unique-ID pattern not found")) + self.data = self.load(pyfile.url, post={'uniqueId': m.group('uID'), 'free': '1'}) m = re.search(self.LINK_FREE_PATTERN, self.data) if m is None: self.error(_("Free download link not found")) - self.link = m.group(1) + # if group 1 did not match, check group 2 + if m.group(1) is not None: + self.link = m.group(1) + else: + self.link = m.group(2) + self.log_debug("download link: %s" % self.link) def handle_captcha(self): @@ -121,3 +132,4 @@ class Keep2ShareCc(SimpleHoster): getInfo = create_getInfo(Keep2ShareCc) + diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py index 95b938c6a..2d50651bd 100644 --- a/module/plugins/hoster/LetitbitNet.py +++ b/module/plugins/hoster/LetitbitNet.py @@ -12,7 +12,8 @@ import urlparse from module.plugins.internal.utils import json from module.network.RequestFactory import getURL as get_url from module.plugins.captcha.ReCaptcha import ReCaptcha -from module.plugins.internal.SimpleHoster import SimpleHoster, seconds_to_midnight +from module.plugins.internal.SimpleHoster import SimpleHoster +from module.plugins.internal.utils import seconds_to_midnight def api_response(url): @@ -35,7 +36,7 @@ def get_info(urls): class LetitbitNet(SimpleHoster): __name__ = "LetitbitNet" __type__ = "hoster" - __version__ = "0.35" + __version__ = "0.36" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(letitbit|shareflare)\.net/download/.+' diff --git a/module/plugins/hoster/LinksnappyCom.py b/module/plugins/hoster/LinksnappyCom.py index a57f0f830..9ac1053c2 100644 --- a/module/plugins/hoster/LinksnappyCom.py +++ b/module/plugins/hoster/LinksnappyCom.py @@ -10,7 +10,7 @@ from module.plugins.internal.utils import json class LinksnappyCom(MultiHoster): __name__ = "LinksnappyCom" __type__ = "hoster" - __version__ = "0.14" + __version__ = "0.15" __status__ = "testing" __pattern__ = r'https?://(?:[^/]+\.)?linksnappy\.com' @@ -23,7 +23,8 @@ class LinksnappyCom(MultiHoster): __description__ = """Linksnappy.com multi-hoster plugin""" __license__ = "GPLv3" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __authors__ = [("stickell", "l.stickell@yahoo.it"), + ("Bilal Ghouri", None )] def handle_premium(self, pyfile): @@ -33,7 +34,7 @@ class LinksnappyCom(MultiHoster): 'username': self.account.user, 'password': self.account.get_login('password')}) - r = self.load("http://linksnappy.com/api/linkgen", + r = self.load("https://linksnappy.com/api/linkgen", post={'genLinks': json_params}) self.log_debug("JSON data: " + r) diff --git a/module/plugins/hoster/NitroflareCom.py b/module/plugins/hoster/NitroflareCom.py index 7970ae460..9ca6ab187 100644 --- a/module/plugins/hoster/NitroflareCom.py +++ b/module/plugins/hoster/NitroflareCom.py @@ -29,6 +29,7 @@ class NitroflareCom(SimpleHoster): OFFLINE_PATTERN = r'>File doesn\'t exist' LINK_PREMIUM_PATTERN = LINK_FREE_PATTERN = r'(https?://[\w\-]+\.nitroflare\.com/.+?)"' + DIRECT_LINK = False RECAPTCHA_KEY = "6Lenx_USAAAAAF5L1pmTWvWcH73dipAEzNnmNLgy" PREMIUM_ONLY_PATTERN = r'This file is available with Premium only' diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index b657fe484..ef6f49da3 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -9,10 +9,10 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class OneFichierCom(SimpleHoster): __name__ = "OneFichierCom" __type__ = "hoster" - __version__ = "0.95" + __version__ = "0.97" __status__ = "testing" - __pattern__ = r'https?://(?:www\.)?(?:\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)(?:/\?\w+)?' + __pattern__ = r'https?://(?:www\.)?(?:\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)(?:/\?\w+)?' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("fallback" , "bool", "Fallback to free download if premium fails" , True), @@ -28,22 +28,24 @@ class OneFichierCom(SimpleHoster): ("stickell", "l.stickell@yahoo.it"), ("Elrick69", "elrick69[AT]rocketmail[DOT]com"), ("Walter Purcaro", "vuolter@gmail.com"), - ("Ludovic Lehmann", "ludo.lehmann@gmail.com")] + ("Ludovic Lehmann", "ludo.lehmann@gmail.com"), + ("GammaC0de", "nitzo2001[AT]yahoo[DOT]com")] + DISPOSITION = False #@TODO: Remove disposition in 0.4.10 URL_REPLACEMENTS = [("https:", "http:")] #@TODO: Remove in 0.4.10 - COOKIES = [("1fichier.com", "LG", "en")] + COOKIES = [("1fichier.com", "LG", "en")] - 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*<' - - WAIT_PATTERN = r'>You must wait \d+ minutes' + 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*<' + LINK_PATTERN = r'<a href="(.+?)".*>Click here to download the file</a>' + WAIT_PATTERN = r'>You must wait \d+ minutes' def setup(self): - self.multiDL = self.premium + self.multiDL = self.premium self.resume_download = True @@ -52,7 +54,7 @@ class OneFichierCom(SimpleHoster): 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())) + headers = dict((k.lower(), v) for k,v in re.findall(r"(?P<name>.+?): (?P<value>.+?)\r?\n", get_url(redirect, just_header=True))) if 'location' in headers and headers['location']: redirect = headers['location'] else: @@ -94,13 +96,16 @@ class OneFichierCom(SimpleHoster): if "pass" in inputs: inputs['pass'] = self.get_password() - inputs['submit'] = "Download" + inputs['dl_no_ssl'] = "on" + + self.data=self.load(url, post=inputs) - self.download(url, post=inputs) + m = re.search(self.LINK_PATTERN, self.data) + if m: + self.link = m.group(1) def handle_premium(self, pyfile): - self.download(pyfile.url, post={'did': 0, 'dl_no_ssl': "on"}) + self.download(pyfile.url, post={'did': 0, 'dl_no_ssl': "on"}, disposition=False) #@TODO: Remove disposition in 0.4.10 -getInfo = create_getInfo(OneFichierCom) diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index 79822877d..392b18348 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -6,7 +6,7 @@ from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo class RyushareCom(DeadHoster): __name__ = "RyushareCom" __type__ = "hoster" - __version__ = "0.17" + __version__ = "0.30" __status__ = "stable" __pattern__ = r'http://(?:www\.)?ryushare\.com/\w+' diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py index 24c25a43a..06c9f6cfe 100644 --- a/module/plugins/hoster/ShareonlineBiz.py +++ b/module/plugins/hoster/ShareonlineBiz.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class ShareonlineBiz(SimpleHoster): __name__ = "ShareonlineBiz" __type__ = "hoster" - __version__ = "0.63" + __version__ = "0.64" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(share-online\.biz|egoshare\.com)/(download\.php\?id=|dl/)(?P<ID>\w+)' diff --git a/module/plugins/hoster/UgouploadNet.py b/module/plugins/hoster/UgouploadNet.py new file mode 100644 index 000000000..fec2e11d1 --- /dev/null +++ b/module/plugins/hoster/UgouploadNet.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.captcha.ReCaptcha import ReCaptcha +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class UgouploadNet(SimpleHoster): + __name__ = "UgouploadNet" + __type__ = "hoster" + __version__ = "0.02" + __status__ = "testing" + + __pattern__ = r'https?://(?:www)?\.ugoupload\.net/\w{4}/.+' + __config__ = [("activated" , "bool", "Activated" , True), + ("use_premium" , "bool", "Use premium account if available" , True), + ("fallback" , "bool", "Fallback to free download if premium fails" , True), + ("chk_filesize", "bool", "Check file size" , True), + ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] + + __description__ = """ugoupload.net hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("GammaC0de", "nitzo2001[AT]yahoo[DOT]com")] + + + NAME_PATTERN = r'<div class="heading-1 animated".*>(.+?)</div>' + SIZE_PATTERN = r'\((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)<br/>' + + WAIT_PATTERN = r'var seconds = (\d+);' + LINK_FREE_PATTERN = r"<a class='btn btn-free' href='(.+?)'" + + RECAPTCHA_KEY = "6LeuAc4SAAAAAOSry8eo2xW64K1sjHEKsQ5CaS10" + + + def setup(self): + self.resume_download = False + self.multiDL = False + + + def handle_free(self, pyfile): + if self.req.code == 404: + self.offline() + + self.check_errors() + + m = re.search(self.LINK_FREE_PATTERN, self.data) + if m: + recaptcha = ReCaptcha(self) + response, challenge = recaptcha.challenge(self.RECAPTCHA_KEY) + + self.download(m.group(1), post={'recaptcha_challenge_field': challenge, + 'recaptcha_response_field': response, + 'submit': "Submit", + 'submitted': "1", + 'd': "1"}) diff --git a/module/plugins/hoster/UpleaCom.py b/module/plugins/hoster/UpleaCom.py index d1656556b..c552adc0f 100644 --- a/module/plugins/hoster/UpleaCom.py +++ b/module/plugins/hoster/UpleaCom.py @@ -9,7 +9,7 @@ from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo class UpleaCom(XFSHoster): __name__ = "UpleaCom" __type__ = "hoster" - __version__ = "0.15" + __version__ = "0.16" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?uplea\.com/dl/\w{15}' @@ -36,7 +36,7 @@ class UpleaCom(XFSHoster): LINK_PATTERN = r'"(https?://\w+\.uplea\.com/anonym/.*?)"' PREMIUM_ONLY_PATTERN = r'You need to have a Premium subscription to download this file' - WAIT_PATTERN = r'timeText: ?([\d.]+),' + WAIT_PATTERN = r'timeText: ?(\d+),' STEP_PATTERN = r'<a href="(/step/.+)">' @@ -54,8 +54,7 @@ class UpleaCom(XFSHoster): self.data = self.load(urlparse.urljoin("http://uplea.com/", m.group(1))) m = re.search(self.WAIT_PATTERN, self.data) - if m is not None: - self.log_debug("Waiting %s seconds" % m.group(1)) + if m: self.wait(m.group(1), True) self.retry() @@ -64,7 +63,10 @@ class UpleaCom(XFSHoster): self.error(_("LINK_PATTERN not found")) self.link = m.group(1) - self.wait(15) + + m = re.search(r".ulCounter\({'timer':(\d+)}\)", self.data) + if m: + self.wait(m.group(1)) getInfo = create_getInfo(UpleaCom) diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index c863dff9d..4fcf6dcfa 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -9,16 +9,10 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class UpstoreNet(SimpleHoster): __name__ = "UpstoreNet" __type__ = "hoster" - __version__ = "0.09" + __version__ = "0.10" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?upstore\.net/' - __config__ = [("activated" , "bool", "Activated" , True), - ("use_premium" , "bool", "Use premium account if available" , True), - ("fallback" , "bool", "Fallback to free download if premium fails" , True), - ("chk_filesize", "bool", "Check file size" , True), - ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] - __description__ = """Upstore.Net File Download Hoster""" __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com")] @@ -27,9 +21,12 @@ class UpstoreNet(SimpleHoster): INFO_PATTERN = r'<div class="comment">.*?</div>\s*\n<h2 style="margin:0">(?P<N>.*?)</h2>\s*\n<div class="comment">\s*\n\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'<span class="error">File not found</span>' + LONG_WAIT_PATTERN = r'You should wait (\d+) min. before downloading next' WAIT_PATTERN = r'var sec = (\d+)' CHASH_PATTERN = r'<input type="hidden" name="hash" value="(.+?)">' LINK_FREE_PATTERN = r'<a href="(https?://.*?)" target="_blank"><b>' + WRONG_CAPTCHA_PATTERN = r'Wrong captcha' + PREMIUM_ONLY_PATTERN = r'available only for Premium' def handle_free(self, pyfile): @@ -42,6 +39,7 @@ class UpstoreNet(SimpleHoster): #: Continue to stage2 post_data = {'hash': chash, 'free': 'Slow download'} self.data = self.load(pyfile.url, post=post_data) + self.check_errors() #: STAGE 2: solv captcha and wait #: First get the infos we need: recaptcha key and wait time @@ -64,13 +62,31 @@ class UpstoreNet(SimpleHoster): self.data = self.load(pyfile.url, post=post_data) - #: STAGE 3: get direct link + # check whether the captcha was wrong + m = re.search(self.WRONG_CAPTCHA_PATTERN, self.data, re.S) + if m is not None: + continue + + + # STAGE 3: get direct link or wait time + m = re.search(self.LONG_WAIT_PATTERN, self.data, re.S) + if m is not None: + wait_time = 60* int(m.group(1)) + self.wantReconnect = True + self.retry(wait=wait_time, reason=_("Please wait to download this file")) + m = re.search(self.LINK_FREE_PATTERN, self.data, re.S) if m is not None: + self.link = m.group(1) break - if m is not None: - self.link = m.group(1) + # sometimes, upstore just restarts the countdown without saying anything... + # in this case we'll just wait 1h and retry + self.wantReconnect = True + self.retry(wait_time=3600, reason=_("Upstore doesn't like us today")) + + getInfo = create_getInfo(UpstoreNet) + |