From 66b019c158ce84ae4ddf75dea47620a1a19f580e Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Thu, 24 Nov 2011 19:35:49 +0100 Subject: update zippyshare, uploadbox --- module/plugins/hoster/UploadboxCom.py | 9 ++-- module/plugins/hoster/ZippyshareCom.py | 93 +++++++++++---------------------- module/plugins/internal/SimpleHoster.py | 4 +- 3 files changed, 39 insertions(+), 67 deletions(-) (limited to 'module/plugins') 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'

File name:\s*(?P[^<]+)

' FILE_SIZE_PATTERN = r'Size:\s*(?P[0-9.]+) (?P[kKMG])i?B ' FILE_OFFLINE_PATTERN = r'File deleted from service' + NAME_REPLACEMENTS = [(r"(.*)", lambda m: unicode(m.group(1), 'koi8_r'))] FREE_FORM_PATTERN = r'
(.*?)
' FORM_INPUT_PATTERN = r']* 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:\s*]*>(?P[^<]+)
' + FILE_SIZE_PATTERN = r'>Size:\s*]*>(?P[0-9.,]+) (?P[kKMG]+)i?B
' + FILE_OFFLINE_PATTERN = r'>File does not exist on this server' + + 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'', 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() -- cgit v1.2.3