diff options
Diffstat (limited to 'pyload/plugins/crypter')
-rw-r--r-- | pyload/plugins/crypter/FilebeerInfoFolder.py | 28 | ||||
-rw-r--r-- | pyload/plugins/crypter/FiletramCom.py | 31 | ||||
-rw-r--r-- | pyload/plugins/crypter/LofCc.py | 4 | ||||
-rw-r--r-- | pyload/plugins/crypter/NCryptIn.py | 73 | ||||
-rw-r--r-- | pyload/plugins/crypter/SpeedLoadOrgFolder.py | 9 | ||||
-rw-r--r-- | pyload/plugins/crypter/TurbobitNetFolder.py | 60 | ||||
-rw-r--r-- | pyload/plugins/crypter/XupPl.py | 18 |
7 files changed, 161 insertions, 62 deletions
diff --git a/pyload/plugins/crypter/FilebeerInfoFolder.py b/pyload/plugins/crypter/FilebeerInfoFolder.py index 86ce5b697..b6bf4fd07 100644 --- a/pyload/plugins/crypter/FilebeerInfoFolder.py +++ b/pyload/plugins/crypter/FilebeerInfoFolder.py @@ -1,36 +1,14 @@ # -*- coding: utf-8 -*- -import re -from module.plugins.Crypter import Crypter +from module.plugins.internal.DeadCrypter import DeadCrypter -class FilebeerInfoFolder(Crypter): +class FilebeerInfoFolder(DeadCrypter): __name__ = "FilebeerInfoFolder" __type__ = "crypter" __pattern__ = r"http://(?:www\.)?filebeer\.info/(\d+~f).*" - __version__ = "0.01" + __version__ = "0.02" __description__ = """Filebeer.info Folder Plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") - LINK_PATTERN = r'<td title="[^"]*"><a href="([^"]+)" target="_blank">' - PAGE_COUNT_PATTERN = r'<p class="introText">\s*Total Pages (\d+)' - - def decrypt(self, pyfile): - pyfile.url = re.sub(self.__pattern__, r'http://filebeer.info/\1?page=1', pyfile.url) - html = self.load(pyfile.url) - - page_count = int(re.search(self.PAGE_COUNT_PATTERN, html).group(1)) - new_links = [] - - for i in range(1, page_count + 1): - self.logInfo("Fetching links from page %i" % i) - new_links.extend(re.findall(self.LINK_PATTERN, html)) - - if i < page_count: - html = self.load("%s?page=%d" % (pyfile.url, i + 1)) - - if new_links: - self.core.files.addLinks(new_links, self.pyfile.package().id) - else: - self.fail('Could not extract any links') diff --git a/pyload/plugins/crypter/FiletramCom.py b/pyload/plugins/crypter/FiletramCom.py new file mode 100644 index 000000000..886b8be30 --- /dev/null +++ b/pyload/plugins/crypter/FiletramCom.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +############################################################################ +# This program is free software: you can redistribute it and/or modify # +# 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.internal.SimpleCrypter import SimpleCrypter + + +class FiletramCom(SimpleCrypter): + __name__ = "FiletramCom" + __type__ = "crypter" + __pattern__ = r"http://(?:www\.)?filetram.com/[^/]+/.+" + __version__ = "0.01" + __description__ = """Filetram.com Plugin""" + __author_name__ = ("igel", "stickell") + __author_mail__ = ("igelkun@myopera.com", "l.stickell@yahoo.it") + + LINK_PATTERN = r"\s+(http://.+)" + TITLE_PATTERN = r"<title>(?P<title>[^<]+) - Free Download[^<]*</title>" diff --git a/pyload/plugins/crypter/LofCc.py b/pyload/plugins/crypter/LofCc.py index ec9cdaac6..5fee776c7 100644 --- a/pyload/plugins/crypter/LofCc.py +++ b/pyload/plugins/crypter/LofCc.py @@ -5,14 +5,14 @@ import re from os.path import join from module.plugins.Crypter import Crypter -from module.plugins.ReCaptcha import ReCaptcha +from module.plugins.internal.CaptchaService import ReCaptcha class LofCc(Crypter): __name__ = "LofCc" __type__ = "container" __pattern__ = r"http://lof.cc/(.*)" - __version__ = "0.1" + __version__ = "0.2" __description__ = """lof.cc Plugin""" __author_name__ = ("mkaay") __author_mail__ = ("mkaay@mkaay.de") diff --git a/pyload/plugins/crypter/NCryptIn.py b/pyload/plugins/crypter/NCryptIn.py index 6e0c35e92..170a5291d 100644 --- a/pyload/plugins/crypter/NCryptIn.py +++ b/pyload/plugins/crypter/NCryptIn.py @@ -6,17 +6,17 @@ import re from Crypto.Cipher import AES from module.plugins.Crypter import Crypter -from module.plugins.ReCaptcha import ReCaptcha +from module.plugins.internal.CaptchaService import ReCaptcha class NCryptIn(Crypter): __name__ = "NCryptIn" __type__ = "crypter" - __pattern__ = r"http://(?:www\.)?ncrypt.in/folder-([^/\?]+)" - __version__ = "1.23" + __pattern__ = r"http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)" + __version__ = "1.25" __description__ = """NCrypt.in Crypter Plugin""" - __author_name__ = ("fragonib") - __author_mail__ = ("fragonib[AT]yahoo[DOT]es") + __author_name__ = ("fragonib", "stickell") + __author_mail__ = ("fragonib[AT]yahoo[DOT]es", "l.stickell@yahoo.it") # Constants _JK_KEY_ = "jk" @@ -33,31 +33,46 @@ class NCryptIn(Crypter): # Init self.package = pyfile.package() - # Request package - self.html = self.load(self.pyfile.url) - self.cleanedHtml = self.removeCrap(self.html) - if not self.isOnline(): - self.offline() - - # Check for protection - if self.isProtected(): - self.html = self.unlockProtection() + self.type = re.search(self.__pattern__, pyfile.url).group('type') + if self.type in ('link', 'frame'): + self.handleSingle() + else: + # Request package + self.html = self.load(self.pyfile.url) self.cleanedHtml = self.removeCrap(self.html) - self.handleErrors() - - # Get package name and folder - (package_name, folder_name) = self.getPackageInfo() - - # Extract package links - package_links = [] - package_links.extend(self.handleWebLinks()) - package_links.extend(self.handleContainers()) - package_links.extend(self.handleCNL2()) - package_links = self.removeContainers(package_links) - package_links = set(package_links) - - # Pack - self.packages = [(package_name, package_links, folder_name)] + if not self.isOnline(): + self.offline() + + # Check for protection + if self.isProtected(): + self.html = self.unlockProtection() + self.cleanedHtml = self.removeCrap(self.html) + self.handleErrors() + + # Get package name and folder + (package_name, folder_name) = self.getPackageInfo() + + # Extract package links + package_links = [] + package_links.extend(self.handleWebLinks()) + package_links.extend(self.handleContainers()) + package_links.extend(self.handleCNL2()) + package_links = self.removeContainers(package_links) + package_links = set(package_links) + + # Pack + self.packages = [(package_name, package_links, folder_name)] + + def handleSingle(self): + if self.type == 'link': + self.pyfile.url = self.pyfile.url.replace('link', 'frame') + header = self.load(self.pyfile.url, just_header=True) + if 'location' not in header: + self.fail("Unable to decrypt link") + loc = header['location'] + self.logDebug("Link decrypted: " + loc) + self.package_links = [loc] + self.packages = [(self.package.name, self.package_links, self.package.folder)] def removeCrap(self, content): patterns = (r'(type="hidden".*?(name=".*?")?.*?value=".*?")', diff --git a/pyload/plugins/crypter/SpeedLoadOrgFolder.py b/pyload/plugins/crypter/SpeedLoadOrgFolder.py index 8223eb7b9..7472e28fe 100644 --- a/pyload/plugins/crypter/SpeedLoadOrgFolder.py +++ b/pyload/plugins/crypter/SpeedLoadOrgFolder.py @@ -15,17 +15,14 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################ -from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.plugins.internal.DeadCrypter import DeadCrypter -class SpeedLoadOrgFolder(SimpleCrypter): +class SpeedLoadOrgFolder(DeadCrypter): __name__ = "SpeedLoadOrgFolder" __type__ = "crypter" __pattern__ = r"http://(www\.)?speedload\.org/(\d+~f$|folder/\d+/)" - __version__ = "0.2" + __version__ = "0.3" __description__ = """Speedload Crypter Plugin""" __author_name__ = ("stickell") __author_mail__ = ("l.stickell@yahoo.it") - - LINK_PATTERN = r'<div class="link"><a href="(http://speedload.org/\w+)"' - TITLE_PATTERN = r'<title>Files of: (?P<title>[^<]+) folder</title>' diff --git a/pyload/plugins/crypter/TurbobitNetFolder.py b/pyload/plugins/crypter/TurbobitNetFolder.py new file mode 100644 index 000000000..e172f8037 --- /dev/null +++ b/pyload/plugins/crypter/TurbobitNetFolder.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- + +############################################################################ +# This program is free software: you can redistribute it and/or modify # +# 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/>. # +############################################################################ + +import math +import re + +from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.common.json_layer import json_loads + + +def format_links(fid): + return 'http://turbobit.net/%s.html' % fid + + +class TurbobitNetFolder(SimpleCrypter): + __name__ = "TurbobitNetFolder" + __type__ = "crypter" + __pattern__ = r"http://(?:w{3}.)?turbobit\.net/download/folder/(?P<id>\w+)" + __version__ = "0.01" + __description__ = """Turbobit.net Folder Plugin""" + __author_name__ = ("stickell") + __author_mail__ = ("l.stickell@yahoo.it") + + TITLE_PATTERN = r"<img src='/js/lib/grid/icon/folder.png'>(?P<title>.+)</div>" + + def getLinks(self): + folder_id = re.search(self.__pattern__, self.pyfile.url).group('id') + grid = self.load('http://turbobit.net/downloadfolder/gridFile', + get={'id_folder': folder_id, 'rows': 200}, decode=True) + grid = json_loads(grid) + + links_count = grid["records"] + pages = int(math.ceil(links_count / 200.0)) + + ids = list() + for i in grid['rows']: + ids.append(i['id']) + + for p in range(2, pages + 1): + grid = self.load('http://turbobit.net/downloadfolder/gridFile', + get={'id_folder': folder_id, 'rows': 200, 'page': p}, decode=True) + grid = json_loads(grid) + for i in grid['rows']: + ids.append(i['id']) + + return map(format_links, ids) diff --git a/pyload/plugins/crypter/XupPl.py b/pyload/plugins/crypter/XupPl.py new file mode 100644 index 000000000..09832f037 --- /dev/null +++ b/pyload/plugins/crypter/XupPl.py @@ -0,0 +1,18 @@ +from module.plugins.Crypter import Crypter + + +class XupPl(Crypter): + __name__ = "XupPl" + __type__ = "crypter" + __pattern__ = r"https?://.*\.xup\.pl/.*" + __version__ = "0.1" + __description__ = """Xup.pl Crypter Plugin""" + __author_name__ = ("z00nx") + __author_mail__ = ("z00nx0@gmail.com") + + def decrypt(self, pyfile): + header = self.load(self.pyfile.url, just_header=True) + if 'location' in header: + self.core.files.addLinks([header['location']], self.pyfile.package().id) + else: + self.fail('Unable to find link') |