summaryrefslogtreecommitdiffstats
path: root/module/plugins/decrypter
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/decrypter')
-rw-r--r--module/plugins/decrypter/DDLMusicOrg.py58
-rw-r--r--module/plugins/decrypter/FourChanOrg.py41
-rw-r--r--module/plugins/decrypter/HoerbuchIn.py48
-rw-r--r--module/plugins/decrypter/LixIn.py36
-rw-r--r--module/plugins/decrypter/OneKhDe.py38
-rw-r--r--module/plugins/decrypter/RSLayerCom.py39
-rw-r--r--module/plugins/decrypter/RelinkUs.py60
-rw-r--r--module/plugins/decrypter/StealthTo.py47
-rw-r--r--module/plugins/decrypter/YoutubeChannel.py49
-rw-r--r--module/plugins/decrypter/__init__.py0
10 files changed, 416 insertions, 0 deletions
diff --git a/module/plugins/decrypter/DDLMusicOrg.py b/module/plugins/decrypter/DDLMusicOrg.py
new file mode 100644
index 000000000..c927d261c
--- /dev/null
+++ b/module/plugins/decrypter/DDLMusicOrg.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+from time import sleep
+
+from module.Plugin import Plugin
+
+class DDLMusicOrg(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "DDLMusicOrg"
+ props['type'] = "container"
+ props['pattern'] = r"http://[\w\.]*?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+"
+ props['version'] = "0.1"
+ props['description'] = """ddl-music.org Container Plugin"""
+ props['author_name'] = ("mkaay")
+ props['author_mail'] = ("mkaay@mkaay.de")
+ self.props = props
+ self.parent = parent
+ self.html = None
+ self.multi_dl = False
+
+ def download_html(self):
+ url = self.parent.url
+ self.html = self.req.load(url, cookies=True)
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ if not self.html:
+ self.download_html()
+ if re.search(r"Wer dies nicht rechnen kann", self.html) != None:
+ return True
+ return False
+
+ def proceed(self, url, location):
+ for i in range(5):
+ self.download_html()
+ posturl = re.search(r"id=\"captcha\" action=\"(/captcha/ddlm_cr\d\.php)\"", self.html).group(1)
+ math = re.search(r"(\d+) ([\+-]) (\d+) =\s+<inp", self.html)
+ id = re.search(r"name=\"id\" value=\"(\d+)\"", self.html).group(1)
+ linknr = re.search(r"name=\"linknr\" value=\"(\d+)\"", self.html).group(1)
+
+ solve = ""
+ if math.group(2) == "+":
+ solve = int(math.group(1)) + int(math.group(3))
+ else:
+ solve = int(math.group(1)) - int(math.group(3))
+ sleep(3)
+ htmlwithlink = self.req.load("http://ddl-music.org%s" % posturl, cookies=True, post={"calc%s" % linknr:solve, "send%s" % linknr:"Send", "id":id, "linknr":linknr})
+ m = re.search(r"<form id=\"ff\" action=\"(.*?)\" method=\"post\">", htmlwithlink)
+ if m:
+ self.links = [m.group(1)]
+ return
+ self.links = False
diff --git a/module/plugins/decrypter/FourChanOrg.py b/module/plugins/decrypter/FourChanOrg.py
new file mode 100644
index 000000000..e3b00c1f7
--- /dev/null
+++ b/module/plugins/decrypter/FourChanOrg.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.Plugin import Plugin
+
+class FourChanOrg(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "FourChanOrg"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?(img\.)?(zip\.)?4chan.org/\w+/(res/|imgboard\.html)"
+ props['version'] = "0.1"
+ props['description'] = """4chan.org Thread Download Plugin"""
+ props['author_name'] = ("Spoob")
+ props['author_mail'] = ("Spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ url = self.parent.url
+ html = self.req.load(url)
+ link_pattern = ""
+ temp_links = []
+ if "imagebord.html" in url:
+ link_pattern = '[<a href="(res/\d*\.html)">Reply</a>]'
+ temp_links = re.findall(link_pattern, html)
+ for link in re.findall(link_pattern, html):
+ temp_links.append(link)
+ else:
+ temp_links = re.findall('File : <a href="(http://(?:img\.)?(?:zip\.)?4chan\.org/\w{,3}/src/\d*\..{3})"', html)
+ self.links = temp_links
diff --git a/module/plugins/decrypter/HoerbuchIn.py b/module/plugins/decrypter/HoerbuchIn.py
new file mode 100644
index 000000000..ae7ae9774
--- /dev/null
+++ b/module/plugins/decrypter/HoerbuchIn.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.Plugin import Plugin
+
+class HoerbuchIn(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "HoerbuchIn"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?hoerbuch\.in/blog\.php\?id="
+ props['version'] = "0.3"
+ props['description'] = """Hoerbuch.in Container Plugin"""
+ props['author_name'] = ("spoob")
+ props['author_mail'] = ("spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def download_html(self):
+ url = self.parent.url
+ self.html = self.req.load(url)
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ self.download_html()
+ if re.search(r"Download", self.html) != None:
+ return True
+ return False
+
+ def proceed(self, url, location):
+ temp_links = []
+ download_container = ("Download", "Mirror #1", "Mirror #2", "Mirror #3")
+ for container in download_container:
+ download_content = re.search("<BR><B>" + container + ":</B>(.*?)<BR><B>", self.html).group(1)
+ tmp = re.findall('<A HREF="http://www.hoerbuch.in/cj/out.php\?pct=\d+&url=(http://rs\.hoerbuch\.in/.+?)" TARGET="_blank">Part \d+</A>', download_content)
+ if tmp == []: continue
+ for link in tmp:
+ link_html = self.req.load(link, cookies=True)
+ temp_links.append(re.search('<FORM ACTION="(http://.*?)" METHOD="post"', link_html).group(1))
+ break
+
+ self.links = temp_links
diff --git a/module/plugins/decrypter/LixIn.py b/module/plugins/decrypter/LixIn.py
new file mode 100644
index 000000000..d7ef6521d
--- /dev/null
+++ b/module/plugins/decrypter/LixIn.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.Plugin import Plugin
+
+class LixIn(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "LixIn"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www.)?lix.in/"
+ props['version'] = "0.1"
+ props['description'] = """Lix.in Container Plugin"""
+ props['author_name'] = ("spoob")
+ props['author_mail'] = ("spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ url = self.parent.url
+ self.html = self.req.load(url)
+ new_link = ""
+ if not re.search("captcha_img.php", self.html):
+ new_link = re.search(r".*<iframe name=\"ifram\" src=\"(.*)\" marginwidth=\"0\".*", self.req.load(url, post={"submit" : "continue"})).group(1)
+
+ self.links = [new_link]
diff --git a/module/plugins/decrypter/OneKhDe.py b/module/plugins/decrypter/OneKhDe.py
new file mode 100644
index 000000000..5f24b543a
--- /dev/null
+++ b/module/plugins/decrypter/OneKhDe.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.unescape import unescape
+from module.Plugin import Plugin
+
+class OneKhDe(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "OneKhDe"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?1kh.de/f/"
+ props['version'] = "0.1"
+ props['description'] = """1kh.de Container Plugin"""
+ props['author_name'] = ("spoob")
+ props['author_mail'] = ("spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ url = self.parent.url
+ self.html = self.req.load(url)
+ temp_links = []
+ link_ids = re.findall(r"<a id=\"DownloadLink_(\d*)\" href=\"http://1kh.de/", self.html)
+ for id in link_ids:
+ new_link = unescape(re.search("width=\"100%\" src=\"(.*)\"></iframe>", self.req.load("http://1kh.de/l/" + id)).group(1))
+ temp_links.append(new_link)
+ self.links = temp_links
diff --git a/module/plugins/decrypter/RSLayerCom.py b/module/plugins/decrypter/RSLayerCom.py
new file mode 100644
index 000000000..20cadbe18
--- /dev/null
+++ b/module/plugins/decrypter/RSLayerCom.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.unescape import unescape
+from module.Plugin import Plugin
+
+class RSLayerCom(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "RSLayerCom"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?rs-layer.com/directory-"
+ props['version'] = "0.1"
+ props['description'] = """RS-Layer.com Container Plugin"""
+ props['author_name'] = ("spoob")
+ props['author_mail'] = ("spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ url = self.parent.url
+ self.html = self.req.load(url)
+ temp_links = []
+ link_ids = re.findall(r"onclick=\"getFile\(\'([0-9]{7}-.{8})\'\);changeBackgroundColor", self.html)
+ for id in link_ids:
+ new_link = unescape(re.search(r"name=\"file\" src=\"(.*)\"></frame>", self.req.load("http://rs-layer.com/link-" + id + ".html")).group(1))
+ print new_link
+ temp_links.append(new_link)
+ self.links = temp_links
diff --git a/module/plugins/decrypter/RelinkUs.py b/module/plugins/decrypter/RelinkUs.py
new file mode 100644
index 000000000..71b441116
--- /dev/null
+++ b/module/plugins/decrypter/RelinkUs.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+import time
+
+from module.Plugin import Plugin
+
+class RelinkUs(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "RelinkUs"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?relink.us/(f|((view|go).php))"
+ props['version'] = "1"
+ props['description'] = """Relink.us Container Plugin"""
+ props['author_name'] = ("Sleeper-", "spoob")
+ props['author_mail'] = ("@nonymous", "spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+ self.multi_dl = False
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ container_id = self.parent.url.split("/")[-1].split("id=")[-1]
+ url = "http://relink.us/view.php?id="+container_id
+ self.html = self.req.load(url, cookies=True)
+ temp_links = []
+
+ # Download Ad-Frames, otherwise we aren't enabled for download
+ iframes = re.findall("src=['\"]([^'\"]*)['\"](.*)></iframe>", self.html)
+ for iframe in iframes:
+ self.req.load("http://relink.us/"+iframe[0], cookies=True)
+
+ link_strings = re.findall(r"onclick=\"getFile\(\'([^)]*)\'\);changeBackgroundColor", self.html)
+
+ for link_string in link_strings:
+ self.req.lastURL = url
+
+ # Set Download File
+ framereq = self.req.load("http://relink.us/frame.php?"+link_string, cookies=True)
+
+ new_link = self.req.lastEffectiveURL
+
+ if re.match(r"http://(www\.)?relink.us/",new_link):
+ # Find iframe
+ new_link = re.search("src=['\"]([^'\"]*)['\"](.*)></iframe>", framereq).group(1)
+ # Wait some secs for relink.us server...
+ time.sleep(5)
+
+ temp_links.append(new_link)
+
+ self.links = temp_links
diff --git a/module/plugins/decrypter/StealthTo.py b/module/plugins/decrypter/StealthTo.py
new file mode 100644
index 000000000..855aae001
--- /dev/null
+++ b/module/plugins/decrypter/StealthTo.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.Plugin import Plugin
+
+class StealthTo(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "StealthTo"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?stealth.to/folder/"
+ props['version'] = "0.1"
+ props['description'] = """Stealth.to Container Plugin"""
+ props['author_name'] = ("spoob")
+ props['author_mail'] = ("spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ url = self.parent.url
+ self.html = self.req.load(url, cookies=True)
+ temp_links = []
+ ids = []
+ ats = [] # authenticity_token
+ inputs = re.findall(r"(<(input|form)[^>]+)", self.html)
+ for input in inputs:
+ if re.search(r"name=\"authenticity_token\"",input[0]):
+ ats.append(re.search(r"value=\"([^\"]+)", input[0]).group(1))
+ if re.search(r"name=\"id\"",input[0]):
+ ids.append(re.search(r"value=\"([^\"]+)", input[0]).group(1))
+
+ for i in range(0, len(ids)):
+ self.req.load(url + "/web", post={"authenticity_token": ats[i], "id": str(ids[i]), "link": ("download_" + str(ids[i]))}, cookies=True)
+ new_html = self.req.load(url + "/web", post={"authenticity_token": ats[i], "id": str(ids[i]), "link": "1"}, cookies=True)
+ temp_links.append(re.search(r"iframe src=\"(.*)\" frameborder", new_html).group(1))
+
+ self.links = temp_links
diff --git a/module/plugins/decrypter/YoutubeChannel.py b/module/plugins/decrypter/YoutubeChannel.py
new file mode 100644
index 000000000..27a4ff8a7
--- /dev/null
+++ b/module/plugins/decrypter/YoutubeChannel.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.Plugin import Plugin
+
+class YoutubeChannel(Plugin):
+
+ def __init__(self, parent):
+ Plugin.__init__(self, parent)
+ props = {}
+ props['name'] = "YoutubeChannel"
+ props['type'] = "container"
+ props['pattern'] = r"http://(www\.)?(de\.)?\youtube\.com/user/*"
+ props['version'] = "0.3"
+ props['description'] = """Youtube.com Channel Download Plugin"""
+ props['author_name'] = ("RaNaN", "Spoob")
+ props['author_mail'] = ("RaNaN@pyload.org", "spoob@pyload.org")
+ self.props = props
+ self.parent = parent
+ self.html = None
+ self.read_config()
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ return True
+
+ def proceed(self, url, location):
+ self.user = re.search(r"/user/(.+)", self.parent.url).group(1)
+ max_videos = self.config['max_videos']
+ if not max_videos:
+ max_videos = 1000 #max video a user can upload
+ page = 0
+ temp_links = []
+ for start_index in range(1, int(max_videos), 50):
+ max_results = max_videos - page * 50
+ if max_results > 50:
+ max_results = 50
+ url = "http://gdata.youtube.com/feeds/api/users/" + self.user + "/uploads?max-results=" + str(max_results) + "&start-index=" + str(start_index)
+ rep = self.req.load(url)
+ new_links = re.findall(r"href\='(http:\/\/www.youtube.com\/watch\?v\=[^']+)", rep)
+ if new_links != []:
+ temp_links.extend(new_links)
+ else:
+ break
+ page += 1
+ self.links = temp_links
diff --git a/module/plugins/decrypter/__init__.py b/module/plugins/decrypter/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/module/plugins/decrypter/__init__.py