summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar zoidberg10 <zoidberg@mujmail.cz> 2011-11-24 19:35:49 +0100
committerGravatar zoidberg10 <zoidberg@mujmail.cz> 2011-11-24 19:35:49 +0100
commit66b019c158ce84ae4ddf75dea47620a1a19f580e (patch)
treefad96ae6f1555207ff0cc5068c2bffc23abc8c30
parentadd uploadbox.com, fshare.vn (diff)
downloadpyload-66b019c158ce84ae4ddf75dea47620a1a19f580e.tar.xz
update zippyshare, uploadbox
-rw-r--r--module/plugins/hoster/UploadboxCom.py9
-rw-r--r--module/plugins/hoster/ZippyshareCom.py93
-rw-r--r--module/plugins/internal/SimpleHoster.py4
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()