summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/OronCom.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-10-02 16:50:03 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-10-02 16:50:03 +0200
commiteb034e731f610705c10f4b182772183fdefd8e28 (patch)
treea9e7887df443451bdc133717c225a77a2f0663b8 /module/plugins/hoster/OronCom.py
parentpurged old plugins (diff)
downloadpyload-eb034e731f610705c10f4b182772183fdefd8e28.tar.xz
closed #365, #396, #397
Diffstat (limited to 'module/plugins/hoster/OronCom.py')
-rw-r--r--module/plugins/hoster/OronCom.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/module/plugins/hoster/OronCom.py b/module/plugins/hoster/OronCom.py
new file mode 100644
index 000000000..5f7cbd18b
--- /dev/null
+++ b/module/plugins/hoster/OronCom.py
@@ -0,0 +1,113 @@
+# -*- coding: utf-8 -*-
+import re
+
+from module.plugins.Hoster import Hoster
+from module.network.RequestFactory import getURL
+from module.plugins.ReCaptcha import ReCaptcha
+
+def getInfo(urls):
+ result = []
+
+ for url in urls:
+ html = getURL(url).replace("\n","")
+ html = html.replace("\t", "")
+ if "File could not be found" in html:
+ result.append((url, 0, 1, url))
+ continue
+
+ m = re.search(OronCom.FILE_INFO_PATTERN, html)
+ if m:
+ name = m.group(1)
+ hSize = float(m.group(2).replace(",", "."))
+ pow = {'Kb':1, 'Mb': 2, 'Gb':3}[m.group(3)]
+ size = int(hSize * 1024 ** pow)
+ else:
+ name = url
+ size = 0
+
+ result.append((name, size, 2, url))
+ yield result
+
+class OronCom(Hoster):
+ __name__ = "OronCom"
+ __type__ = "hoster"
+ __pattern__ = r"http://(?:www.)?oron.com/"
+ __version__ = "0.1"
+ __description__ = "File Hoster: Oron.com"
+ __author_name__ = "chrox"
+
+ FILE_INFO_PATTERN = r'<td align="right">.*?Filename: .*?>(.*?)</b><br>File size: ([0-9,.]+) (Kb|Mb|Gb)'
+
+ def init(self):
+ self.multiDL = False
+ self.file_id = re.search(r'http://(?:www.)?oron.com/([a-zA-Z0-9]+)', self.pyfile.url).group(1)
+ self.logDebug("File id is %s" % self.file_id)
+ self.pyfile.url = "http://oron.com/" + self.file_id
+
+ def process(self, pyfile):
+ self.html = self.load(self.pyfile.url, ref=False, decode=True).replace("\n","")
+ if "File could not be found" in self.html:
+ self.offline()
+ self.html = self.html.replace("\t", "")
+ m = re.search(self.FILE_INFO_PATTERN, self.html)
+ if m:
+ pyfile.name = m.group(1)
+ hSize = float(m.group(2).replace(",", "."))
+ pow = {'Kb':1, 'Mb': 2, 'Gb':3}[m.group(3)]
+ pyfile.size = int(hSize * 1024 ** pow)
+ self.logDebug("File Size: %d" % pyfile.size)
+ else:
+ self.logDebug("Name and/or size not found.")
+
+ self.handleFree(pyfile)
+
+ def handleFree(self, pyfile):
+ self.html = self.load(self.pyfile.url, ref=False, decode=True).replace("\n","")
+ if "download1" in self.html:
+ post_url = "http://oron.com/"+self.file_id
+ post_dict = {'op': 'download1', 'usr_login': '', 'id':self.file_id, 'fname':pyfile.name, 'referer':'', 'method_free':' Regular Download '}
+ self.html = self.load(post_url, post=post_dict, ref=False, decode=True).encode("utf-8")
+ if '<p class="err">' in self.html:
+ time_list = re.findall(r'\d+(?=\s[a-z]+,)|\d+(?=\s.*?until)',self.html)
+ tInSec = 0
+ for t in time_list:
+ tInSec = tInSec + int(t)*60**(len(time_list)-time_list.index(t)-1)
+ self.setWait(tInSec,True)
+ self.wait()
+ self.retry()
+
+ if "download2" in self.html:
+ post_dict['op'] = 'download2'
+ post_dict['method_free'] = 'Regular Download'
+ post_dict['method_premium'] = ''
+ post_dict['down_direct'] = '1'
+ post_dict['btn_download'] = ' Create Download Link '
+ del(post_dict['fname'])
+
+ re_captcha = ReCaptcha(self)
+ downloadLink = ""
+ for i in range(5):
+ m = re.search('name="rand" value="(.*?)">', self.html)
+ post_dict['rand'] = m.group(1)
+ challengeId = re.search(r'/recaptcha/api/challenge[?k=]+([^"]+)', self.html)
+ challenge, result = re_captcha.challenge(challengeId.group(1))
+ post_dict['recaptcha_challenge_field'] = challenge
+ post_dict['recaptcha_response_field'] = result
+ self.html = self.load(post_url, post=post_dict)
+ m = re.search('<p class="err">(.*?)</p>', self.html)
+ if m:
+ if m.group(1) == "Wrong captcha":
+ self.invalidCaptcha()
+ self.logDebug("Captcha failed")
+ if 'class="atitle">Download File' in self.html:
+ self.correctCaptcha()
+ downloadLink = re.search('href="(.*?)" class="atitle"',self.html)
+ break
+
+ if not downloadLink:
+ self.fail("Could not find download link")
+
+ self.logDebug("Download url found: %s" % downloadLink.group(1))
+ self.download(downloadLink.group(1))
+ else:
+ self.logError("error in parsing site")