summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/ZippyshareCom.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster/ZippyshareCom.py')
-rw-r--r--module/plugins/hoster/ZippyshareCom.py93
1 files changed, 31 insertions, 62 deletions
diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py
index 335f218d4..5b32b4068 100644
--- a/module/plugins/hoster/ZippyshareCom.py
+++ b/module/plugins/hoster/ZippyshareCom.py
@@ -2,81 +2,50 @@
# -*- coding: utf-8 -*-
import re
-from module.plugins.Hoster import Hoster
+from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
-class ZippyshareCom(Hoster):
+class ZippyshareCom(SimpleHoster):
__name__ = "ZippyshareCom"
__type__ = "hoster"
- __pattern__ = r"(http://)?www?\d{0,2}\.zippyshare.com/v/"
- __version__ = "0.3"
+ __pattern__ = r"(http://www\d{0,2}\.zippyshare.com)/v(?:/|iew.jsp.*key=)(\d+)"
+ __version__ = "0.31"
__description__ = """Zippyshare.com Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
+ __author_name__ = ("spoob", "zoidberg")
+ __author_mail__ = ("spoob@pyload.org", "zoidberg@mujmail.cz")
+
+ FILE_NAME_PATTERN = r'>Name:</font>\s*<font [^>]*>(?P<N>[^<]+)</font><br />'
+ FILE_SIZE_PATTERN = r'>Size:</font>\s*<font [^>]*>(?P<S>[0-9.,]+) (?P<U>[kKMG]+)i?B</font><br />'
+ FILE_OFFLINE_PATTERN = r'>File does not exist on this server</div>'
+
+ DOWNLOAD_URL_PATTERN = r"document\.getElementById\('dlbutton'\).href = ([^;]+);"
+ SEED_PATTERN = r"seed: (\d*)"
def setup(self):
self.html = None
self.wantReconnect = False
self.multiDL = True
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.download_html()
- if not self.file_exists():
- self.offline()
-
- pyfile.name = self.get_file_name()
- pyfile.url = self.get_file_url()
- if pyfile.url:
- self.download(pyfile.url)
- else:
- self.fail("URL could not be extracted")
-
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url)
-
-
+ def handleFree(self):
+ url = self.get_file_url()
+ self.logDebug("Download URL %s" % url)
+ self.download(url, cookies = True)
+
def get_file_url(self):
""" returns the absolute downloadable filepath
"""
+ file_host, file_key = re.search(self.__pattern__, self.pyfile.url).groups()
- file_host_pattern = r"http://([^/]*)/v/(\d*)/.*"
- file_host_search = re.search(file_host_pattern, self.pyfile.url)
- if file_host_search is None:
- return False
-
- file_host = "http://" + file_host_search.group(1)
- file_key = file_host_search.group(2)
-
- seed_pattern = r"seed: (\d*)"
- seed_search = re.search(seed_pattern, self.html)
- if seed_search is None:
- self.fail("Problem downloading file.. offline?")
-
- file_seed = int(seed_search.group(1))
- time = str((file_seed * 24) % 6743256)
-
- file_url = file_host + "/download?key=" + str(file_key) + "&time=" + str(time)
- return file_url
-
-
- def get_file_name(self):
- if self.html is None:
- self.download_html()
- if not self.wantReconnect:
- file_name = re.search(r'<meta property="og:title" content="([^"]*)" />', self.html).group(1)
- return file_name
+ found = re.search(self.DOWNLOAD_URL_PATTERN, self.html)
+ if found:
+ url = self.js.eval(found.group(1))
else:
- return self.pyfile.url
-
+ seed_search = re.search(self.SEED_PATTERN, self.html)
+ if seed_search is None: self.parseError('SEED')
+
+ file_seed = int(seed_search.group(1))
+ time = str((file_seed * 24) % 6743256)
+ url = "/download?key=" + str(file_key) + "&time=" + str(time)
+
+ return file_host + url
- def file_exists(self):
- """ returns True or False
- """
- if self.html is None:
- self.download_html()
- if re.search(r'File does not exist on this server', self.html) is not None:
- return False
- else:
- return True
+getInfo = create_getInfo(ZippyshareCom) \ No newline at end of file