summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorGravatar Sahil Shekhawat <sahilshekhawat01@gmail.com> 2015-01-11 14:36:09 +0100
committerGravatar Sahil Shekhawat <sahilshekhawat01@gmail.com> 2015-01-11 14:36:09 +0100
commitb2d6eb15db1f50428801c6e63c64de4675db6f78 (patch)
tree36ca8d97ba80f61872b694690e9e866842ef1ff0 /module
parentMerge branch 'stable' of https://github.com/pyload/pyload into stable (diff)
downloadpyload-b2d6eb15db1f50428801c6e63c64de4675db6f78.tar.xz
updated nitroflare.com's plugin
Diffstat (limited to 'module')
-rw-r--r--module/plugins/hoster/NitroflareCom.py90
1 files changed, 54 insertions, 36 deletions
diff --git a/module/plugins/hoster/NitroflareCom.py b/module/plugins/hoster/NitroflareCom.py
index c31431cc2..5b535591a 100644
--- a/module/plugins/hoster/NitroflareCom.py
+++ b/module/plugins/hoster/NitroflareCom.py
@@ -3,20 +3,15 @@
import re
import json
+from time import sleep
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"
+ __version__ = "0.13"
__pattern__ = r'https?://(?:www\.)?(nitroflare\.com/view)/(?P<ID>[A-Z0-9]+)'
__description__ = """Nitroflare.com hoster plugin"""
@@ -26,6 +21,8 @@ class NitroflareCom(Hoster):
BASE_URL = "https://nitroflare.com"
API_URL = "https://nitroflare.com/api/"
DOWNLOAD_PATTERN = "\"(https?://[a-z0-9\\-_]+\\.nitroflare\\.com/[^<>\"]*?)\""
+ IS_FREE = True
+ PREMIUM_URL = BASE_URL + "/payment"
def process(self, pyfile):
@@ -41,46 +38,67 @@ class NitroflareCom(Hoster):
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
+ delay = int(result['delay'])
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
+ main_page = self.load(pyfile.url)
+ go_to_free_page = self.load(pyfile.url,
+ post={"goToFreePage": ""})
+ # challenge, response = recaptcha.challenge(key=captch_key)
+ res = self.load(self.BASE_URL + "/ajax/freeDownload.php",
+ post={"method": "startTimer",
+ "fileId": file_uid})[4:]
- if "The captcha wasn't entered correctly" or "You have to fill the captcha" in res:
- self.logError("Captcha Failed")
- self.offline()
- # Captcha failed
+ if "This file is available with premium key only" in res:
+ self.fail("This file is available with premium key only")
+ if "downloading is not possible" in res:
+ wait_time = re.search("You have to wait (\\d+) minutes to download your next file", res)
+ if wait_time is not None:
+ self.fail("IP Address blocked")
+ self.fail("Downloading is not possible")
else:
- self.logInfo("result of the captcha is")
self.logInfo(res)
- # self.offline()
- download_link = re.search(self.DOWNLOAD_PATTERN, res)
+ js_file = self.load(self.BASE_URL + "/js/downloadFree.js?v=1.0.1")
+ var_time = re.search("var time = (\\d+);", js_file)
+ wait = 60
+ if var_time is not None:
+ wait = int(var_time.groups()[0])
+ self.setWait(wait)
+ self.wait()
+ for i in xrange(3):
+ challenge, response = recaptcha.challenge(key=captch_key)
+ res_final = self.load(self.BASE_URL + "/ajax/freeDownload.php",
+ post={"method": "fetchDownload",
+ "recaptcha_challenge_field": challenge,
+ "recaptcha_response_field": response})[3:]
+ self.logInfo(res_final)
+
+ if self.handleCaptchaErrors(res_final):
+ break
+ if "The captcha wasn't entered correctly" or "You have to fill the captcha" in res_final:
+ continue
+ else:
+ break
+ download_link = re.search(self.DOWNLOAD_PATTERN, res_final)
if download_link is None:
- print "downloasd link failed"
- # Download link failed
+ self.fail("Could not find a download link. Please check the download link again")
else:
- self.download(download_link)
+ try:
+ self.download(download_link)
+ except:
+ self.fail("Downloading failed")
else:
- print "link is invalid"
- self.offline()
- # Link is invalid
- # self.download()
+ self.fail("Link is not valid. Please check the link again")
def correct_download_link(self, url):
return url.replace("http://", "https://")
def checkLink(self, url):
- return True \ No newline at end of file
+ return True
+
+ def handle_api(self, download_url, account):
+ handle_downloadAPI(download_url, account)
+
+ def enable_premium(self, url):
+ self.IS_FREE = False # To try premium