From 2e76cf0f532ff89ffa58e5db264a14deb60db6da Mon Sep 17 00:00:00 2001
From: RaNaN <Mast3rRaNaN@hotmail.de>
Date: Mon, 10 Aug 2009 10:43:57 +0200
Subject: plugin fixes, core config functions

---
 Plugins/NetloadIn.py     | 50 +++++++++++++++++++++++++++---------------------
 Plugins/RapidshareCom.py | 14 +-------------
 Plugins/UploadedTo.py    | 46 ++++++++++++++++++++++++++++++--------------
 3 files changed, 61 insertions(+), 49 deletions(-)

(limited to 'Plugins')

diff --git a/Plugins/NetloadIn.py b/Plugins/NetloadIn.py
index 0df1fab8c..ac14a670c 100644
--- a/Plugins/NetloadIn.py
+++ b/Plugins/NetloadIn.py
@@ -33,26 +33,35 @@ class NetloadIn(Plugin):
 
         self.want_reconnect = False
 
-        self.req.clear_cookies()
-        self.download_html()
+        tries = 0
 
-        pyfile.status.exists = self.file_exists()
+        while not pyfile.status.url:
 
-        if not pyfile.status.exists:
-            raise Exception, "The file was not found on the server."
+            self.req.clear_cookies()
+            self.download_html()
+
+            pyfile.status.exists = self.file_exists()
+
+            if not pyfile.status.exists:
+                raise Exception, "The file was not found on the server."
 
-        pyfile.status.filename = self.get_file_name()
+            pyfile.status.filename = self.get_file_name()
 
-        self.download_html2()
+            self.download_html2()
 
-        self.get_wait_time()
+            self.get_wait_time()
 
-        pyfile.status.waituntil = self.time_plus_wait
-        pyfile.status.want_reconnect = self.want_reconnect
+            pyfile.status.waituntil = self.time_plus_wait
+            pyfile.status.want_reconnect = self.want_reconnect
 
-        thread.wait(self.parent)
+            thread.wait(self.parent)
+
+            pyfile.status.url = self.get_file_url()
+
+            tries += 1
+            if tries > 3:
+                raise Exception, "Error while preparing DL, HTML dump: %s %s" % (self.html[0], self.html[1])
 
-        pyfile.status.url = self.get_file_url()
 
         return True
 
@@ -72,24 +81,25 @@ class NetloadIn(Plugin):
         for i in range(10):
             self.req.download(captcha_url, captcha_image, cookies=True)
             captcha = self.ocr.get_captcha(captcha_image)
+            self.logger.debug("Captcha %s: %s" % (i, captcha))
             sleep(5)
             self.html[2] = self.req.load("http://netload.in/index.php?id=10", post={"file_id": file_id, "captcha_check": captcha}, cookies=True)
             if re.search(r"(We will prepare your download..|We had a reqeust with the IP)", self.html[2]) != None:
-                break
+                return True
+    
+        raise Exception, "Captcha reading failed"
 
         os.remove(captcha_image)
 
     def get_file_url(self):
         """ returns the absolute downloadable filepath
         """
-        if self.html[0] == None:
-            self.download_html()
-        if not self.want_reconnect:
+        try:
             file_url_pattern = r"<a class=\"Orange_Link\" href=\"(http://.+)\" >Click here"
             search = re.search(file_url_pattern, self.html[2])
             return search.group(1)
-        else:
-            return False
+        except:
+            return None
 
     def get_wait_time(self):
         wait = int(re.search(r"countdown\((.+),'change\(\)'\)", self.html[2]).group(1))
@@ -99,8 +109,6 @@ class NetloadIn(Plugin):
             self.want_reconnect = True
         
     def get_file_name(self):
-        if self.html[0] == None:
-            self.download_html()
         if not self.want_reconnect:
             file_name_pattern = '\t\t\t(.+)<span style="color: #8d8d8d;">'
             return re.search(file_name_pattern, self.html[0]).group(1)
@@ -110,8 +118,6 @@ class NetloadIn(Plugin):
     def file_exists(self):
         """ returns True or False
         """
-        if self.html[0] == None:
-            self.download_html()
         if re.search(r"The file has been deleted", self.html[0]) != None:
             return False
         else:
diff --git a/Plugins/RapidshareCom.py b/Plugins/RapidshareCom.py
index 52d731053..2c78a2672 100644
--- a/Plugins/RapidshareCom.py
+++ b/Plugins/RapidshareCom.py
@@ -62,7 +62,7 @@ class RapidshareCom(Plugin):
 
             tries += 1
             if tries > 5:
