summaryrefslogtreecommitdiffstats
path: root/pyload/plugins/crypter
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/plugins/crypter')
-rw-r--r--pyload/plugins/crypter/FilebeerInfoFolder.py28
-rw-r--r--pyload/plugins/crypter/FiletramCom.py31
-rw-r--r--pyload/plugins/crypter/LofCc.py4
-rw-r--r--pyload/plugins/crypter/NCryptIn.py73
-rw-r--r--pyload/plugins/crypter/SpeedLoadOrgFolder.py9
-rw-r--r--pyload/plugins/crypter/TurbobitNetFolder.py60
-rw-r--r--pyload/plugins/crypter/XupPl.py18
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')