\w+) uploaded'
DIRECT_LINK_PATTERN = r''
def handleFree(self):
self.html = self.load(self.pyfile.url, decode=True)
if "Currently only Premium Members can download files larger than" in self.html:
self.fail("File too large for free download")
elif "All free download slots on this server are currently in use" in self.html:
self.retry(50, 900, "All free slots are busy")
m = re.search(r'data-href-direct="(http://[^"]+)"', self.html)
if m:
self.setWait(30)
self.wait()
direct = m.group(1)
else: # This section could be completely useless now
# Load the page that contains the direct link
url = re.search(r"document\.location\.host \+\s*'(.+)';", self.html)
if not url:
self.parseError('Unable to detect free link')
url = 'http://www.filefactory.com' + url.group(1)
self.html = self.load(url, decode=True)
# Free downloads wait time
waittime = re.search(r'id="startWait" value="(\d+)"', self.html)
if not waittime:
self.parseError('Unable to detect wait time')
self.setWait(int(waittime.group(1)))
self.wait()
# Parse the direct link and download it
direct = re.search(r'data-href-direct="(.*)" class="button', self.html)
if not direct:
self.parseError('Unable to detect free direct link')
direct = direct.group(1)
self.logDebug('DIRECT LINK: ' + direct)
self.download(direct, disposition=True)
check = self.checkDownload({"multiple": "You are currently downloading too many files at once.",
"error": ''})
if check == "multiple":
self.logDebug("Parallel downloads detected; waiting 15 minutes")
self.retry(wait_time=15 * 60, reason='Parallel downloads')
elif check == "error":
self.fail("Unknown error")
def handlePremium(self):
header = self.load(self.pyfile.url, just_header=True)
if 'location' in header:
url = header['location'].strip()
if not url.startswith("http://"):
url = "http://www.filefactory.com" + url
elif 'content-disposition' in header:
url = self.pyfile.url
else:
html = self.load(self.pyfile.url)
found = re.search(self.DIRECT_LINK_PATTERN, html)
if found:
url = found.group(1)
else:
self.parseError('Unable to detect premium direct link')
self.logDebug('DIRECT PREMIUM LINK: ' + url)
self.download(url, disposition=True)
getInfo = create_getInfo(FilefactoryCom)