summaryrefslogtreecommitdiffstats
path: root/module/plugins/internal/MultiHoster.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/internal/MultiHoster.py')
-rw-r--r--module/plugins/internal/MultiHoster.py58
1 files changed, 36 insertions, 22 deletions
diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py
index f6d202ee9..c86f9b286 100644
--- a/module/plugins/internal/MultiHoster.py
+++ b/module/plugins/internal/MultiHoster.py
@@ -7,26 +7,30 @@ from module.utils import remove_chars
class MultiHoster(Hook):
- __name__ = "AbtractExtractor"
+ __name__ = "MultiHoster"
+ __type__ = "hook"
__version__ = "0.19"
__description__ = """Generic MultiHoster plugin"""
- __author_name__ = "pyLoad Team"
- __author_mail__ = "admin@pyload.org"
-
- replacements = [("2shared.com", "twoshared.com"), ("4shared.com", "fourshared.com"), ("cloudnator.com", "shragle.com"),
- ("ifile.it", "filecloud.io"), ("easy-share.com", "crocko.com"), ("freakshare.net", "freakshare.com"),
- ("hellshare.com", "hellshare.cz"), ("share-rapid.cz", "sharerapid.com"), ("sharerapid.cz", "sharerapid.com"),
- ("ul.to", "uploaded.to"), ("uploaded.net", "uploaded.to"), ("1fichier.com", "onefichier.com")]
- ignored = []
+ __license__ = "GPLv3"
+ __authors__ = [("pyLoad Team", "admin@pyload.org")]
+
+
interval = 24 * 60 * 60 #: reload hosters daily
+ HOSTER_REPLACEMENTS = [("2shared.com", "twoshared.com"), ("4shared.com", "fourshared.com"), ("cloudnator.com", "shragle.com"),
+ ("ifile.it", "filecloud.io"), ("easy-share.com", "crocko.com"), ("freakshare.net", "freakshare.com"),
+ ("hellshare.com", "hellshare.cz"), ("share-rapid.cz", "sharerapid.com"), ("sharerapid.cz", "sharerapid.com"),
+ ("ul.to", "uploaded.to"), ("uploaded.net", "uploaded.to"), ("1fichier.com", "onefichier.com")]
+ HOSTER_EXCLUDED = []
+
def setup(self):
self.hosters = []
self.supported = []
self.new_supported = []
+
def getConfig(self, option, default=''):
"""getConfig with default value - sublass may not implements all config options"""
try:
@@ -34,13 +38,14 @@ class MultiHoster(Hook):
except KeyError:
return default
+
def getHosterCached(self):
if not self.hosters:
try:
- hosterSet = self.toHosterSet(self.getHoster()) - set(self.ignored)
+ hosterSet = self.toHosterSet(self.getHoster()) - set(self.HOSTER_EXCLUDED)
except Exception, e:
- self.logError("%s" % str(e))
+ self.logError(e)
return []
try:
@@ -54,16 +59,17 @@ class MultiHoster(Hook):
hosterSet -= configSet
except Exception, e:
- self.logError("%s" % str(e))
+ self.logError(e)
self.hosters = list(hosterSet)
return self.hosters
+
def toHosterSet(self, hosters):
hosters = set((str(x).strip().lower() for x in hosters))
- for rep in self.replacements:
+ for rep in self.HOSTER_REPLACEMENTS:
if rep[0] in hosters:
hosters.remove(rep[0])
hosters.add(rep[1])
@@ -71,6 +77,7 @@ class MultiHoster(Hook):
hosters.discard('')
return hosters
+
def getHoster(self):
"""Load list of supported hoster
@@ -78,6 +85,7 @@ class MultiHoster(Hook):
"""
raise NotImplementedError
+
def coreReady(self):
if self.cb:
self.core.scheduler.removeJob(self.cb)
@@ -93,12 +101,14 @@ class MultiHoster(Hook):
else:
self.periodical()
+
def initPeriodical(self):
pass
+
def periodical(self):
"""reload hoster list periodically"""
- self.logInfo("Reloading supported hoster list")
+ self.logInfo(_("Reloading supported hoster list"))
old_supported = self.supported
self.supported, self.new_supported, self.hosters = [], [], []
@@ -107,16 +117,17 @@ class MultiHoster(Hook):
old_supported = [hoster for hoster in old_supported if hoster not in self.supported]
if old_supported:
- self.logDebug("UNLOAD: %s" % ", ".join(old_supported))
+ self.logDebug("UNLOAD", ", ".join(old_supported))
for hoster in old_supported:
self.unloadHoster(hoster)
+
def overridePlugins(self):
pluginMap = {}
for name in self.core.pluginManager.hosterPlugins.keys():
pluginMap[name.lower()] = name
- accountList = [name.lower() for name, data in self.core.accountManager.accounts.items() if data]
+ accountList = [name.lower() for name, data in self.core.accountManager.accounts.iteritems() if data]
excludedList = []
for hoster in self.getHosterCached():
@@ -138,29 +149,30 @@ class MultiHoster(Hook):
klass = getattr(module, self.__name__)
# inject plugin plugin
- self.logDebug("Overwritten Hosters: %s" % ", ".join(sorted(self.supported)))
+ self.logDebug("Overwritten Hosters", ", ".join(sorted(self.supported)))
for hoster in self.supported:
dict = self.core.pluginManager.hosterPlugins[hoster]
dict['new_module'] = module
dict['new_name'] = self.__name__
if excludedList:
- self.logInfo("The following hosters were not overwritten - account exists: %s" % ", ".join(sorted(excludedList)))
+ self.logInfo(_("The following hosters were not overwritten - account exists"), ", ".join(sorted(excludedList)))
if self.new_supported:
- self.logDebug("New Hosters: %s" % ", ".join(sorted(self.new_supported)))
+ self.logDebug("New Hosters", ", ".join(sorted(self.new_supported)))
# create new regexp
- regexp = r".*(%s).*" % "|".join([x.replace(".", "\\.") for x in self.new_supported])
+ regexp = r'.*(%s).*' % "|".join([x.replace(".", "\\.") for x in self.new_supported])
if hasattr(klass, "__pattern__") and isinstance(klass.__pattern__, basestring) and '://' in klass.__pattern__:
- regexp = r"%s|%s" % (klass.__pattern__, regexp)
+ regexp = r'%s|%s' % (klass.__pattern__, regexp)
- self.logDebug("Regexp: %s" % regexp)
+ self.logDebug("Regexp", regexp)
dict = self.core.pluginManager.hosterPlugins[self.__name__]
dict['pattern'] = regexp
dict['re'] = re.compile(regexp)
+
def unloadHoster(self, hoster):
dict = self.core.pluginManager.hosterPlugins[hoster]
if "module" in dict:
@@ -170,6 +182,7 @@ class MultiHoster(Hook):
del dict['new_module']
del dict['new_name']
+
def unload(self):
"""Remove override for all hosters. Scheduler job is removed by hookmanager"""
for hoster in self.supported:
@@ -181,6 +194,7 @@ class MultiHoster(Hook):
dict['pattern'] = getattr(klass, "__pattern__", r'^unmatchable$')
dict['re'] = re.compile(dict['pattern'])
+
def downloadFailed(self, pyfile):
"""remove plugin override if download fails but not if file is offline/temp.offline"""
if pyfile.hasStatus("failed") and self.getConfig("unloadFailing", True):