class RarefileNet(XFileSharingPro): __name__ = "RarefileNet" __type__ = "hoster" __pattern__ = r'http://(?:www\.)?rarefile.net/\w{12}' __version__ = "0.03" __description__ = """Rarefile.net hoster plugin""" __author_name__ = "zoidberg" __author_mail__ = "*****@*****.**" HOSTER_NAME = "rarefile.net" FILE_NAME_PATTERN = r'<td><font color="red">(?P<N>.*?)</font></td>' FILE_SIZE_PATTERN = r'<td>Size : (?P<S>.+?) ' DIRECT_LINK_PATTERN = r'<a href="(?P<link>[^"]+)">(?P=link)</a>' def setup(self): self.resumeDownload = self.multiDL = self.premium def handleCaptcha(self, inputs): captcha_div = re.search(r'<b>Enter code.*?<div.*?>(.*?)</div>', self.html, re.S).group(1) self.logDebug(captcha_div) numerals = re.findall('<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div)) inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))]) self.logDebug("CAPTCHA", inputs['code'], numerals) return 3 getInfo = create_getInfo(RarefileNet)
# This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ # Test links (random.bin): # http://hugefiles.net/prthf9ya4w6s from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class HugefilesNet(XFileSharingPro): __name__ = "HugefilesNet" __type__ = "hoster" __pattern__ = r"http://(www\.)?hugefiles\.net/\w{12}" __version__ = "0.01" __description__ = """Hugefiles.net hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "hugefiles.net" FILE_SIZE_PATTERN = r'File Size:</span>\s*<span[^>]*>(?P<S>[^<]+)</span></div>' getInfo = create_getInfo(HugefilesNet)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class CyberlockerCh(XFileSharingPro): __name__ = "CyberlockerCh" __type__ = "hoster" __pattern__ = r"http://(www\.)?cyberlocker\.ch/\w{12}" __version__ = "0.01" __description__ = """Cyberlocker.ch hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "cyberlocker.ch" getInfo = create_getInfo(CyberlockerCh)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class UptoboxCom(XFileSharingPro): __name__ = "UptoboxCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?uptobox.com/\w{12}" __version__ = "0.06" __description__ = """Uptobox.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_INFO_PATTERN = r'<h2>\s*Download File\s*<span[^>]*>(?P<N>[^>]+)</span></h2>\s*[^\(]*\((?P<S>[^\)]+)\)</h2>' FILE_OFFLINE_PATTERN = r'<center>File Not Found</center>' HOSTER_NAME = "uptobox.com" def setup(self): self.resumeDownload = self.multiDL = self.premium self.chunkLimit = 1 getInfo = create_getInfo(UptoboxCom)
class File4safeCom(XFileSharingPro): __name__ = "File4safeCom" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?file4safe\.com/\w+' __version__ = "0.01" __description__ = """File4safe.com hoster plugin""" __author_name__ = "stickell" __author_mail__ = "*****@*****.**" HOSTER_NAME = "file4safe.com" def handlePremium(self): self.req.http.lastURL = self.pyfile.url self.req.http.c.setopt(FOLLOWLOCATION, 0) self.load(self.pyfile.url, post=self.getPostParameters(), decode=True) self.header = self.req.http.header self.req.http.c.setopt(FOLLOWLOCATION, 1) found = re.search(r"Location\s*:\s*(.*)", self.header, re.I) if found and re.match(self.DIRECT_LINK_PATTERN, found.group(1)): location = found.group(1).strip() self.startDownload(location) else: self.parseError("Unable to detect premium download link") getInfo = create_getInfo(File4safeCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SendmywayCom(XFileSharingPro): __name__ = "SendmywayCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?sendmyway.com/\w{12}" __version__ = "0.01" __description__ = """SendMyWay hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_NAME_PATTERN = r'<p class="file-name" ><.*?>\s*(?P<N>.+)' FILE_SIZE_PATTERN = r'<small>\((?P<S>\d+) bytes\)</small>' HOSTER_NAME = "sendmyway.com" getInfo = create_getInfo(SendmywayCom)
for i in xrange(5): m = re.search(self.SOLVEMEDIA_PATTERN, self.html) if not m: self.parseError("Error parsing captcha") captchaKey = m.group(1) captcha = SolveMedia(self) challenge, response = captcha.challenge(captchaKey) inputs["adcopy_challenge"] = challenge inputs["adcopy_response"] = response self.html = self.load(self.pyfile.url, post=inputs) if "WRONG CAPTCHA" in self.html: self.invalidCaptcha() self.logInfo("Invalid Captcha") else: self.correctCaptcha() break else: self.fail("You have entered 5 invalid captcha codes") if 'Click here to download' in self.html: m = re.search(self.DIRECT_LINK_PATTERN, self.html) return m.group(1) getInfo = create_getInfo(RyushareCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SharebeesCom(XFileSharingPro): __name__ = "SharebeesCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?sharebees.com/\w{12}" __version__ = "0.01" __description__ = """ShareBees hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_NAME_PATTERN = r'<p class="file-name" ><.*?>\s*(?P<N>.+)' FILE_SIZE_PATTERN = r'<small>\((?P<S>\d+) bytes\)</small>' FORM_PATTERN = 'F1' HOSTER_NAME = "sharebees.com" getInfo = create_getInfo(SharebeesCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class BillionuploadsCom(XFileSharingPro): __name__ = "BillionuploadsCom" __type__ = "hoster" __pattern__ = r'http://(?:www\.)?billionuploads.com/\w{12}' __version__ = "0.01" __description__ = """Billionuploads.com hoster plugin""" __author_name__ = "zoidberg" __author_mail__ = "*****@*****.**" HOSTER_NAME = "billionuploads.com" FILE_NAME_PATTERN = r'<b>Filename:</b>(?P<N>.*?)<br>' FILE_SIZE_PATTERN = r'<b>Size:</b>(?P<S>.*?)<br>' getInfo = create_getInfo(BillionuploadsCom)
# You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # # @author: Walter Purcaro ############################################################################### from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class UptoboxCom(XFileSharingPro): __name__ = "UptoboxCom" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w+' __version__ = "0.08" __description__ = """Uptobox.com hoster plugin""" __author_name__ = "Walter Purcaro" __author_mail__ = "*****@*****.**" HOSTER_NAME = "uptobox.com" FILE_INFO_PATTERN = r'"para_title">(?P<N>.+) \((?P<S>[\d\.]+) (?P<U>\w+)\)' FILE_OFFLINE_PATTERN = r'>(File not found|Access Denied|404 Not Found)' TEMP_OFFLINE_PATTERN = r'>This server is in maintenance mode' WAIT_PATTERN = r'>(\d+)</span> seconds<' DIRECT_LINK_PATTERN = r'"(https?://\w+\.uptobox\.com/d/.*?)"' getInfo = create_getInfo(UptoboxCom)
# -*- coding: utf-8 -*- # Test links: # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://vidplay.net/38lkev0h3jv0 from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class VidPlayNet(XFileSharingPro): __name__ = "VidPlayNet" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?vidplay\.net/\w{12}' __version__ = "0.01" __description__ = """VidPlay.net hoster plugin""" __author_name__ = "t4skforce" __author_mail__ = "t4skforce1337[AT]gmail[DOT]com" HOSTER_NAME = "vidplay.net" FILE_OFFLINE_PATTERN = r'<b>File Not Found</b><br>\s*<br>' FILE_NAME_PATTERN = r'<b>Password:</b></div>\s*<h[1-6]>(?P<N>[^<]+)</h[1-6]>' DIRECT_LINK_PATTERN = r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+)?(/d/|(?:/files)?/\d+/\w+/)[^"\'<&]+)' % HOSTER_NAME getInfo = create_getInfo(VidPlayNet)
__type__ = "hoster" __version__ = "0.1" __pattern__ = r"http://(?:www\.)?nosupload\.com/\?d=\w{12}" __description__ = """Nosupload.com hoster plugin""" __author_name__ = "igel" __author_mail__ = "*****@*****.**" HOSTER_NAME = "nosupload.com" FILE_SIZE_PATTERN = r"<p><strong>Size:</strong> (?P<S>[0-9\.]+) (?P<U>[kKMG]?B)</p>" DIRECT_LINK_PATTERN = r'<a class="select" href="(http://.+?)">Download</a>' WAIT_PATTERN = r"Please wait.*?>(\d+)</span>" def getDownloadLink(self): # stage1: press the "Free Download" button data = self.getPostParameters() self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) # stage2: wait some time and press the "Download File" button data = self.getPostParameters() wait_time = re.search(self.WAIT_PATTERN, self.html, re.MULTILINE | re.DOTALL).group(1) self.logDebug("hoster told us to wait %s seconds" % wait_time) self.wait(wait_time) self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) # stage3: get the download link return re.search(self.DIRECT_LINK_PATTERN, self.html, re.S).group(1) getInfo = create_getInfo(NosuploadCom)
# published by the Free Software Foundation, either version 3 of the # # License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class MegareleaseOrg(XFileSharingPro): __name__ = "MegareleaseOrg" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?megarelease.org/\w{12}' __version__ = "0.01" __description__ = """Megarelease.org hoster plugin""" __author_name__ = ("derek3x", "stickell") __author_mail__ = ("*****@*****.**", "*****@*****.**") HOSTER_NAME = "megarelease.org" FILE_INFO_PATTERN = r'<font color="red">%s/(?P<N>.+)</font> \((?P<S>[^)]+)\)</font>' % __pattern__ getInfo = create_getInfo(MegareleaseOrg)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SpeedLoadOrg(XFileSharingPro): __name__ = "SpeedLoadOrg" __type__ = "hoster" __pattern__ = r"http://(www\.)?speedload\.org/(?P<ID>\w+)" __version__ = "1.01" __description__ = """Speedload.org hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") FILE_NAME_PATTERN = r'Filename:</b></td><td nowrap>(?P<N>[^<]+)</td></tr>' FILE_SIZE_PATTERN = r'Size:</b></td><td>[\w. ]+<small>\((?P<S>\d+) bytes\)</small>' HOSTER_NAME = "speedload.org" def handlePremium(self): self.download(self.pyfile.url, post=self.getPostParameters()) getInfo = create_getInfo(SpeedLoadOrg)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class RyushareCom(XFileSharingPro): __name__ = "RyushareCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?ryushare.com/\w{12}" __version__ = "0.02" __description__ = """ryushare.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "ryushare.com" def setup(self): self.resumeDownload = self.multiDL = self.premium getInfo = create_getInfo(RyushareCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SendmywayCom(XFileSharingPro): __name__ = "SendmywayCom" __type__ = "hoster" __pattern__ = r'http://(?:www\.)?sendmyway.com/\w{12}' __version__ = "0.01" __description__ = """SendMyWay hoster plugin""" __author_name__ = "zoidberg" __author_mail__ = "*****@*****.**" HOSTER_NAME = "sendmyway.com" FILE_NAME_PATTERN = r'<p class="file-name" ><.*?>\s*(?P<N>.+)' FILE_SIZE_PATTERN = r'<small>\((?P<S>\d+) bytes\)</small>' getInfo = create_getInfo(SendmywayCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SecureUploadEu(XFileSharingPro): __name__ = "SecureUploadEu" __type__ = "hoster" __pattern__ = r"http://(www\.)?secureupload\.eu/(\w){12}(/\w+)" __version__ = "0.01" __description__ = """SecureUpload.eu hoster plugin""" __author_name__ = ("z00nx") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "secureupload.eu" FILE_INFO_PATTERN = '<h3>Downloading (?P<N>[^<]+) \((?P<S>[^<]+)\)</h3>' FILE_OFFLINE_PATTERN = 'The file was removed|File Not Found' getInfo = create_getInfo(SecureUploadEu)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class IFileWs(XFileSharingPro): __name__ = "IFileWs" __type__ = "hoster" __pattern__ = r"http://(?:www\.)?ifile\.ws/\w+(/.+)?" __version__ = "0.01" __description__ = """Ifile.ws hoster plugin""" __author_name__ = "z00nx" __author_mail__ = "*****@*****.**" HOSTER_NAME = "ifile.ws" FILE_INFO_PATTERN = '<h1\s+style="display:inline;">(?P<N>[^<]+)</h1>\s+\[(?P<S>[^]]+)\]' FILE_OFFLINE_PATTERN = "File Not Found|The file was removed by administrator" LONG_WAIT_PATTERN = "(?P<M>\d(?=\s+minutes)).*(?P<S>\d+(?=\s+seconds))" getInfo = create_getInfo(IFileWs)
self.html = self.load("http://www.%s/" % self.HOSTER_NAME) action, inputs = self.parseHtmlForm('') upload_id = "%012d" % int(random()*10**12) action += upload_id + "&js_on=1&utype=prem&upload_type=url" inputs['tos'] = '1' inputs['url_mass'] = self.pyfile.url inputs['up1oad_type'] = 'url' self.logDebug(action, inputs) #wait for file to upload to easybytez.com self.req.http.c.setopt(LOW_SPEED_TIME, 600) self.html = self.load(action, post = inputs) action, inputs = self.parseHtmlForm('F1') if not inputs: self.parseError('TEXTAREA') self.logDebug(inputs) if inputs['st'] == 'OK': self.html = self.load(action, post = inputs) elif inputs['st'] == 'Can not leech file': self.retry(max_tries=20, wait_time=180, reason=inputs['st']) else: self.fail(inputs['st']) #get easybytez.com link for uploaded file found = re.search(self.OVR_DOWNLOAD_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK (OVR)') self.pyfile.url = found.group(1) self.retry() getInfo = create_getInfo(EasybytezCom)
HOSTER_NAME = "nosupload.com" FILE_SIZE_PATTERN = r'<p><strong>Size:</strong> (?P<S>[0-9\.]+) (?P<U>[kKMG]?B)</p>' DIRECT_LINK_PATTERN = r'<a class="select" href="(http://.+?)">Download</a>' WAIT_PATTERN = r'Please wait.*?>(\d+)</span>' def getDownloadLink(self): # stage1: press the "Free Download" button data = self.getPostParameters() self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) # stage2: wait some time and press the "Download File" button data = self.getPostParameters() wait_time = re.search(self.WAIT_PATTERN, self.html, re.MULTILINE | re.DOTALL).group(1) self.logDebug("hoster told us to wait %s seconds" % wait_time) self.wait(wait_time) self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) # stage3: get the download link return re.search(self.DIRECT_LINK_PATTERN, self.html, re.S).group(1) getInfo = create_getInfo(NosuploadCom)
action, inputs = self.parseHtmlForm('') upload_id = "%012d" % int(random() * 10**12) action += upload_id + "&js_on=1&utype=prem&upload_type=url" inputs['tos'] = '1' inputs['url_mass'] = self.pyfile.url inputs['up1oad_type'] = 'url' self.logDebug(action, inputs) #wait for file to upload to easybytez.com self.req.http.c.setopt(LOW_SPEED_TIME, 600) self.html = self.load(action, post=inputs) action, inputs = self.parseHtmlForm('F1') if not inputs: self.parseError('TEXTAREA') self.logDebug(inputs) if inputs['st'] == 'OK': self.html = self.load(action, post=inputs) elif inputs['st'] == 'Can not leech file': self.retry(max_tries=20, wait_time=180, reason=inputs['st']) else: self.fail(inputs['st']) #get easybytez.com link for uploaded file found = re.search(self.OVR_DOWNLOAD_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK (OVR)') self.pyfile.url = found.group(1) self.retry() getInfo = create_getInfo(EasybytezCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class SpeedLoadOrg(XFileSharingPro): __name__ = "SpeedLoadOrg" __type__ = "hoster" __pattern__ = r"http://(www\.)?speedload\.org/(?P<ID>\w+)" __version__ = "1.01" __description__ = """Speedload.org hoster plugin""" __author_name__ = "stickell" __author_mail__ = "*****@*****.**" FILE_NAME_PATTERN = r"Filename:</b></td><td nowrap>(?P<N>[^<]+)</td></tr>" FILE_SIZE_PATTERN = r"Size:</b></td><td>[\w. ]+<small>\((?P<S>\d+) bytes\)</small>" HOSTER_NAME = "speedload.org" def handlePremium(self): self.download(self.pyfile.url, post=self.getPostParameters()) getInfo = create_getInfo(SpeedLoadOrg)
__version__ = "0.1" __pattern__ = r"http://filezy.net/.*/.*.html" __description__ = """filezy.net hoster plugin""" HOSTER_NAME = "filezy.net" FILE_SIZE_PATTERN = r'<span class="plansize">(?P<S>[0-9.]+) (?P<U>[kKMG])i?B</span>' WAIT_PATTERN = r'<div id="countdown_str" class="seconds">\n<!--Wait--> <span id=".*?">(\d+)</span>' DOWNLOAD_JS_PATTERN = r"<script type='text/javascript'>eval(.*)" def setup(self): self.resumeDownload = True self.multiDL = self.premium def getDownloadLink(self): self.logDebug("Getting download link") data = self.getPostParameters() self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) obfuscated_js = re.search(self.DOWNLOAD_JS_PATTERN, self.html) dl_file_now = self.js.eval(obfuscated_js.group(1)) link = re.search(self.DIRECT_LINK_PATTERN, dl_file_now) return link.group(1) getInfo = create_getInfo(FilezyNet)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class PotloadCom(XFileSharingPro): __name__ = "PotloadCom" __type__ = "hoster" __pattern__ = r"http://(?:www\.)?potload\.com/\w{12}" __version__ = "0.01" __description__ = """billionuploads.com hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") FILE_INFO_PATTERN = r'<h[1-6]>(?P<N>.+) \((?P<S>\d+) (?P<U>\w+)\)</h' HOSTER_NAME = "potload.com" getInfo = create_getInfo(PotloadCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class BoltsharingCom(XFileSharingPro): __name__ = "BoltsharingCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?boltsharing.com/\w{12}" __version__ = "0.01" __description__ = """Boltsharing.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "boltsharing.com" getInfo = create_getInfo(BoltsharingCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class BillionuploadsCom(XFileSharingPro): __name__ = "BillionuploadsCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?billionuploads.com/\w{12}" __version__ = "0.01" __description__ = """billionuploads.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_NAME_PATTERN = r'<b>Filename:</b>(?P<N>.*?)<br>' FILE_SIZE_PATTERN = r'<b>Size:</b>(?P<S>.*?)<br>' HOSTER_NAME = "billionuploads.com" getInfo = create_getInfo(BillionuploadsCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class TusfilesNet(XFileSharingPro): __name__ = "TusfilesNet" __type__ = "hoster" __pattern__ = r"http://(?:www\.)?tusfiles\.net/(?P<ID>[a-zA-Z0-9]{12})" __version__ = "0.02" __description__ = """Tusfiles.net hoster plugin""" __author_name__ = ("stickell", "Walter Purcaro") __author_mail__ = ("*****@*****.**", "*****@*****.**") FILE_INFO_PATTERN = r'<li>(?P<N>[^<]+)</li>\s+<li><b>Size:</b> <small>(?P<S>[\d.]+) (?P<U>\w+)</small></li>' FILE_OFFLINE_PATTERN = r'The file you were looking for could not be found' HOSTER_NAME = "tusfiles.net" def setup(self): self.chunkLimit = 1 self.resumeDownload = self.multiDL = True if self.premium: self.limitDL = 5 elif self.account: self.limitDL = 3 else: self.limitDL = 2 getInfo = create_getInfo(TusfilesNet)
# it under the terms of the GNU Affero General Public License as # # published by the Free Software Foundation, either version 3 of the # # License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class MegareleaseOrg(XFileSharingPro): __name__ = "MegareleaseOrg" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?megarelease.org/\w{12}' __version__ = "0.01" __description__ = """Megarelease.org hoster plugin""" __author_name__ = ("derek3x", "stickell") __author_mail__ = ("*****@*****.**", "*****@*****.**") HOSTER_NAME = "megarelease.org" FILE_INFO_PATTERN = r'<font color="red">%s/(?P<N>.+)</font> \((?P<S>[^)]+)\)</font>' % __pattern__ getInfo = create_getInfo(MegareleaseOrg)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class DdlstorageCom(XFileSharingPro): __name__ = "DdlstorageCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?ddlstorage.com/\w{12}" __version__ = "0.06" __description__ = """DDLStorage.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_INFO_PATTERN = r'<h2>\s*Download File\s*<span[^>]*>(?P<N>[^>]+)</span></h2>\s*[^\(]*\((?P<S>[^\)]+)\)</h2>' HOSTER_NAME = "ddlstorage.com" def setup(self): self.resumeDownload = self.multiDL = self.premium self.chunkLimit = 1 getInfo = create_getInfo(DdlstorageCom)
class FilezyNet(XFileSharingPro): __name__ = "FilezyNet" __type__ = "hoster" __version__ = "0.1" __pattern__ = r'http://(?:www\.)?filezy.net/.*/.*.html' __description__ = """Filezy.net hoster plugin""" HOSTER_NAME = "filezy.net" FILE_SIZE_PATTERN = r'<span class="plansize">(?P<S>[0-9.]+) (?P<U>[kKMG])i?B</span>' WAIT_PATTERN = r'<div id="countdown_str" class="seconds">\n<!--Wait--> <span id=".*?">(\d+)</span>' DOWNLOAD_JS_PATTERN = r"<script type='text/javascript'>eval(.*)" def setup(self): self.resumeDownload = True self.multiDL = self.premium def getDownloadLink(self): self.logDebug("Getting download link") data = self.getPostParameters() self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True) obfuscated_js = re.search(self.DOWNLOAD_JS_PATTERN, self.html) dl_file_now = self.js.eval(obfuscated_js.group(1)) link = re.search(self.DIRECT_LINK_PATTERN, dl_file_now) return link.group(1) getInfo = create_getInfo(FilezyNet)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class Share76Com(XFileSharingPro): __name__ = "Share76Com" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?share76.com/\w{12}" __version__ = "0.03" __description__ = """share76.com hoster plugin""" __author_name__ = ("me") FILE_INFO_PATTERN = r'<h2>\s*File:\s*<font[^>]*>(?P<N>[^>]+)</font>\s*\[<font[^>]*>(?P<S>[0-9.]+) (?P<U>[kKMG])i?B</font>\]</h2>' HOSTER_NAME = "share76.com" def setup(self): self.resumeDownload = self.multiDL = self.premium self.chunkLimit = 1 getInfo = create_getInfo(Share76Com)
# -*- coding: utf-8 -*- # Test links: # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://lemuploads.com/uwol0aly9dld from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class LemUploadsCom(XFileSharingPro): __name__ = "LemUploadsCom" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?lemuploads.com/\w{12}' __version__ = "0.01" __description__ = """LemUploads.com hoster plugin""" __author_name__ = "t4skforce" __author_mail__ = "t4skforce1337[AT]gmail[DOT]com" HOSTER_NAME = "lemuploads.com" FILE_OFFLINE_PATTERN = r'<b>File Not Found</b><br><br>' FILE_NAME_PATTERN = r'<b>Password:</b></div>\s*<h2>(?P<N>[^<]+)</h2>' getInfo = create_getInfo(LemUploadsCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class CramitIn(XFileSharingPro): __name__ = "CramitIn" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*cramit.in/\w{12}" __version__ = "0.03" __description__ = """Cramit.in hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_INFO_PATTERN = r'<span class=t2>\s*(?P<N>.*?)</span>.*?<small>\s*\((?P<S>.*?)\)' DIRECT_LINK_PATTERN = r'href="(http://cramit.in/file_download/.*?)"' HOSTER_NAME = "cramit.in" def setup(self): self.multiDL = self.premium getInfo = create_getInfo(CramitIn)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class DdlstorageCom(XFileSharingPro): __name__ = "DdlstorageCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*?ddlstorage.com/\w{12}" __version__ = "0.07" __description__ = """DDLStorage.com hoster plugin""" __author_name__ = ("zoidberg", "stickell") __author_mail__ = ("*****@*****.**", "*****@*****.**") FILE_INFO_PATTERN = r'<p class="sub_title"[^>]*>(?P<N>.+) \((?P<S>[^)]+)\)</p>' HOSTER_NAME = "ddlstorage.com" getInfo = create_getInfo(DdlstorageCom)
# -*- coding: utf-8 -*- import re from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class ShareFilesCo(XFileSharingPro): __name__ = "ShareFilesCo" __type__ = "hoster" __pattern__ = r"http://(www\.)?sharefiles\.co/\w{12}" __version__ = "0.01" __description__ = """Sharefiles.co hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "sharefiles.co" def startDownload(self, link): link = link.strip() if link.startswith('http://adf.ly'): link = re.sub('http://adf.ly/\d+/', '', link) if self.captcha: self.correctCaptcha() self.logDebug('DIRECT LINK: %s' % link) self.download(link) getInfo = create_getInfo(ShareFilesCo)
# -*- coding: utf-8 -*- # Test links: # test.bin - 214 B - http://pandapla.net/pew1cz3ot586 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://pandapla.net/tz0rgjfyyoh7 from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class PandaPlanet(XFileSharingPro): __name__ = "PandaPlanet" __type__ = "hoster" __pattern__ = r"https?://(?:www\.)?pandapla\.net/\w{12}" __version__ = "0.01" __description__ = """Pandapla.net hoster plugin""" __author_name__ = "t4skforce" __author_mail__ = "t4skforce1337[AT]gmail[DOT]com" HOSTER_NAME = "pandapla.net" FILE_SIZE_PATTERN = r"File Size:</b>\s*</td>\s*<td[^>]*>(?P<S>[^<]+)</td>\s*</tr>" FILE_NAME_PATTERN = r"File Name:</b>\s*</td>\s*<td[^>]*>(?P<N>[^<]+)</td>\s*</tr>" DIRECT_LINK_PATTERN = ( r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+)?(/d/|(?:/files)?/\d+/\w+/)[^"\'<]+\/(?!video\.mp4)[^"\'<]+)' % HOSTER_NAME ) getInfo = create_getInfo(PandaPlanet)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class CramitIn(XFileSharingPro): __name__ = "CramitIn" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*cramit.in/\w{12}" __version__ = "0.03" __description__ = """Cramit.in hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_INFO_PATTERN = r'<span class=t2>\s*(?P<N>.*?)</span>.*?<small>\s*\((?P<S>.*?)\)' DIRECT_LINK_PATTERN = r'href="(http://cramit.in/file_download/.*?)"' HOSTER_NAME = "cramit.in" def setup(self): self.multiDL = self.premium getInfo = create_getInfo(CramitIn)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class NovafileCom(XFileSharingPro): __name__ = "NovafileCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*novafile\.com/\w{12}" __version__ = "0.01" __description__ = """novafile.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_SIZE_PATTERN = r'<div class="size">(?P<S>.+?)</div>' #FILE_OFFLINE_PATTERN = '<b>"File Not Found"</b>|File has been removed due to Copyright Claim' FORM_PATTERN = r'name="F\d+"' ERROR_PATTERN = r'class="alert[^"]*alert-separate"[^>]*>\s*(?:<p>)?(.*?)\s*</' DIRECT_LINK_PATTERN = r'<a href="(http://s\d+\.novafile\.com/.*?)" class="btn btn-green">Download File</a>' HOSTER_NAME = "novafile.com" def setup(self): self.multiDL = False getInfo = create_getInfo(NovafileCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class FilerioCom(XFileSharingPro): __name__ = "FilerioCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*(filerio\.(in|com)|filekeen\.com)/\w{12}" __version__ = "0.02" __description__ = """FileRio.in hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_OFFLINE_PATTERN = '<b>"File Not Found"</b>|File has been removed due to Copyright Claim' HOSTER_NAME = "filerio.in" FILE_URL_REPLACEMENTS = [(r'http://.*?/', 'http://filerio.in/')] def setup(self): self.resumeDownload = self.multiDL = self.premium getInfo = create_getInfo(FilerioCom)
# but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ # Test links (random.bin): # http://180upload.com/js9qdm6kjnrs from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class HundredEightyUploadCom(XFileSharingPro): __name__ = "HundredEightyUploadCom" __type__ = "hoster" __pattern__ = r'http://(?:www\.)?180upload\.com/(\w+).*' __version__ = "0.01" __description__ = """180upload.com hoster plugin""" __author_name__ = "stickell" __author_mail__ = "*****@*****.**" HOSTER_NAME = "180upload.com" FILE_NAME_PATTERN = r'Filename:</b></td><td nowrap>(?P<N>.+)</td></tr>-->' FILE_SIZE_PATTERN = r'Size:</b></td><td>(?P<S>[\d.]+) (?P<U>[A-Z]+)\s*<small>' getInfo = create_getInfo(HundredEightyUploadCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class NovafileCom(XFileSharingPro): __name__ = "NovafileCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*novafile\.com/\w{12}" __version__ = "0.01" __description__ = """novafile.com hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_SIZE_PATTERN = r'<div class="size">(?P<S>.+?)</div>' #FILE_OFFLINE_PATTERN = '<b>"File Not Found"</b>|File has been removed due to Copyright Claim' FORM_PATTERN = r'name="F\d+"' ERROR_PATTERN = r'class="alert[^"]*alert-separate"[^>]*>\s*(?:<p>)?(.*?)\s*</' DIRECT_LINK_PATTERN = r'<a href="(http://s\d+\.novafile\.com/.*?)" class="btn btn-green">Download File</a>' HOSTER_NAME = "novafile.com" def setup(self): self.multiDL = False getInfo = create_getInfo(NovafileCom)
# -*- coding: utf-8 -*- from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo import re class FiledinoCom(XFileSharingPro): __name__ = "FiledinoCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*(file(dino|fat).com)/\w{12}" __version__ = "0.02" __description__ = """FileDino / FileFat hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_SIZE_PATTERN = r'File Size : </(span|font)><(span|font)[^>]*>(?P<S>.+?)</(span|font)>' DIRECT_LINK_PATTERN = r'http://www\.file(dino|fat)\.com/cgi-bin/dl\.cgi/' def setup(self): self.HOSTER_NAME = re.search(self.__pattern__, self.pyfile.url).group(1) self.multiDL = False getInfo = create_getInfo(FiledinoCom)
# published by the Free Software Foundation, either version 3 of the # # License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class DuploadOrg(XFileSharingPro): __name__ = "DuploadOrg" __type__ = "hoster" __pattern__ = r"http://(www\.)?dupload\.org/\w{12}" __version__ = "0.01" __description__ = """Dupload.grg hoster plugin""" __author_name__ = ("stickell") __author_mail__ = ("*****@*****.**") HOSTER_NAME = "dupload.org" FILE_INFO_PATTERN = r'<h3[^>]*>(?P<N>.+) \((?P<S>[\d.]+) (?P<U>\w+)\)</h3>' getInfo = create_getInfo(DuploadOrg)
self.captcha = self.handleCaptcha(inputs) if wait_time: self.wait() self.errmsg = None self.logDebug("getPostParameters {0}".format(i)) return inputs else: inputs['referer'] = self.pyfile.url if self.premium: inputs['method_premium'] = "Premium Download" if 'method_free' in inputs: del inputs['method_free'] else: inputs['method_free'] = "Free Download" if 'method_premium' in inputs: del inputs['method_premium'] self.html = self.load(self.pyfile.url, post=inputs, ref=False) self.errmsg = None else: self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) getInfo = create_getInfo(StreamcloudEu)
# -*- coding: utf-8 -*- # Test links: # test.bin - 214 B - http://pandapla.net/pew1cz3ot586 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://pandapla.net/tz0rgjfyyoh7 from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo class PandaPlanet(XFileSharingPro): __name__ = "PandaPlanet" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?pandapla\.net/\w{12}' __version__ = "0.01" __description__ = """Pandapla.net hoster plugin""" __author_name__ = "t4skforce" __author_mail__ = "t4skforce1337[AT]gmail[DOT]com" HOSTER_NAME = "pandapla.net" FILE_SIZE_PATTERN = r'File Size:</b>\s*</td>\s*<td[^>]*>(?P<S>[^<]+)</td>\s*</tr>' FILE_NAME_PATTERN = r'File Name:</b>\s*</td>\s*<td[^>]*>(?P<N>[^<]+)</td>\s*</tr>' DIRECT_LINK_PATTERN = r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+)?(/d/|(?:/files)?/\d+/\w+/)[^"\'<]+\/(?!video\.mp4)[^"\'<]+)' % HOSTER_NAME getInfo = create_getInfo(PandaPlanet)
self.captcha = self.handleCaptcha(inputs) if wait_time: self.wait() self.errmsg = None self.logDebug("getPostParameters {0}".format(i)) return inputs else: inputs['referer'] = self.pyfile.url if self.premium: inputs['method_premium'] = "Premium Download" if 'method_free' in inputs: del inputs['method_free'] else: inputs['method_free'] = "Free Download" if 'method_premium' in inputs: del inputs['method_premium'] self.html = self.load(self.pyfile.url, post=inputs, ref=False) self.errmsg = None else: self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) getInfo = create_getInfo(StreamcloudEu)
from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo from module.utils import html_unescape class RarefileNet(XFileSharingPro): __name__ = "RarefileNet" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)*rarefile.net/\w{12}" __version__ = "0.03" __description__ = """Rarefile.net hoster plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("*****@*****.**") FILE_NAME_PATTERN = r'<td><font color="red">(?P<N>.*?)</font></td>' FILE_SIZE_PATTERN = r'<td>Size : (?P<S>.+?) ' DIRECT_LINK_PATTERN = r'<a href="(?P<link>[^"]+)">(?P=link)</a>' HOSTER_NAME = "rarefile.net" def setup(self): self.resumeDownload = self.multiDL = self.premium def handleCaptcha(self, inputs): captcha_div = re.search(r'<b>Enter code.*?<div.*?>(.*?)</div>', self.html, re.S).group(1) self.logDebug(captcha_div) numerals = re.findall('<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div)) inputs['code'] = "".join([a[1] for a in sorted(numerals, key = lambda num: int(num[0]))]) self.logDebug("CAPTCHA", inputs['code'], numerals) return 3 getInfo = create_getInfo(RarefileNet)
class FileomCom(XFileSharingPro): __name__ = "FileomCom" __type__ = "hoster" __pattern__ = r'https?://(?:www\.)?fileom\.com/\w+' __version__ = "0.01" __description__ = """Fileom.com hoster plugin""" __author_name__ = "Walter Purcaro" __author_mail__ = "*****@*****.**" HOSTER_NAME = "fileom.com" FILE_URL_REPLACEMENTS = [(r'/$', "")] SH_COOKIES = [(".fileom.com", "lang", "english")] FILE_NAME_PATTERN = r'Filename: <span>(?P<N>.+?)<' FILE_SIZE_PATTERN = r'File Size: <span class="size">(?P<S>[\d\.]+) (?P<U>\w+)' ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.*?)(?:\'|</)' DIRECT_LINK_PATTERN = r"var url2 = '(.+?)';" def setup(self): self.resumeDownload = self.premium self.multiDL = True self.chunkLimit = 1 getInfo = create_getInfo(FileomCom)