# -*- coding: utf-8 -*- import re from time import time from pyload.utils import json_loads from pyload.plugin.internal.SimpleHoster import SimpleHoster, create_getInfo class BayfilesCom(SimpleHoster): __name = "BayfilesCom" __type = "hoster" __version = "0.08" __pattern = r'https?://(?:www\.)?bayfiles\.(com|net)/file/(?P<ID>\w+/\w+/[^/]+)' __description = """Bayfiles.com hoster plugin""" __license = "GPLv3" __authors = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] INFO_PATTERN = r'<p title="(?P<N>[^"]+)">[^<]*<strong>(?P<S>[\d .,]+)(?P<U>[\w^_]+)</strong></p>' OFFLINE_PATTERN = r'(<p>The requested file could not be found.</p>|<title>404 Not Found</title>)' WAIT_PATTERN = r'>Your IP [\d.]* has recently downloaded a file\. Upgrade to premium or wait (\d+) minutes\.<' VARS_PATTERN = r'var vfid = (\d+);\s*var delay = (\d+);' FREE_LINK_PATTERN = r'javascript:window\.location\.href = \'(.+?)\';' PREMIUM_LINK_PATTERN = r'(?:<a class="highlighted-btn" href="|(?=http://s\d+\.baycdn\.com/dl/))(.*?)"' def handleFree(self): m = re.search(self.WAIT_PATTERN, self.html) if m: self.retry(wait_time=int(m.group(1)) * 60) # Get download token m = re.search(self.VARS_PATTERN, self.html) if m is None: self.error(_("VARS_PATTERN not found")) vfid, delay = m.groups() res = json_loads(self.load('http://bayfiles.com/ajax_download', get={"_": time() * 1000, "action": "startTimer", "vfid": vfid}, decode=True)) if not "token" in res or not res['token']: self.fail(_("No token")) self.wait(int(delay)) self.html = self.load('http://bayfiles.com/ajax_download', get={ "token": res['token'], "action": "getLink", "vfid": vfid}) # Get final link and download m = re.search(self.FREE_LINK_PATTERN, self.html) if m is None: self.error(_("Free link")) self.startDownload(m.group(1)) def handlePremium(self): m = re.search(self.PREMIUM_LINK_PATTERN, self.html) if m is None: self.error(_("Premium link")) self.startDownload(m.group(1)) def startDownload(self, url): self.logDebug("%s URL: %s" % ("Premium" if self.premium else "Free", url)) self.download(url) # check download check = self.checkDownload({ "waitforfreeslots": re.compile(r"<title>BayFiles</title>"), "notfound": re.compile(r"<title>404 Not Found</title>") }) if check == "waitforfreeslots": self.retry(30, 5 * 60, "Wait for free slot") elif check == "notfound": self.retry(30, 5 * 60, "404 Not found") getInfo = create_getInfo(BayfilesCom)