diff options
author | Sahil Shekhawat <sahilshekhawat01@gmail.com> | 2015-01-05 19:30:26 +0100 |
---|---|---|
committer | Sahil Shekhawat <sahilshekhawat01@gmail.com> | 2015-01-05 19:30:26 +0100 |
commit | 3b8330037e09edd5f1d7475a4b176131f89bcd41 (patch) | |
tree | 184c40d06157ccd04fc4675b83cb55002e9b7146 | |
parent | [DlProtectCom] Update (diff) | |
download | pyload-3b8330037e09edd5f1d7475a4b176131f89bcd41.tar.xz |
Created plugin for Nitroflare.com
-rw-r--r-- | module/plugins/hoster/NitroflareCom.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/module/plugins/hoster/NitroflareCom.py b/module/plugins/hoster/NitroflareCom.py new file mode 100644 index 000000000..c31431cc2 --- /dev/null +++ b/module/plugins/hoster/NitroflareCom.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- + +import re +import json + +from module.plugins.Hoster import Hoster +from module.plugins.internal.CaptchaService import ReCaptcha + + +""" + Right now premium support is not added + Thus, any file that require premium support + cannot be downloaded. Only the file that is free to + download can be downloaded. +""" +class NitroflareCom(Hoster): + __name__ = "NitroflareCom" + __type__ = "hoster" + __version__ = "0.01" + + __pattern__ = r'https?://(?:www\.)?(nitroflare\.com/view)/(?P<ID>[A-Z0-9]+)' + __description__ = """Nitroflare.com hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("sahil", None)] + + BASE_URL = "https://nitroflare.com" + API_URL = "https://nitroflare.com/api/" + DOWNLOAD_PATTERN = "\"(https?://[a-z0-9\\-_]+\\.nitroflare\\.com/[^<>\"]*?)\"" + + def process(self, pyfile): + + if "https://" not in pyfile.url: + pyfile.url = self.correct_download_link(pyfile.url) + + url_match = re.match(self.__pattern__, pyfile.url) + file_uid = url_match.group('ID') + if self.checkLink(file_uid): + file_info = self.load(self.API_URL + "getDownloadLink?file=" + file_uid) + self.logWarning(file_info[3:]) + file_info = json.loads(file_info[3:]) # removing non ascii characters + if file_info['type'] == "success": + result = file_info['result'] # already a dict + if result['linkType'] == "free": + delay = result['delay'] # Don't need the delay for free downloads + captch_key = result['recaptchaPublic'] + filename = result['name'] + recaptcha = ReCaptcha(self) + # try upto 3 times to solve reCaptcha + for i in xrange(3): + challenge, response = recaptcha.challenge(key=captch_key) + res = self.load(self.BASE_URL + "/ajax/freeDownload.php", + post={"method": "fetchDownload", + "recaptcha_challenge_field": challenge, + "recaptcha_response_field": response}) + if self.handleCaptchaErrors(res): + break + if "The captcha wasn't entered correctly" or "You have to fill the captcha" in res: + continue + else: + break + + if "The captcha wasn't entered correctly" or "You have to fill the captcha" in res: + self.logError("Captcha Failed") + self.offline() + # Captcha failed + else: + self.logInfo("result of the captcha is") + self.logInfo(res) + # self.offline() + download_link = re.search(self.DOWNLOAD_PATTERN, res) + if download_link is None: + print "downloasd link failed" + # Download link failed + else: + self.download(download_link) + else: + print "link is invalid" + self.offline() + # Link is invalid + # self.download() + + def correct_download_link(self, url): + return url.replace("http://", "https://") + + def checkLink(self, url): + return True
\ No newline at end of file |