class ImgurComAlbum(SimpleCrypter): __name__ = "ImgurComAlbum" __type__ = "crypter" __version__ = "0.54" __status__ = "testing" __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Imgur.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("nath_schwarz", "*****@*****.**")] NAME_PATTERN = r'(?P<N>.+?) - Imgur' LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)' def get_links(self): f = lambda url: "http://" + re.sub(r'(\w{7})s\.', r'\1.', url) return uniqify(map(f, re.findall(self.LINK_PATTERN, self.data))) getInfo = create_getInfo(ImgurComAlbum)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class BitshareComFolder(SimpleCrypter): __name__ = "BitshareComFolder" __type__ = "crypter" __version__ = "0.05" __status__ = "testing" __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Bitshare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>' NAME_PATTERN = r'View public folder "(?P<N>.+?)"</h1>' getInfo = create_getInfo(BitshareComFolder)
__pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Freakhare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href="(http://freakshare\.com/files/.+?)" target="_blank">' NAME_PATTERN = r'Folder:</b> (?P<N>.+)' PAGES_PATTERN = r'Pages: +(\d+)' def load_page(self, page_n): if not hasattr(self, 'f_id') and not hasattr(self, 'f_md5'): m = re.search(r'http://freakshare.com/\?x=folder&f_id=(\d+)&f_md5=(\w+)', self.html) if m: self.f_id = m.group(1) self.f_md5 = m.group(2) return self.load('http://freakshare.com/', get={'x': 'folder', 'f_id': self.f_id, 'f_md5': self.f_md5, 'entrys': '20', 'page': page_n - 1, 'order': ''}) getInfo = create_getInfo(FreakhareComFolder)
__pattern__ = r'http://(?:www\.)?cloudzilla\.to/share/folder/(?P<ID>[\w^_]+)' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Cloudzilla.to folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] INFO_PATTERN = r'<span class="name" title="(?P<N>.+?)"' OFFLINE_PATTERN = r'>File not found...<' LINK_PATTERN = r'<a href="(.+?)" class="item_href">' PASSWORD_PATTERN = r'<div id="pwd_protected">' def check_errors(self): m = re.search(self.PASSWORD_PATTERN, self.data) if m is not None: self.data = self.load(self.pyfile.url, get={'key': self.get_password()}) if re.search(self.PASSWORD_PATTERN, self.data): self.retry(msg="Wrong password") getInfo = create_getInfo(CloudzillaToFolder)
# -*- coding: utf-8 -* from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class GoogledriveComFolder(SimpleCrypter): __name__ = "GoogledriveComFolder" __type__ = "crypter" __version__ = "0.06" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?drive\.google\.com/folderview\?.*id=\w+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Drive.google.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r"folderName: '(?P<N>.+?)'" LINK_PATTERN = r'\[,"\w+"(?:,,".+?")?,"(.+?)"' OFFLINE_PATTERN = r'<TITLE>' getInfo = create_getInfo(GoogledriveComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilecloudIoFolder(SimpleCrypter): __name__ = "FilecloudIoFolder" __type__ = "crypter" __version__ = "0.04" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filecloud.io folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title' NAME_PATTERN = r'>(?P<N>.+?) - filecloud\.io<' getInfo = create_getInfo(FilecloudIoFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FurLy(SimpleCrypter): __name__ = "FurLy" __type__ = "crypter" __version__ = "0.02" __status__ = "testing" __pattern__ = r'http://(?:www\.)?fur\.ly/(\d/)?\w+' __description__ = """Fur.ly decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] URL_REPLACEMENTS = [(r'fur\.ly/', r'fur\.ly/bar/')] LINK_PATTERN = r'urls\[\d+\] = "(.+?)"' OFFLINE_PATTERN = r'var output;\s*var total' getInfo = create_getInfo(FurLy)
self.logDebug("File info (AFTER): %s" % self.info) try: if self.info['pattern']['ID'] == "0": raise p = r'href="(.+?)">Back to \w+<' m = re.search(p, self.html) html = self.load(urlparse.urljoin("http://d-h.st", m.group(1)), cookies=False) p = '\?fld_id=%s.*?">(.+?)<' % self.info['pattern']['ID'] m = re.search(p, html) self.pyfile.name = m.group(1) except Exception, e: self.logDebug(e) self.pyfile.name = self.info['pattern']['USER'] try: folder = self.info['folder'] = self.pyfile.name except Exception: pass self.logDebug("File name: %s" % self.pyfile.name, "File folder: %s" % self.pyfile.name) getInfo = create_getInfo(DevhostStFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class LinkSaveIn(SimpleCrypter): __name__ = "LinkSaveIn" __type__ = "crypter" __version__ = "2.05" __pattern__ = r'https?://(?:www\.)?linksave\.in/\w+' __config__ = [("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """LinkSave.in decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] COOKIES = [("linksave.in", "Linksave_Language", "english")] OFFLINE_PATTERN = r'>(Error )?404 -' getInfo = create_getInfo(LinkSaveIn)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TinyurlCom(SimpleCrypter): __name__ = "TinyurlCom" __type__ = "crypter" __version__ = "0.05" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(preview\.)?tinyurl\.com/[\w\-]+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Tinyurl.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] URL_REPLACEMENTS = [(r'preview\.', r'')] OFFLINE_PATTERN = r">Error: Unable to find site's URL to redirect to" getInfo = create_getInfo(TinyurlCom)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class BitshareComFolder(SimpleCrypter): __name__ = "BitshareComFolder" __type__ = "crypter" __version__ = "0.04" __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Bitshare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>' NAME_PATTERN = r'View public folder "(?P<N>.+?)"</h1>' getInfo = create_getInfo(BitshareComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FiletramCom(SimpleCrypter): __name__ = "FiletramCom" __type__ = "crypter" __version__ = "0.03" __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filetram.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("igel", "*****@*****.**"), ("stickell", "*****@*****.**")] LINK_PATTERN = r'\s+(http://.+)' NAME_PATTERN = r'<title>(?P<N>.+?) - Free Download' getInfo = create_getInfo(FiletramCom)
class NitroflareComFolder(SimpleCrypter): __name__ = "NitroflareComFolder" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'https?://(?:www\.)?nitroflare\.com/folder/(?P<USER>\d+)/(?P<ID>[\w=]+)' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Nitroflare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] def getLinks(self): res = json_loads(self.load("http://nitroflare.com/ajax/folder.php", post={'userId' : self.info['pattern']['USER'], 'folder' : self.info['pattern']['ID'], 'page' : 1, 'perPage': 10000})) if res['name']: self.pyfile.name = res['name'] else: self.offline() return [link['url'] for link in res['files']] if 'files' in res else None getInfo = create_getInfo(NitroflareComFolder)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo from module.common.json_layer import json_loads class GooGl(SimpleCrypter): __name__ = "GooGl" __type__ = "crypter" __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?goo\.gl/([a-zA-Z]+/)?\w+' __description__ = """Goo.gl decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell" , "*****@*****.**"), ("Walter Purcaro", "*****@*****.**" )] API_URL = "https://www.googleapis.com/urlshortener/v1/url" OFFLINE_PATTERN = r'has been disabled|does not exist' def getLinks(self): rep = self.load(self.API_URL, get={'shortUrl': self.pyfile.url}) self.logDebug("JSON data: " + rep) rep = json_loads(rep) return [rep['longUrl']] if "longUrl" in rep else None getInfo = create_getInfo(GooGl)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class PastebinCom(SimpleCrypter): __name__ = "PastebinCom" __type__ = "crypter" __version__ = "0.07" __status__ = "testing" __pattern__ = r'https://(?:www\.)?pastebin\.com/(.+i=)?(?P<ID>\w{8})' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Pastebin.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] URL_REPLACEMENTS = [(__pattern__ + '.*', r'http://www.pastebin.com/\g<ID>')] NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>.+?)"' LINK_PATTERN = r'<div class="de\d+">(.+?)<' getInfo = create_getInfo(PastebinCom)
class NitroflareComFolder(SimpleCrypter): __name__ = "NitroflareComFolder" __type__ = "crypter" __version__ = "0.03" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?nitroflare\.com/folder/(?P<USER>\d+)/(?P<ID>[\w=]+)' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Nitroflare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] def get_links(self): res = json_loads(self.load("http://nitroflare.com/ajax/folder.php", post={'userId' : self.info['pattern']['USER'], 'folder' : self.info['pattern']['ID'], 'page' : 1, 'perPage': 10000})) if res['name']: self.pyfile.name = res['name'] else: self.offline() return [link['url'] for link in res['files']] if 'files' in res else None getInfo = create_getInfo(NitroflareComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FiletramCom(SimpleCrypter): __name__ = "FiletramCom" __type__ = "crypter" __version__ = "0.06" __status__ = "testing" __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Filetram.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("igel", "*****@*****.**"), ("stickell", "*****@*****.**")] LINK_PATTERN = r'\s+(http://.+)' NAME_PATTERN = r'<title>(?P<N>.+?) - Free Download' getInfo = create_getInfo(FiletramCom)
__description__ = """Freakhare.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href="(http://freakshare\.com/files/.+?)" target="_blank">' NAME_PATTERN = r'Folder:</b> (?P<N>.+)' PAGES_PATTERN = r'Pages: +(\d+)' def loadPage(self, page_n): if not hasattr(self, 'f_id') and not hasattr(self, 'f_md5'): m = re.search( r'http://freakshare.com/\?x=folder&f_id=(\d+)&f_md5=(\w+)', self.html) if m: self.f_id = m.group(1) self.f_md5 = m.group(2) return self.load('http://freakshare.com/', get={ 'x': 'folder', 'f_id': self.f_id, 'f_md5': self.f_md5, 'entrys': '20', 'page': page_n - 1, 'order': '' }, decode=True) getInfo = create_getInfo(FreakhareComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FshareVnFolder(SimpleCrypter): __name__ = "FshareVnFolder" __type__ = "crypter" __version__ = "0.02" __status__ = "testing" __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Fshare.vn folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<li class="w_80pc"><a href="(.+?)" target="_blank">' getInfo = create_getInfo(FshareVnFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilecloudIoFolder(SimpleCrypter): __name__ = "FilecloudIoFolder" __type__ = "crypter" __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filecloud.io folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title' NAME_PATTERN = r'>(?P<N>.+?) - filecloud\.io<' getInfo = create_getInfo(FilecloudIoFolder)
class FilefactoryComFolder(SimpleCrypter): __name__ = "FilefactoryComFolder" __type__ = "crypter" __version__ = "0.33" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filefactory.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] COOKIES = [("filefactory.com", "locale", "en_US.utf8")] LINK_PATTERN = r'<td>\s*<a href="(.+?)"' NAME_PATTERN = r'<h1>Files in <span>(?P<N>.+?)<' PAGES_PATTERN = r'data-paginator-totalPages="(\d+)' def load_page(self, page_n): return self.load(self.pyfile.url, get={'page': page_n, 'show': 100}) getInfo = create_getInfo(FilefactoryComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilestubeCom(SimpleCrypter): __name__ = "FilestubeCom" __type__ = "crypter" __version__ = "0.06" __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filestube.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)' NAME_PATTERN = r'<h1\s*> (?P<N>.+?) download\s*</h1>' getInfo = create_getInfo(FilestubeCom)
__config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """MultiUp.org crypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (?P<N>.+?) (\(|- )' def get_links(self): m_type = re.match(self.__pattern__, self.pyfile.url).group('TYPE') if m_type == "project": pattern = r'\n(http://www\.multiup\.org/(?:en|fr)/download/.*)' else: pattern = r'style="width:97%;text-align:left".*\n.*href="(.*)"' if m_type == "download": dl_pattern = r'href="(.*)">.*\n.*<h5>DOWNLOAD</h5>' mirror_page = urlparse.urljoin("http://www.multiup.org/", re.search(dl_pattern, self.data).group(1)) self.data = self.load(mirror_page) return re.findall(pattern, self.data) getInfo = create_getInfo(MultiUpOrg)
if "Please click on continue to see the links" in self.html: post_req['submitform'] = "Continue" self.wait(2) else: mstime = int(round(time.time() * 1000)) b64time = "_" + urlsafe_b64encode(str(mstime)).replace("=", "%3D") post_req.update({'i' : b64time, 'submitform': "Decrypt+link"}) if "Password :"******"Security Code" in self.html: m = re.search(r'/captcha\.php\?key=(.+?)"', self.html) if m: captcha_code = self.decryptCaptcha("http://www.dl-protect.com/captcha.php?key=" + m.group(1), imgtype="gif") post_req['secure'] = captcha_code self.html = self.load(self.pyfile.url, post=post_req) for errmsg in ("The password is incorrect", "The security code is incorrect"): if errmsg in self.html: self.fail(_(errmsg[1:])) return re.findall(r'<a href="([^/].+?)" target="_blank">', self.html) getInfo = create_getInfo(DlProtectCom)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class MegaRapidCzFolder(SimpleCrypter): __name__ = "MegaRapidCzFolder" __type__ = "crypter" __version__ = "0.02" __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Share-Rapid.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<td class="soubor".*?><a href="(.+?)">' getInfo = create_getInfo(MegaRapidCzFolder)
("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Turbobit.net folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**"), ("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(?P<N>.+?)</span>' def _get_links(self, id, page=1): gridFile = self.load("http://turbobit.net/downloadfolder/gridFile", get={'rootId': id, 'rows': 200, 'page': page}) grid = json.loads(gridFile) if grid['rows']: for i in grid['rows']: yield i['id'] for id in self._get_links(id, page + 1): yield id else: return def get_links(self): return ["http://turbobit.net/%s.html" % id for id in self._get_links(self.info['pattern']['ID'])] getInfo = create_getInfo(TurbobitNetFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TinyurlCom(SimpleCrypter): __name__ = "TinyurlCom" __type__ = "crypter" __version__ = "0.02" __pattern__ = r'https?://(?:www\.)?(preview\.)?tinyurl\.com/[\w-]+' __description__ = """Tinyurl.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] URL_REPLACEMENTS = [(r'preview\.', r'')] OFFLINE_PATTERN = r">Error: Unable to find site's URL to redirect to" getInfo = create_getInfo(TinyurlCom)
self.logDebug("File info (AFTER): %s" % self.info) try: if self.info['pattern']['ID'] == "0": raise p = r'href="(.+?)">Back to \w+<' m = re.search(p, self.html) html = self.load(urljoin("http://d-h.st", m.group(1)), cookies=False) p = '\?fld_id=%s.*?">(.+?)<' % self.info['pattern']['ID'] m = re.search(p, html) self.pyfile.name = m.group(1) except Exception, e: self.logDebug(e) self.pyfile.name = self.info['pattern']['USER'] try: folder = self.info['folder'] = self.pyfile.name except Exception: pass self.logDebug("File name: %s" % self.pyfile.name, "File folder: %s" % self.pyfile.name) getInfo = create_getInfo(DevhostStFolder)
import re from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilerNetFolder(SimpleCrypter): __name__ = "FilerNetFolder" __type__ = "crypter" __version__ = "0.42" __pattern__ = r'https?://filer\.net/folder/\w{16}' __config__ = [("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_package", "bool", "Create a subfolder for each package", True)] __description__ = """Filer.net decrypter plugin""" __license__ = "GPLv3" __authors__ = [("nath_schwarz", "*****@*****.**"), ("stickell", "*****@*****.**")] LINK_PATTERN = r'href="(/get/\w{16})">(?!<)' NAME_PATTERN = r'<h3>(?P<N>.+?) - <small' OFFLINE_PATTERN = r'Nicht gefunden' getInfo = create_getInfo(FilerNetFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class CrockoComFolder(SimpleCrypter): __name__ = "CrockoComFolder" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'http://(?:www\.)?crocko\.com/f/.+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Crocko.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<td class="last"><a href="(.+?)">download</a>' getInfo = create_getInfo(CrockoComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class CrockoComFolder(SimpleCrypter): __name__ = "CrockoComFolder" __type__ = "crypter" __version__ = "0.05" __status__ = "testing" __pattern__ = r'http://(?:www\.)?crocko\.com/f/.+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Crocko.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<td class="last"><a href="(.+?)">download</a>' getInfo = create_getInfo(CrockoComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FurLy(SimpleCrypter): __name__ = "FurLy" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'http://(?:www\.)?fur\.ly/(\d/)?\w+' __description__ = """Fur.ly decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] URL_REPLACEMENTS = [(r'fur\.ly/', r'fur\.ly/bar/')] LINK_PATTERN = r'urls\[\d+\] = "(.+?)"' OFFLINE_PATTERN = r'var output;\s*var total' getInfo = create_getInfo(FurLy)
# -*- coding: utf-8 -* from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class GoogledriveComFolder(SimpleCrypter): __name__ = "GoogledriveCom" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'https?://(?:www\.)?drive\.google\.com/folderview\?.*id=\w+' __config__ = [ ("use_subfolder", "bool", "Save package to subfolder", True), #: Overrides core.config['general']['folder_per_package'] ("subfolder_per_pack", "bool", "Create a subfolder for each package", True) ] __description__ = """Drive.google.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r"folderName: '(?P<N>.+?)'" LINK_PATTERN = r'\[,"\w+"(?:,,".+?")?,"(.+?)"' OFFLINE_PATTERN = r'<TITLE>' getInfo = create_getInfo(GoogledriveComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FshareVnFolder(SimpleCrypter): __name__ = "FshareVnFolder" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Fshare.vn folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<li class="w_80pc"><a href="(.+?)" target="_blank">' getInfo = create_getInfo(FshareVnFolder)
import re from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilerNetFolder(SimpleCrypter): __name__ = "FilerNetFolder" __type__ = "crypter" __version__ = "0.42" __pattern__ = r'https?://filer\.net/folder/\w{16}' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filer.net decrypter plugin""" __license__ = "GPLv3" __authors__ = [("nath_schwarz", "*****@*****.**"), ("stickell", "*****@*****.**")] LINK_PATTERN = r'href="(/get/\w{16})">(?!<)' NAME_PATTERN = r'<h3>(?P<N>.+?) - <small' OFFLINE_PATTERN = r'Nicht gefunden' getInfo = create_getInfo(FilerNetFolder)
from module.common.json_layer import json_loads class GooGl(SimpleCrypter): __name__ = "GooGl" __type__ = "crypter" __version__ = "0.04" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?goo\.gl/([a-zA-Z]+/)?\w+' __description__ = """Goo.gl decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell" , "*****@*****.**"), ("Walter Purcaro", "*****@*****.**" )] API_URL = "https://www.googleapis.com/urlshortener/v1/url" OFFLINE_PATTERN = r'has been disabled|does not exist' def get_links(self): rep = self.load(self.API_URL, get={'shortUrl': self.pyfile.url}) self.log_debug("JSON data: " + rep) rep = json_loads(rep) return [rep['longUrl']] if "longUrl" in rep else None getInfo = create_getInfo(GooGl)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class DepositfilesComFolder(SimpleCrypter): __name__ = "DepositfilesComFolder" __type__ = "crypter" __version__ = "0.02" __status__ = "testing" __pattern__ = r'http://(?:www\.)?depositfiles\.com/folders/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Depositfiles.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<div class="progressName".*?>\s*<a href="(.+?)" title=".+?" target="_blank">' getInfo = create_getInfo(DepositfilesComFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class DepositfilesComFolder(SimpleCrypter): __name__ = "DepositfilesComFolder" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'http://(?:www\.)?depositfiles\.com/folders/\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Depositfiles.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<div class="progressName".*?>\s*<a href="(.+?)" title=".+?" target="_blank">' getInfo = create_getInfo(DepositfilesComFolder)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class UploadedToFolder(SimpleCrypter): __name__ = "UploadedToFolder" __type__ = "crypter" __version__ = "0.47" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/\w+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """UploadedTo decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] NAME_PATTERN = r'<title>(?P<N>.+?)<' OFFLINE_PATTERN = r'>Page not found' TEMP_OFFLINE_PATTERN = r'<title>uploaded\.net - Maintenance' LINK_PATTERN = r'<h2><a href="(.+?)"' getInfo = create_getInfo(UploadedToFolder)
import re from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FreetexthostCom(SimpleCrypter): __name__ = "FreetexthostCom" __type__ = "crypter" __version__ = "0.02" __status__ = "testing" __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Freetexthost.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] def get_links(self): m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.S) if m is None: self.error(_("Unable to extract links")) links = m.group(1) return links.strip().split("<br />\r\n") getInfo = create_getInfo(FreetexthostCom)
# -*- coding: utf-8 -*- from module.plugins.internal.Crypter import Crypter from module.plugins.internal.SimpleCrypter import create_getInfo class DeadCrypter(Crypter): __name__ = "DeadCrypter" __type__ = "crypter" __version__ = "0.06" __pattern__ = r'^unmatchable$' __description__ = """Crypter is no longer available""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] @classmethod def apiInfo(cls, *args, **kwargs): api = super(DeadCrypter, cls).apiInfo(*args, **kwargs) api['status'] = 1 return api def setup(self): self.pyfile.error = "Crypter is no longer available" self.offline() #@TODO: self.offline("Crypter is no longer available") getInfo = create_getInfo(DeadCrypter)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo from module.utils import uniqify class ImgurComAlbum(SimpleCrypter): __name__ = "ImgurComAlbum" __type__ = "crypter" __version__ = "0.51" __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Imgur.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("nath_schwarz", "*****@*****.**")] NAME_PATTERN = r'(?P<N>.+?) - Imgur' LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)' def getLinks(self): f = lambda url: "http://" + re.sub(r'(\w{7})s\.', r'\1.', url) return uniqify(map(f, re.findall(self.LINK_PATTERN, self.html))) getInfo = create_getInfo(ImgurComAlbum)
if "Please click on continue to see the links" in self.html: post_req['submitform'] = "Continue" self.wait(2) else: mstime = int(round(time.time() * 1000)) b64time = "_" + urlsafe_b64encode(str(mstime)).replace("=", "%3D") post_req.update({'i' : b64time, 'submitform': "Decrypt+link"}) if "Password :"******"Security Code" in self.html: m = re.search(r'/captcha\.php\?key=(.+?)"', self.html) if m: captcha_code = self.captcha.decrypt("http://www.dl-protect.com/captcha.php?key=" + m.group(1), input_type="gif") post_req['secure'] = captcha_code self.html = self.load(self.pyfile.url, post=post_req) for errmsg in ("The password is incorrect", "The security code is incorrect"): if errmsg in self.html: self.fail(_(errmsg[1:])) return re.findall(r'<a href="([^/].+?)" target="_blank">', self.html) getInfo = create_getInfo(DlProtectCom)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class UploadableChFolder(SimpleCrypter): __name__ = "UploadableChFolder" __type__ = "crypter" __version__ = "0.04" __status__ = "testing" __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Uploadable.ch folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("guidobelix", "*****@*****.**"), ("Walter Purcaro", "*****@*****.**")] LINK_PATTERN = r'"(.+?)" class="icon_zipfile">' NAME_PATTERN = r'<div class="folder"><span> </span>(?P<N>.+?)</div>' OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.' TEMP_OFFLINE_PATTERN = r'<div class="icon_err">' getInfo = create_getInfo(UploadableChFolder)
"Create a subfolder for each package", True)] __description__ = """Data.hu folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("crash", None), ("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>' NAME_PATTERN = ur'<title>(?P<N>.+?) Let\xf6lt\xe9se</title>' def prepare(self): super(DataHuFolder, self).prepare() if u'K\xe9rlek add meg a jelsz\xf3t' in self.html: # Password protected password = self.getPassword() if not password: self.fail(_("Password required")) self.logDebug( "The folder is password protected', 'Using password: "******"Wrong password")) getInfo = create_getInfo(DataHuFolder)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class FilefactoryComFolder(SimpleCrypter): __name__ = "FilefactoryComFolder" __type__ = "crypter" __version__ = "0.32" __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+' __config__ = [("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Filefactory.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] COOKIES = [("filefactory.com", "locale", "en_US.utf8")] LINK_PATTERN = r'<td>\s*<a href="(.+?)"' NAME_PATTERN = r'<h1>Files in <span>(?P<N>.+?)<' PAGES_PATTERN = r'data-paginator-totalPages="(\d+)' def loadPage(self, page_n): return self.load(self.pyfile.url, get={'page': page_n, 'show': 100}) getInfo = create_getInfo(FilefactoryComFolder)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TnyCz(SimpleCrypter): __name__ = "TnyCz" __type__ = "crypter" __version__ = "0.07" __status__ = "testing" __pattern__ = r'http://(?:www\.)?tny\.cz/\w+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Tny.cz decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'<title>(?P<N>.+?) - .+</title>' def get_links(self): m = re.search(r'<a id=\'save_paste\' href="(.+save\.php\?hash=.+)">', self.data) return re.findall(".+", self.load(m.group(1))) if m else None getInfo = create_getInfo(TnyCz)
__config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """MultiUp.org crypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (?P<N>.+?) (\(|- )' def getLinks(self): m_type = re.match(self.__pattern__, self.pyfile.url).group('TYPE') if m_type == "project": pattern = r'\n(http://www\.multiup\.org/(?:en|fr)/download/.*)' else: pattern = r'style="width:97%;text-align:left".*\n.*href="(.*)"' if m_type == "download": dl_pattern = r'href="(.*)">.*\n.*<h5>DOWNLOAD</h5>' miror_page = urlparse.urljoin( "http://www.multiup.org", re.search(dl_pattern, self.html).group(1)) self.html = self.load(miror_page) return re.findall(pattern, self.html) getInfo = create_getInfo(MultiUpOrg)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class MegaRapidCzFolder(SimpleCrypter): __name__ = "MegaRapidCzFolder" __type__ = "crypter" __version__ = "0.06" __status__ = "testing" __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """Share-Rapid.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "*****@*****.**")] LINK_PATTERN = r'<td class="soubor".*?><a href="(.+?)">' getInfo = create_getInfo(MegaRapidCzFolder)
LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<' NAME_PATTERN = r'<title>Download (.+?)<' OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)' def getLinks(self): links = [] m = re.search(r'(/download/gethosts/.+?)"', self.html) if m: self.html = self.load( urlparse.urljoin("http://go4up.com/", m.group(1))) pages = [ self.load(url) for url in re.findall(self.LINK_PATTERN, self.html) ] else: pages = [self.html] for html in pages: try: links.append(re.search(r'<b><a href="(.+?)"', html).group(1)) except Exception: continue return links getInfo = create_getInfo(Go4UpCom)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class PastebinCom(SimpleCrypter): __name__ = "PastebinCom" __type__ = "crypter" __version__ = "0.04" __pattern__ = r'https://(?:www\.)?pastebin\.com/(.+i=)?(?P<ID>\w{8})' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Pastebin.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "*****@*****.**")] URL_REPLACEMENTS = [(__pattern__ + '.*', r'http://www.pastebin.com/\g<ID>') ] NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>.+?)"' LINK_PATTERN = r'<div class="de\d+">(.+?)<' getInfo = create_getInfo(PastebinCom)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TnyCz(SimpleCrypter): __name__ = "TnyCz" __type__ = "crypter" __version__ = "0.04" __pattern__ = r'http://(?:www\.)?tny\.cz/\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Tny.cz decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'<title>(?P<N>.+?) - .+</title>' def getLinks(self): m = re.search(r'<a id=\'save_paste\' href="(.+save\.php\?hash=.+)">', self.html) return re.findall(".+", self.load(m.group(1), decode=True)) if m else None getInfo = create_getInfo(TnyCz)
("Walter Purcaro", "*****@*****.**")] LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<' NAME_PATTERN = r'<title>Download (.+?)<' OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)' def getLinks(self): links = [] m = re.search(r'(/download/gethosts/.+?)"', self.html) if m: self.html = self.load(urljoin("http://go4up.com/", m.group(1))) pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)] else: pages = [self.html] for html in pages: try: links.append(re.search(r'<b><a href="(.+?)"', html).group(1)) except Exception: continue return links getInfo = create_getInfo(Go4UpCom)
__authors__ = [("stickell", "*****@*****.**"), ("Walter Purcaro", "*****@*****.**")] NAME_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(?P<N>.+?)</span>' def _getLinks(self, id, page=1): gridFile = self.load("http://turbobit.net/downloadfolder/gridFile", get={ "rootId": id, "rows": 200, "page": page }, decode=True) grid = json_loads(gridFile) if grid['rows']: for i in grid['rows']: yield i['id'] for id in self._getLinks(id, page + 1): yield id else: return def getLinks(self): id = re.match(self.__pattern__, self.pyfile.url).group('ID') fixurl = lambda id: "http://turbobit.net/%s.html" % id return map(fixurl, self._getLinks(id)) getInfo = create_getInfo(TurbobitNetFolder)
("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Data.hu folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("crash", None), ("stickell", "*****@*****.**")] LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>' NAME_PATTERN = ur'<title>(?P<N>.+?) Let\xf6lt\xe9se</title>' def prepare(self): super(DataHuFolder, self).prepare() if u'K\xe9rlek add meg a jelsz\xf3t' in self.html: #: Password protected password = self.get_password() if not password: self.fail(_("Password required")) self.log_debug("The folder is password protected', 'Using password: "******"Wrong password")) getInfo = create_getInfo(DataHuFolder)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class UploadableChFolder(SimpleCrypter): __name__ = "UploadableChFolder" __type__ = "crypter" __version__ = "0.03" __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Uploadable.ch folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("guidobelix", "*****@*****.**"), ("Walter Purcaro", "*****@*****.**")] LINK_PATTERN = r'"(.+?)" class="icon_zipfile">' NAME_PATTERN = r'<div class="folder"><span> </span>(?P<N>.+?)</div>' OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.' TEMP_OFFLINE_PATTERN = r'<div class="icon_err">' getInfo = create_getInfo(UploadableChFolder)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TNTVillageScambioeticoOrg(SimpleCrypter): __name__ = "TNTVillageScambioeticoOrg" __type__ = "crypter" __version__ = "0.01" __pattern__ = r'http://(?:www\.)?forum\.tntvillage\.scambioetico\.org/index\.php\?.*showtopic=\d+' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), #: Overrides core.config['general']['folder_per_package'] ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """TNTVillage.scambioetico.org decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] LINK_PATTERNS = [r'<th class="titlemedium"><a href=\'(.+?)\'', r"<a href='(\./index\.php\?act.+?)'"] def getLinks(self): for p in self.LINK_PATTERNS: self.LINK_PATTERN = p links = super(TNTVillageScambioeticoOrg, self).getLinks() if links: return links getInfo = create_getInfo(TNTVillageScambioeticoOrg)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class NosvideoCom(SimpleCrypter): __name__ = "NosvideoCom" __type__ = "crypter" __version__ = "0.03" __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+' __config__ = [("use_premium", "bool", "Use premium account if available", True), ("use_subfolder", "bool", "Save package to subfolder", True), ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """Nosvideo.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("igel", "*****@*****.**")] LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"' NAME_PATTERN = r'<[tT]itle>Watch (?P<N>.+?)<' getInfo = create_getInfo(NosvideoCom)
# -*- coding: utf-8 -*- from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class LinkSaveIn(SimpleCrypter): __name__ = "LinkSaveIn" __type__ = "crypter" __version__ = "2.08" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?linksave\.in/\w+' __config__ = [("activated" , "bool", "Activated" , True), ("use_premium" , "bool", "Use premium account if available" , True), ("use_subfolder" , "bool", "Save package to subfolder" , True), ("subfolder_per_package", "bool", "Create a subfolder for each package" , True), ("max_wait" , "int" , "Reconnect if waiting time is greater than minutes", 10 )] __description__ = """LinkSave.in decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] COOKIES = [("linksave.in", "Linksave_Language", "english")] OFFLINE_PATTERN = r'>(Error )?404 -' getInfo = create_getInfo(LinkSaveIn)
from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo class TNTVillageScambioeticoOrg(SimpleCrypter): __name__ = "TNTVillageScambioeticoOrg" __type__ = "crypter" __version__ = "0.02" __status__ = "testing" __pattern__ = r'http://(?:www\.)?forum\.tntvillage\.scambioetico\.org/index\.php\?.*showtopic=\d+' __config__ = [("use_subfolder" , "bool", "Save package to subfolder" , True), #: Overrides pyload.config['general']['folder_per_package'] ("subfolder_per_pack", "bool", "Create a subfolder for each package", True)] __description__ = """TNTVillage.scambioetico.org decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "*****@*****.**")] LINK_PATTERNS = [r'<th class="titlemedium"><a href=\'(.+?)\'', r"<a href='(\./index\.php\?act.+?)'"] def get_links(self): for p in self.LINK_PATTERNS: self.LINK_PATTERN = p links = super(TNTVillageScambioeticoOrg, self).getLinks() if links: return links getInfo = create_getInfo(TNTVillageScambioeticoOrg)