summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Sahil Shekhawat <sahilshekhawat01@gmail.com> 2015-01-05 19:30:26 +0100
committerGravatar Sahil Shekhawat <sahilshekhawat01@gmail.com> 2015-01-05 19:30:26 +0100
commit3b8330037e09edd5f1d7475a4b176131f89bcd41 (patch)
tree184c40d06157ccd04fc4675b83cb55002e9b7146
parent[DlProtectCom] Update (diff)
downloadpyload-3b8330037e09edd5f1d7475a4b176131f89bcd41.tar.xz
Created plugin for Nitroflare.com
-rw-r--r--module/plugins/hoster/NitroflareCom.py86
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