From 66b019c158ce84ae4ddf75dea47620a1a19f580e Mon Sep 17 00:00:00 2001
From: zoidberg10 <zoidberg@mujmail.cz>
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 ++++++++++++----------------------
 2 files changed, 37 insertions(+), 65 deletions(-)

(limited to 'module/plugins/hoster')

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
-- 
cgit v1.2.3