summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar zoidberg10 <zoidberg@mujmail.cz> 2011-12-22 15:19:38 +0100
committerGravatar zoidberg10 <zoidberg@mujmail.cz> 2011-12-22 15:19:38 +0100
commit71c6550c9a48c11c4bdd18762f0063a7d47a5cfa (patch)
tree8e016b2f587ed04e9db81581c362b605e1110901
parentclosed #466 (diff)
parentMerged in hzpz/pyload (pull request #11) (diff)
downloadpyload-71c6550c9a48c11c4bdd18762f0063a7d47a5cfa.tar.xz
Merge
-rw-r--r--module/plugins/crypter/ILoadTo.py62
-rw-r--r--module/plugins/crypter/WiiReloadedOrg.py52
2 files changed, 114 insertions, 0 deletions
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
new file mode 100644
index 000000000..9815ae266
--- /dev/null
+++ b/module/plugins/crypter/ILoadTo.py
@@ -0,0 +1,62 @@
+
+import re
+import urllib
+
+from module.plugins.Crypter import Crypter
+from module.lib.BeautifulSoup import BeautifulSoup
+
+class ILoadTo(Crypter):
+ __name__ = "ILoadTo"
+ __type__ = "crypter"
+ __pattern__ = r"http://iload\.to/go/\d+-[\w\.-]+/"
+ __config__ = []
+ __version__ = "0.1"
+ __description__ = """iload.to Crypter Plugin"""
+ __author_name__ = ("hzpz")
+ __author_mail__ = ("none")
+
+
+ def decrypt(self, pyfile):
+ url = pyfile.url
+ src = self.req.load(str(url))
+ soup = BeautifulSoup(src)
+
+ # find captcha URL and decrypt
+ captchaTag = soup.find("img", attrs={"id": "Captcha"})
+ if not captchaTag:
+ self.fail("Cannot find Captcha")
+
+ captchaUrl = "http://iload.to" + captchaTag["src"]
+ self.logDebug("Captcha URL: %s" % captchaUrl)
+ result = self.decryptCaptcha(str(captchaUrl))
+
+ # find captcha form URL
+ formTag = soup.find("form", attrs={"id": "CaptchaForm"})
+ formUrl = "http://iload.to" + formTag["action"]
+ self.logDebug("Form URL: %s" % formUrl)
+
+ # submit decrypted captcha
+ self.req.lastURL = url
+ src = self.req.load(str(formUrl), post={'captcha': result})
+
+ # find decrypted links
+ links = re.findall(r"<a href=\"(.+)\" style=\"text-align:center;font-weight:bold;\" class=\"button\" target=\"_blank\" onclick=\"this.className\+=' success';\">", src)
+
+ if not len(links) > 0:
+ self.retry()
+
+ self.correctCaptcha()
+
+ cleanedLinks = []
+ for link in links:
+ if link.startswith("http://dontknow.me/at/?"):
+ cleanedLink = urllib.unquote(link[23:])
+ else:
+ cleanedLink = link
+ self.logDebug("Link: %s" % cleanedLink)
+ cleanedLinks.append(cleanedLink)
+
+ self.logDebug("Decrypted %d links" % len(links))
+
+ self.pyfile.package().password = "iload.to"
+ self.packages.append((self.pyfile.package().name, cleanedLinks, self.pyfile.package().folder)) \ No newline at end of file
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
new file mode 100644
index 000000000..574a147c4
--- /dev/null
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -0,0 +1,52 @@
+
+import re
+
+from module.plugins.Crypter import Crypter
+
+class WiiReloadedOrg(Crypter):
+ __name__ = "WiiReloadedOrg"
+ __type__ = "crypter"
+ __pattern__ = r"http://www\.wii-reloaded\.org/protect/get\.php\?i=.+"
+ __config__ = [("changeName", "bool", "Use Wii-Reloaded.org folder name", "True")]
+ __version__ = "0.1"
+ __description__ = """Wii-Reloaded.org Crypter Plugin"""
+ __author_name__ = ("hzpz")
+ __author_mail__ = ("none")
+
+
+ def decrypt(self, pyfile):
+ url = pyfile.url
+ src = self.req.load(str(url))
+
+ ids = re.findall(r"onClick=\"popup_dl\((.+)\)\"", src)
+ if len(ids) == 0:
+ self.fail("Unable to decrypt links, this plugin probably needs to be updated")
+
+ packageName = self.pyfile.package().name
+ if self.getConfig("changeName"):
+ packageNameMatch = re.search(r"<div id=\"foldername\">(.+)</div>", src)
+ if not packageNameMatch:
+ self.logWarning("Unable to get folder name, this plugin probably needs to be updated")
+ else:
+ packageName = packageNameMatch.group(1)
+
+ self.pyfile.package().password = "wii-reloaded.info"
+
+ self.logDebug("Processing %d links" % len(ids))
+ links = []
+ for id in ids:
+ self.req.lastURL = str(url)
+ header = self.req.load("http://www.wii-reloaded.org/protect/hastesosiehtsaus.php?i=" + id, just_header=True)
+ self.logDebug("Header:\n" + header)
+ redirectLocationMatch = re.search(r"^Location: (.+)$", header, flags=re.MULTILINE)
+ if not redirectLocationMatch:
+ self.offline()
+ redirectLocation = redirectLocationMatch.group(1)
+ self.logDebug(len(redirectLocation))
+ if not redirectLocation.startswith("http"):
+ self.offline()
+ self.logDebug("Decrypted link: %s" % redirectLocation)
+ links.append(redirectLocation)
+
+ self.logDebug("Decrypted %d links" % len(links))
+ self.packages.append((packageName, links, packageName)) \ No newline at end of file