diff options
author | Jeix <devnull@localhost> | 2010-08-12 15:31:09 +0200 |
---|---|---|
committer | Jeix <devnull@localhost> | 2010-08-12 15:31:09 +0200 |
commit | 49c3ff13e8529954a983235d67a13329e506123d (patch) | |
tree | 5694f049fd29af50b2aa88319fbe54184aeb6fcf /module/plugins/hoster | |
parent | unrar hook :D, account fix, other fixes (diff) | |
download | pyload-49c3ff13e8529954a983235d67a13329e506123d.tar.xz |
Share.cx free user support and fixes for IRC Hook
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/ShareCx.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/module/plugins/hoster/ShareCx.py b/module/plugins/hoster/ShareCx.py new file mode 100644 index 000000000..feee30cd3 --- /dev/null +++ b/module/plugins/hoster/ShareCx.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import re
+from module.plugins.Hoster import Hoster
+#from module.BeautifulSoup import BeautifulSoup
+
+class ShareCx(Hoster):
+ __name__ = "ShareCx"
+ __type__ = "hoster"
+ __pattern__ = r"http://[\w\.]*?share\.cx/(files|videos)/\d+"
+ __version__ = "0.1"
+ __description__ = """Share.cx Download Hoster"""
+ __author_name__ = ("jeix")
+ __author_mail__ = ("jeix@hasnomail.de")
+
+
+ def setup(self):
+ self.multiDL = False
+
+
+ def process(self, pyfile):
+ self.pyfile = pyfile
+ self.download_html()
+ if not self.file_exists():
+ offline()
+
+ pyfile.name = self.get_file_name()
+ self.doDownload()
+
+
+ def download_html(self):
+ self.html = self.load(self.pyfile.url)
+
+ def doDownload(self):
+ """ returns the absolute downloadable filepath
+ """
+ if self.html == None:
+ self.download_html()
+
+ op = re.search(r'name="op" value="(.*?)"', self.html).group(1)
+ usr_login = re.search(r'name="usr_login" value="(.*?)"', self.html).group(1)
+ id = re.search(r'name="id" value="(.*?)"', self.html).group(1)
+ fname = re.search(r'name="fname" value="(.*?)"', self.html).group(1)
+ referer = re.search(r'name="referer" value="(.*?)"', self.html).group(1)
+ method_free = "Datei+herunterladen"
+
+ self.html = self.load(self.pyfile.url, post={
+ "op" : op,
+ "usr_login" : usr_login,
+ "id" : id,
+ "fname" : fname,
+ "referer" : referer,
+ "method_free" : method_free
+ })
+
+
+ m = re.search(r'startTimer\((\d+)\)', self.html)
+ if m != None:
+ wait_time = int(m.group(1))
+ self.setWait(wait_time)
+ self.wantReconnect = True
+ self.log.debug("%s: IP blocked wait %d seconds." % (self.__name__, wait_time))
+ self.wait()
+
+ m = re.search(r'countdown">.*?(\d+).*?</span>', self.html)
+ if m == None:
+ m = re.search(r'id="countdown_str".*?<span id=".*?">.*?(\d+).*?</span', self.html)
+ if m != None:
+ wait_time = int(m.group(1))
+ self.setWait(wait_time)
+ self.wantReconnect = False
+ self.log.debug("%s: Waiting %d seconds." % (self.__name__, wait_time))
+ self.wait()
+
+
+ op = re.search(r'name="op" value="(.*?)"', self.html).group(1)
+ id = re.search(r'name="id" value="(.*?)"', self.html).group(1)
+ rand = re.search(r'name="rand" value="(.*?)"', self.html).group(1)
+ referer = re.search(r'name="referer" value="(.*?)"', self.html).group(1)
+ method_free = re.search(r'name="method_free" value="(.*?)"', self.html).group(1)
+ method_premium = re.search(r'name="method_premium" value="(.*?)"', self.html).group(1)
+ down_script = re.search(r'name="down_script" value="(.*?)"', self.html).group(1)
+
+ data = {
+ "op" : op,
+ "id" : id,
+ "rand" : rand,
+ "referer" : referer,
+ "method_free" : method_free,
+ "method_premium" : method_premium,
+ "down_script" : down_script
+ }
+
+ if '/captchas/' in self.html:
+ captcha_url = re.search(r'(http://(?:[\w\d]+\.)?.*?/captchas/.*?)').group(1)
+ captcha = self.decryptCaptcha(captcha_url)
+ data["code"] = captcha
+
+
+ self.download(self.pyfile.url, post=data)
+
+ # soup = BeautifulSoup(html)
+ # form = soup.find("form")
+ # postfields = {}
+ # for input in form,findall("input"):
+ # postfields[input["name"]] = input["value"]
+ # postfields["method_free"] = "Datei herunterladen"
+
+ def get_file_name(self):
+ if self.html == None:
+ self.download_html()
+
+ name = re.search(r'alt="Download" /></span>(.*?)</h3>', self.html).group(1)
+ return name
+
+ def file_exists(self):
+ """ returns True or False
+ """
+ if self.html == None:
+ self.download_html()
+
+ if re.search(r'File not found<br>It was deleted due to inactivity or abuse request', self.html) != None:
+ return False
+
+ return True
+
+
|