diff options
Diffstat (limited to 'module/plugins/decrypter')
-rw-r--r-- | module/plugins/decrypter/DDLMusicOrg.py | 58 | ||||
-rw-r--r-- | module/plugins/decrypter/FourChanOrg.py | 41 | ||||
-rw-r--r-- | module/plugins/decrypter/HoerbuchIn.py | 48 | ||||
-rw-r--r-- | module/plugins/decrypter/LixIn.py | 36 | ||||
-rw-r--r-- | module/plugins/decrypter/OneKhDe.py | 38 | ||||
-rw-r--r-- | module/plugins/decrypter/RSLayerCom.py | 39 | ||||
-rw-r--r-- | module/plugins/decrypter/RelinkUs.py | 60 | ||||
-rw-r--r-- | module/plugins/decrypter/StealthTo.py | 47 | ||||
-rw-r--r-- | module/plugins/decrypter/YoutubeChannel.py | 49 | ||||
-rw-r--r-- | module/plugins/decrypter/__init__.py | 0 |
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 |