diff options
Diffstat (limited to 'pyload/plugins/hoster/ZippyshareCom.py')
-rw-r--r-- | pyload/plugins/hoster/ZippyshareCom.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/pyload/plugins/hoster/ZippyshareCom.py b/pyload/plugins/hoster/ZippyshareCom.py new file mode 100644 index 000000000..60d152455 --- /dev/null +++ b/pyload/plugins/hoster/ZippyshareCom.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +import re + +from os import path +from urlparse import urljoin + +from pyload.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class ZippyshareCom(SimpleHoster): + __name__ = "ZippyshareCom" + __type__ = "hoster" + __version__ = "0.51" + + __pattern__ = r'(?P<HOST>http://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P<KEY>\d+)' + + __description__ = """Zippyshare.com hoster plugin""" + __author_name__ = "Walter Purcaro" + __author_mail__ = "vuolter@gmail.com" + + + FILE_NAME_PATTERN = r'>Name:.+?">(?P<N>.+?)<' + FILE_SIZE_PATTERN = r'>Size:.+?">(?P<S>[\d.]+) (?P<U>\w+)' + + OFFLINE_PATTERN = r'>File does not exist on this server<' + + COOKIES = [(".zippyshare.com", "ziplocale", "en")] + + + def setup(self): + self.multiDL = True + self.chunkLimit = -1 + self.resumeDownload = True + + + def handleFree(self): + url = self.get_link() + self.logDebug("Download URL: %s" % url) + self.download(url) + + + def get_checksum(self): + m = re.search(r'\(a\*b\+19\)', self.html) + if m: + m = re.findall(r'var \w = (\d+)\%(\d+);', self.html) + c = lambda a,b: a * b + 19 + else: + m = re.findall(r'(\d+) \% (\d+)', self.html) + c = lambda a,b: a + b + + if not m: + self.parseError("Unable to calculate checksum") + + a = map(lambda x: int(x), m[0]) + b = map(lambda x: int(x), m[1]) + + # Checksum is calculated as (a*b+19) or (a+b), where a and b are the result of modulo calculations + a = a[0] % a[1] + b = b[0] % b[1] + + return c(a, b) + + + def get_link(self): + checksum = self.get_checksum() + p_url = path.join("d", self.file_info['KEY'], str(checksum), self.pyfile.name) + dl_link = urljoin(self.file_info['HOST'], p_url) + return dl_link + + +getInfo = create_getInfo(ZippyshareCom) |