From 7006ccacbc6d909d8f820b077ad855b0bbff78b2 Mon Sep 17 00:00:00 2001
From: RaNaN <Mast3rRaNaN@hotmail.de>
Date: Tue, 28 Sep 2010 13:38:56 +0200
Subject: rs, check downloaded files

---
 module/plugins/hoster/RapidshareCom.py | 37 ++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

(limited to 'module/plugins')

diff --git a/module/plugins/hoster/RapidshareCom.py b/module/plugins/hoster/RapidshareCom.py
index b4e805228..f2fd3661c 100644
--- a/module/plugins/hoster/RapidshareCom.py
+++ b/module/plugins/hoster/RapidshareCom.py
@@ -3,6 +3,8 @@
 # -*- coding: utf-8 -*-
 
 import re
+from os import stat, remove
+from os.path import join
 
 from module.network.Request import getURL
 from module.plugins.Hoster import Hoster
@@ -45,7 +47,7 @@ class RapidshareCom(Hoster):
     __name__ = "RapidshareCom"
     __type__ = "hoster"
     __pattern__ = r"http://[\w\.]*?rapidshare.com/(?:files/(?P<id>\d*?)/(?P<name>.+)|#!download\|(?:\d+)\|(?P<id_new>\d+)\|(?P<name_new>[^|]+))"
-    __version__ = "0.22"
+    __version__ = "1.3"
     __description__ = """Rapidshare.com Download Hoster"""
     __config__ = [["server", "Cogent;Deutsche Telekom;Level(3);Level(3) #2;GlobalCrossing;Level(3) #3;Teleglobe;GlobalCrossing #2;TeliaSonera #2;Teleglobe #2;TeliaSonera #3;TeliaSonera", "Preferred Server", "None"]] 
     __author_name__ = ("spoob", "RaNaN", "mkaay")
@@ -56,6 +58,7 @@ class RapidshareCom(Hoster):
         self.no_download = True
         self.api_data = None
         self.multiDL = False
+        self.offset = 0
 
         self.id = None
         self.name = None
@@ -114,7 +117,33 @@ class RapidshareCom(Hoster):
 
         download = "http://%(host)s/cgi-bin/rsapi.cgi?sub=download_v1&editparentlocation=1&bin=1&fileid=%(id)s&filename=%(name)s&dlauth=%(auth)s#!download|%(server)s|%(id)s|%(name)s|%(size)s" % dl_dict
 
-        self.download(download)
+        dl = self.download(download)
+
+        self.postCheck(dl)
+
+    def postCheck(self, dl):
+
+        size = stat(dl)
+        size = size.st_size
+
+        if (size < int(self.api_data["size"]) and size < 10000):
+            f = open(dl, "rb")
+            content = f.read()
+            f.close()
+            if "You need RapidPro to download more files from your IP address" in content:
+                remove(f)
+                self.setWait(60)
+                self.log.info(_("Already downloading from this ip address, waiting 60 seconds"))
+                self.wait()
+                self.handleFree()
+            elif "Download auth invalid" in content:
+                remove(f)
+                self.log.info(_("Invalid Auth Code, download will be restarted"))
+                self.offset += 5
+                self.handleFree()
+
+        
+
 
     def handlePremium(self):
         info = self.account.getAccountInfo(self.account.getAccountData(self)[0])
@@ -189,11 +218,11 @@ class RapidshareCom(Hoster):
             dl_dict = {"id": id,
                         "name": name,
                         "host": data[0],
-                        "auth": data[1].encode("utf8"),
+                        "auth": data[1],
                         "server": self.api_data["serverid"],
                         "size": self.api_data["size"]
             }
-            self.setWait(int(data[2])+5)
+            self.setWait(int(data[2])+5+self.offset)
             self.wait()
 
             return dl_dict
-- 
cgit v1.2.3