diff options
author | zoidberg10 <zoidberg@mujmail.cz> | 2011-11-24 19:35:49 +0100 |
---|---|---|
committer | zoidberg10 <zoidberg@mujmail.cz> | 2011-11-24 19:35:49 +0100 |
commit | 66b019c158ce84ae4ddf75dea47620a1a19f580e (patch) | |
tree | fad96ae6f1555207ff0cc5068c2bffc23abc8c30 | |
parent | add uploadbox.com, fshare.vn (diff) | |
download | pyload-66b019c158ce84ae4ddf75dea47620a1a19f580e.tar.xz |
update zippyshare, uploadbox
-rw-r--r-- | module/plugins/hoster/UploadboxCom.py | 9 | ||||
-rw-r--r-- | module/plugins/hoster/ZippyshareCom.py | 93 | ||||
-rw-r--r-- | module/plugins/internal/SimpleHoster.py | 4 |
3 files changed, 39 insertions, 67 deletions
diff --git a/module/plugins/hoster/UploadboxCom.py b/module/plugins/hoster/UploadboxCom.py index 04b4ac6aa..584c64e77 100644 --- a/module/plugins/hoster/UploadboxCom.py +++ b/module/plugins/hoster/UploadboxCom.py @@ -23,7 +23,7 @@ from module.network.RequestFactory import getURL def getInfo(urls): for url in urls: file_id = re.search(UploadboxCom.__pattern__, url).group(1) - html = unicode(getURL('http://uploadbox.com/files/%s/?ac=lang&lang_new=en' % file_id), 'cp1251') + html = getURL('http://uploadbox.com/files/%s/?ac=lang&lang_new=en' % file_id, decode = False) file_info = parseFileInfo(UploadboxCom, url, html) yield file_info @@ -31,7 +31,7 @@ class UploadboxCom(SimpleHoster): __name__ = "Uploadbox" __type__ = "hoster" __pattern__ = r"http://(?:www\.)?uploadbox\.com/files/([^/]+).*" - __version__ = "0.02" + __version__ = "0.03" __description__ = """UploadBox.com plugin - free only""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") @@ -39,6 +39,7 @@ class UploadboxCom(SimpleHoster): FILE_NAME_PATTERN = r'<p><span>File name:</span>\s*(?P<N>[^<]+)</p>' FILE_SIZE_PATTERN = r'<span>Size:</span>\s*(?P<S>[0-9.]+) (?P<U>[kKMG])i?B <span>' FILE_OFFLINE_PATTERN = r'<strong>File deleted from service</strong>' + NAME_REPLACEMENTS = [(r"(.*)", lambda m: unicode(m.group(1), 'koi8_r'))] FREE_FORM_PATTERN = r'<form action="([^"]+)" method="post" id="free" name="free">(.*?)</form>' FORM_INPUT_PATTERN = r'<input[^>]* name="([^"]+)" value="([^"]+)" />' @@ -47,7 +48,7 @@ class UploadboxCom(SimpleHoster): def process(self, pyfile): self.file_id = re.search(self.__pattern__, pyfile.url).group(1) - self.html = unicode(self.load('http://uploadbox.com/files/%s/?ac=lang&lang_new=en' % self.file_id), 'cp1251') + self.html = self.load('http://uploadbox.com/files/%s/?ac=lang&lang_new=en' % self.file_id, decode = False) self.getFileInfo() self.handleFree() @@ -82,6 +83,8 @@ class UploadboxCom(SimpleHoster): self.correctCaptcha() download_url = found.group(1) break + else: + self.invalidCaptcha() else: self.fail("Incorrect captcha entered 5 times") 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 diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 96824ffce..05ef03d58 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -78,7 +78,7 @@ class PluginParseError(Exception): class SimpleHoster(Hoster): __name__ = "SimpleHoster" - __version__ = "0.11" + __version__ = "0.12" __pattern__ = None __type__ = "hoster" __description__ = """Base hoster plugin""" @@ -95,7 +95,7 @@ class SimpleHoster(Hoster): self.resumeDownload = self.multiDL = True if self.account else False def process(self, pyfile): - self.html = self.load(pyfile.url, decode = True) + self.html = self.load(pyfile.url, decode = True, cookies = True) self.getFileInfo() if self.account: self.handlePremium() |