-                raise Exception, "Error when downloading, HTML dump:"+ str(self.html[0]) + str(self.html[1])
+                raise Exception, "Error while preparing, HTML dump:"+ str(self.html[0]) + str(self.html[1])
 
         return True
 
@@ -78,8 +78,6 @@ class RapidshareCom(Plugin):
     def download_serverhtml(self):
         """downloads html with the important informations
         """
-        if self.html[0] == None:
-            self.download_html()
 
         if self.config['premium']:
             return False
@@ -95,9 +93,6 @@ class RapidshareCom(Plugin):
             self.time_plus_wait = 0
             return True
 
-        if self.html[1] == None:
-            self.download_serverhtml(self)
-
         if re.search(r".*is already downloading.*", self.html[1]) != None:
             self.time_plus_wait = time() + 10 * 60
         try:
@@ -114,8 +109,6 @@ class RapidshareCom(Plugin):
     def file_exists(self):
         """ returns True or False
         """
-        if self.html[0] == None:
-            self.download_html()
         if re.search(r".*The File could not be found.*", self.html[0]) != None or \
             re.search(r"(<p>This limit is reached.</p>)", self.html[0]) or \
             re.search(r"(.*is momentarily not available.*)", self.html[0]) or \
@@ -132,9 +125,6 @@ class RapidshareCom(Plugin):
             self.start_dl = True
             return self.parent.url
 
-        if self.html[1] == None:
-            self.download_serverhtml()
-
         #if (self.html_old + 5 * 60) < time(): # nach einiger zeit ist die file_url nicht mehr aktuell
         #   self.download_serverhtml()
 
@@ -154,8 +144,6 @@ class RapidshareCom(Plugin):
             #raise Exception, "Error when retrieving download url"
 
     def get_file_name(self):
-        if self.html[0] == None:
-            self.download_html()
             
         file_name_pattern = r"<p class=\"downloadlink\">.+/(.+) <font"
         return re.findall(file_name_pattern, self.html[0])[0]
diff --git a/Plugins/UploadedTo.py b/Plugins/UploadedTo.py
index 7f30a0519..e163a3230 100644
--- a/Plugins/UploadedTo.py
+++ b/Plugins/UploadedTo.py
@@ -25,6 +25,35 @@ class UploadedTo(Plugin):
         self.want_reconnect = None
         self.multi_dl = False
 
+    def prepare(self, thread):
+        pyfile = self.parent
+
+        self.want_reconnect = False
+        tries = 0
+
+        while not pyfile.status.url:
+
+            self.download_html()
+
+            pyfile.status.exists = self.file_exists()
+
+            if not pyfile.status.exists:
+                raise Exception, "The file was not found on the server."
+
+            pyfile.status.filename = self.get_file_name()
+
+            pyfile.status.waituntil = self.time_plus_wait
+            pyfile.status.url = self.get_file_url()
+            pyfile.status.want_reconnect = self.want_reconnect
+
+            thread.wait(self.parent)
+
+            tries += 1
+            if tries > 5:
+                raise Exception, "Error while preparing DL, HTML dump: %s" % self.html
+
+        return True
+
     def download_html(self):
         url = self.parent.url
         self.html = self.req.load(url)
@@ -39,17 +68,13 @@ class UploadedTo(Plugin):
     def get_file_url(self):
         """ returns the absolute downloadable filepath
         """
-        if self.html == None:
-            self.download_html()
-        if not self.want_reconnect:
+        try:
             file_url_pattern = r".*<form name=\"download_form\" method=\"post\" action=\"(.*)\">"
             return re.search(file_url_pattern, self.html).group(1)
-        else:
-            return False
+        except:
+            return None
 
     def get_file_name(self):
-        if self.html == None:
-            self.download_html()
         if not self.want_reconnect:
             file_name = re.search(r"<td><b>\s+(.+)\s", self.html).group(1)
             file_suffix = re.search(r"</td><td>(\..+)</td></tr>", self.html)
@@ -62,14 +87,7 @@ class UploadedTo(Plugin):
     def file_exists(self):
         """ returns True or False
         """
-        if self.html == None:
-            self.download_html()
         if re.search(r"(File doesn't exist .*)", self.html) != None:
             return False
         else:
             return True
-
-    def wait_until(self):
-        if self.html == None:
-            self.download_html()
-        return self.time_plus_wait
-- 
cgit v1.2.3