summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--module/plugins/hoster/BasePlugin.py10
-rw-r--r--module/plugins/internal/DeadCrypter.py6
-rw-r--r--module/plugins/internal/DeadHoster.py6
-rw-r--r--module/plugins/internal/MultiHook.py10
-rw-r--r--module/plugins/internal/SimpleCrypter.py15
-rw-r--r--module/plugins/internal/SimpleHoster.py40
-rw-r--r--module/plugins/internal/XFSAccount.py2
7 files changed, 53 insertions, 36 deletions
diff --git a/module/plugins/hoster/BasePlugin.py b/module/plugins/hoster/BasePlugin.py
index c2825493b..6d3132e65 100644
--- a/module/plugins/hoster/BasePlugin.py
+++ b/module/plugins/hoster/BasePlugin.py
@@ -13,7 +13,7 @@ from module.plugins.Hoster import Hoster
class BasePlugin(Hoster):
__name__ = "BasePlugin"
__type__ = "hoster"
- __version__ = "0.29"
+ __version__ = "0.30"
__pattern__ = r'^unmatchable$'
@@ -25,7 +25,13 @@ class BasePlugin(Hoster):
@classmethod
def getInfo(cls, url="", html=""): #@TODO: Move to hoster class in 0.4.10
- return {'name': urlparse(unquote(url)).path.split('/')[-1] or _("Unknown"), 'size': 0, 'status': 3 if url else 1, 'url': unquote(url) or ""}
+ url = unquote(url)
+ return {'name' : (urlparse(url).path.split('/')[-1]
+ or urlparse(url).query.split('=', 1)[::-1][0].split('&', 1)[0]
+ or _("Unknown")),
+ 'size' : 0,
+ 'status': 3 if url else 8,
+ 'url' : url}
def setup(self):
diff --git a/module/plugins/internal/DeadCrypter.py b/module/plugins/internal/DeadCrypter.py
index 07c5c3881..0fa23eef3 100644
--- a/module/plugins/internal/DeadCrypter.py
+++ b/module/plugins/internal/DeadCrypter.py
@@ -20,8 +20,10 @@ class DeadCrypter(_Crypter):
@classmethod
- def getInfo(cls, url="", html=""):
- return {'name': urlparse(unquote(url)).path.split('/')[-1] or _("Unknown"), 'size': 0, 'status': 1, 'url': url}
+ def apiInfo(cls, url="", get={}, post={}):
+ api = super(DeadCrypter, self).apiInfo(url, get, post)
+ api['status'] = 1
+ return api
def setup(self):
diff --git a/module/plugins/internal/DeadHoster.py b/module/plugins/internal/DeadHoster.py
index 6f3252f70..cc7adf4df 100644
--- a/module/plugins/internal/DeadHoster.py
+++ b/module/plugins/internal/DeadHoster.py
@@ -20,8 +20,10 @@ class DeadHoster(_Hoster):
@classmethod
- def getInfo(cls, url="", html=""):
- return {'name': urlparse(unquote(url)).path.split('/')[-1] or _("Unknown"), 'size': 0, 'status': 1, 'url': url}
+ def apiInfo(cls, url="", get={}, post={}):
+ api = super(DeadHoster, self).apiInfo(url, get, post)
+ api['status'] = 1
+ return api
def setup(self):
diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py
index bb132252f..4408ebf0e 100644
--- a/module/plugins/internal/MultiHook.py
+++ b/module/plugins/internal/MultiHook.py
@@ -9,7 +9,7 @@ from module.utils import decode, remove_chars
class MultiHook(Hook):
__name__ = "MultiHook"
__type__ = "hook"
- __version__ = "0.32"
+ __version__ = "0.33"
__config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"),
("pluginlist" , "str" , "Plugin list (comma separated)" , "" ),
@@ -27,10 +27,10 @@ class MultiHook(Hook):
MIN_INTERVAL = 1 * 60 * 60
- DOMAIN_REPLACEMENTS = [(r'180upload.com' , "hundredeightyupload.com"),
- (r'1fichier.com' , "onefichier.com" ),
- (r'2shared.com' , "twoshared.com" ),
- (r'4shared.com' , "fourshared.com" ),
+ DOMAIN_REPLACEMENTS = [(r'180upload\.com' , "hundredeightyupload.com"),
+ (r'1fichier\.com' , "onefichier.com" ),
+ (r'2shared\.com' , "twoshared.com" ),
+ (r'4shared\.com' , "fourshared.com" ),
(r'bayfiles\.net' , "bayfiles.com" ),
(r'cloudnator\.com' , "shragle.com" ),
(r'dfiles\.eu' , "depositfiles.com" ),
diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py
index c1571c679..43b1347fd 100644
--- a/module/plugins/internal/SimpleCrypter.py
+++ b/module/plugins/internal/SimpleCrypter.py
@@ -122,27 +122,28 @@ class SimpleCrypter(Crypter, SimpleHoster):
def checkNameSize(self, getinfo=True):
- if getinfo:
+ if not self.info or getinfo:
self.logDebug("File info (BEFORE): %s" % self.info)
self.info.update(self.getInfo(self.pyfile.url, self.html))
self.logDebug("File info (AFTER): %s" % self.info)
try:
- name = self.info['name']
url = self.info['url']
-
+ name = self.info['name']
if name and name != url:
self.pyfile.name = name
- else:
- self.pyfile.name = self.info['name'] = urlparse(name).path.split('/')[-1]
except Exception:
pass
- folder = self.info['folder'] = self.pyfile.name
+ try:
+ folder = self.info['folder'] = self.pyfile.name
+
+ except Exception:
+ pass
self.logDebug("File name: %s" % self.pyfile.name,
- "File folder: %s" % folder)
+ "File folder: %s" % self.pyfile.name)
def getLinks(self):
diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py
index 1a2961167..fb19b8725 100644
--- a/module/plugins/internal/SimpleHoster.py
+++ b/module/plugins/internal/SimpleHoster.py
@@ -183,7 +183,7 @@ def secondsToMidnight(gmt=0):
class SimpleHoster(Hoster):
__name__ = "SimpleHoster"
__type__ = "hoster"
- __version__ = "0.92"
+ __version__ = "0.93"
__pattern__ = r'^unmatchable$'
@@ -264,7 +264,7 @@ class SimpleHoster(Hoster):
or urlparse(url).query.split('=', 1)[::-1][0].split('&', 1)[0]
or _("Unknown")),
'size' : 0,
- 'status': 3,
+ 'status': 3 if url else 8,
'url' : url}
@@ -462,6 +462,10 @@ class SimpleHoster(Hoster):
def checkErrors(self):
+ if not self.html:
+ self.logWarning(_("No html code to check"))
+ return
+
if hasattr(self, 'PREMIUM_ONLY_PATTERN') and self.premium and re.search(self.PREMIUM_ONLY_PATTERN, self.html):
self.fail(_("Link require a premium account to be handled"))
@@ -483,42 +487,44 @@ class SimpleHoster(Hoster):
def checkStatus(self, getinfo=True):
- if getinfo:
+ if not self.info or getinfo:
self.logDebug("File info (BEFORE): %s" % self.info)
self.info.update(self.getInfo(self.pyfile.url, self.html))
- if 'status' not in self.info:
- return
+ try:
+ status = self.info['status']
- status = self.info['status']
+ if status is 1:
+ self.offline()
- if status is 1:
- self.offline()
+ elif status is 6:
+ self.tempOffline()
- elif status is 6:
- self.tempOffline()
+ elif status is 8:
+ self.fail()
- elif status is not 2:
+ finally:
self.logDebug("File status: %s" % statusMap[status],
"File info: %s" % self.info)
def checkNameSize(self, getinfo=True):
- if getinfo:
+ if not self.info or getinfo:
self.logDebug("File info (BEFORE): %s" % self.info)
self.info.update(self.getInfo(self.pyfile.url, self.html))
self.logDebug("File info (AFTER): %s" % self.info)
try:
- name = self.info['name']
- size = self.info['size']
url = self.info['url']
-
+ name = self.info['name']
if name and name != url:
self.pyfile.name = name
- else:
- self.pyfile.name = name = self.info['name'] = urlparse(name).path.split('/')[-1]
+ except Exception:
+ pass
+
+ try:
+ size = self.info['size']
if size > 0:
self.pyfile.size = size
diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py
index 263d78ff8..a767a878f 100644
--- a/module/plugins/internal/XFSAccount.py
+++ b/module/plugins/internal/XFSAccount.py
@@ -143,7 +143,7 @@ class XFSAccount(Account):
if isinstance(self.COOKIES, list):
set_cookies(req.cj, self.COOKIES)
- url = urljoin(self.HOSTER_URL, "login.html")
+ url = urljoin(self.HOSTER_URL, "login.html")
html = req.load(url, decode=True)
action, inputs = parseHtmlForm('name="FL"', html)