From 6d3b96012ba64343586ba53041650d93493a335c Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 26 Dec 2014 04:23:45 +0100 Subject: [MultiHook] Overwrites account if not premium --- module/plugins/internal/MultiHook.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index dcf1c3383..caac6c258 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.22" + __version__ = "0.23" __description__ = """Hook plugin for MultiHoster""" __license__ = "GPLv3" @@ -130,14 +130,14 @@ class MultiHook(Hook): old_supported = [hoster for hoster in old_supported if hoster not in self.supported] if old_supported: - self.logDebug("UNLOAD", ", ".join(old_supported)) + self.logDebug("Unload: %s" % ", ".join(old_supported)) for hoster in old_supported: self.unloadHoster(hoster) def overridePlugins(self): pluginMap = dict((name.lower(), name) for name in self.core.pluginManager.hosterPlugins.iterkeys()) - accountList = [name.lower() for name, data in self.core.accountManager.accounts.iteritems() if data] + accountList = [account.type.lower() for account in self.core.api.getAccounts(False) if account.valid and account.premium] excludedList = [] for hoster in self.getHosterCached(): @@ -159,26 +159,26 @@ class MultiHook(Hook): klass = getattr(module, self.__name__) # inject plugin plugin - self.logDebug("Overwritten Hosters", ", ".join(sorted(self.supported))) + self.logDebug("Overwritten Hosters: %s" % ", ".join(sorted(self.supported))) for hoster in self.supported: hdict = self.core.pluginManager.hosterPlugins[hoster] hdict['new_module'] = module hdict['new_name'] = self.__name__ if excludedList: - self.logInfo(_("The following hosters were not overwritten - account exists"), ", ".join(sorted(excludedList))) + self.logInfo(_("Hosters not overwritten: %s" % ", ".join(sorted(excludedList)))) if self.new_supported: hosters = sorted(self.new_supported) - self.logDebug("New Hosters", ", ".join(hosters)) + self.logDebug("New Hosters: %s" % ", ".join(hosters)) # create new regexp regexp = r'.*(%s).*' % "|".join([x.replace(".", "\.") for x in hosters]) if hasattr(klass, "__pattern__") and isinstance(klass.__pattern__, basestring) and '://' in klass.__pattern__: regexp = r'%s|%s' % (klass.__pattern__, regexp) - self.logDebug("Regexp", regexp) + self.logDebug("Regexp: %s" % regexp) hdict = self.core.pluginManager.hosterPlugins[self.__name__] hdict['pattern'] = regexp -- cgit v1.2.3 From ff42cec46274b0f2019272424c1a57ec4b413507 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 26 Dec 2014 17:58:54 +0100 Subject: [PremiumTo] Fixup --- module/plugins/internal/MultiHook.py | 1 + 1 file changed, 1 insertion(+) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index caac6c258..78de1ed0a 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -47,6 +47,7 @@ class MultiHook(Hook): """getConfig with default value - sublass may not implements all config options""" try: return self.getConf(option) + except KeyError: return default -- cgit v1.2.3 From b72be64cc16660e3ba877d97dbc0e717bb030666 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 27 Dec 2014 21:14:40 +0100 Subject: [MultiHook] Crypter support --- module/plugins/internal/MultiHook.py | 150 +++++++++++++++++++---------------- 1 file changed, 83 insertions(+), 67 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 78de1ed0a..cf251bacf 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,16 +9,22 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.23" + __version__ = "0.25" - __description__ = """Hook plugin for MultiHoster""" + __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), + ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), + ("revertfailed", "bool" , "Revert to standard download if download fails", False), + ("interval" , "int" , "Reload interval in hours (0 to disable)" , 12 )] + + __description__ = """Hook plugin for multi hoster/crypter""" __license__ = "GPLv3" - __authors__ = [("pyLoad Team", "admin@pyload.org")] + __authors__ = [("pyLoad Team", "admin@pyload.org"), + ("Walter Purcaro", "vuolter@gmail.com")] - interval = 12 * 60 * 60 #: reload hosters every 12h + MIN_INTERVAL = 12 * 60 * 60 #: reload plugins every 12h - HOSTER_REPLACEMENTS = [("1fichier.com" , "onefichier.com"), + PLUGIN_REPLACEMENTS = [("1fichier.com" , "onefichier.com"), ("2shared.com" , "twoshared.com" ), ("4shared.com" , "fourshared.com"), ("cloudnator.com" , "shragle.com" ), @@ -34,15 +40,26 @@ class MultiHook(Hook): ("sharerapid.cz" , "multishare.cz" ), ("ul.to" , "uploaded.to" ), ("uploaded.net" , "uploaded.to" )] - HOSTER_EXCLUDED = [] def setup(self): - self.hosters = [] + self.type = self.core.pluginManager.findPlugin(self.__name__)[1] or "hoster" + self.plugins = [] self.supported = [] self.new_supported = [] + def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 + """ see HTTPRequest for argument list """ + h = pyreq.getHTTPRequest(timeout=120) + try: + rep = h.load(*args, **kwargs) + finally: + h.close() + + return rep + + def getConfig(self, option, default=''): """getConfig with default value - sublass may not implements all config options""" try: @@ -52,36 +69,37 @@ class MultiHook(Hook): return default - def getHosterCached(self): - if not self.hosters: + def pluginCached(self): + if not self.plugins: try: - hosterSet = self.toHosterSet(self.getHoster()) - set(self.HOSTER_EXCLUDED) + pluginset = self.pluginSet(self.getHosters() if self.type is "hoster" else self.getCrypters()) except Exception, e: self.logError(e) return [] try: - configMode = self.getConfig('hosterListMode', 'all') - if configMode in ("listed", "unlisted"): - configSet = self.toHosterSet(self.getConfig('hosterList', '').replace('|', ',').replace(';', ',').split(',')) + configmode = self.getConfig("mode", 'all') + if configmode in ("listed", "unlisted"): + list = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') + configset = self.pluginSet(list) - if configMode == "listed": - hosterSet &= configSet + if configmode == "listed": + pluginset &= configset else: - hosterSet -= configSet + pluginset -= configset except Exception, e: self.logError(e) - self.hosters = list(hosterSet) + self.plugins = list(pluginset) - return self.hosters + return self.plugins - def toHosterSet(self, hosters): + def pluginSet(self, hosters): hosters = set((str(x).strip().lower() for x in hosters)) - for rep in self.HOSTER_REPLACEMENTS: + for rep in self.PLUGIN_REPLACEMENTS: if rep[0] in hosters: hosters.remove(rep[0]) hosters.add(rep[1]) @@ -90,7 +108,7 @@ class MultiHook(Hook): return hosters - def getHoster(self): + def getHosters(self): """Load list of supported hoster :return: List of domain names @@ -98,96 +116,93 @@ class MultiHook(Hook): raise NotImplementedError - def coreReady(self): - if self.cb: - self.core.scheduler.removeJob(self.cb) - - self.setConfig("activated", True) #: config not in sync after plugin reload - - cfg_interval = self.getConfig("interval", None) #: reload interval in hours - if cfg_interval is not None: - self.interval = cfg_interval * 60 * 60 - - if self.interval: - self._periodical() - else: - self.periodical() - + def getCrypters(self): + """Load list of supported crypters - def initPeriodical(self): - pass + :return: List of domain names + """ + raise NotImplementedError def periodical(self): - """reload hoster list periodically""" - self.logInfo(_("Reloading supported hoster list")) + """reload plugin list periodically""" + self.interval = max(self.getConfig("interval", 0), self.MIN_INTERVAL) + + self.logInfo(_("Reloading supported %s list") % self.type) old_supported = self.supported self.supported = [] self.new_supported = [] - self.hosters = [] + self.plugins = [] self.overridePlugins() - old_supported = [hoster for hoster in old_supported if hoster not in self.supported] + old_supported = [plugin for plugin in old_supported if plugin not in self.supported] + if old_supported: self.logDebug("Unload: %s" % ", ".join(old_supported)) - for hoster in old_supported: - self.unloadHoster(hoster) + for plugin in old_supported: + self.unloadPlugin(plugin) def overridePlugins(self): - pluginMap = dict((name.lower(), name) for name in self.core.pluginManager.hosterPlugins.iterkeys()) - accountList = [account.type.lower() for account in self.core.api.getAccounts(False) if account.valid and account.premium] excludedList = [] - for hoster in self.getHosterCached(): - name = remove_chars(hoster, "-.") + if self.type is "hoster": + pluginMap = dict((name.lower(), name) for name in self.core.pluginManager.hosterPlugins.iterkeys()) + accountList = [account.type.lower() for account in self.core.api.getAccounts(False) if account.valid and account.premium] + else: + pluginMap = {} + accountList = [name[::-1].replace("Folder"[::-1], "", 1).lower()[::-1] for name in self.core.pluginManager.crypterPlugins.iterkeys()] + + for plugin in self.pluginCached(): + name = remove_chars(plugin, "-.") if name in accountList: - excludedList.append(hoster) + excludedList.append(plugin) else: if name in pluginMap: self.supported.append(pluginMap[name]) else: - self.new_supported.append(hoster) + self.new_supported.append(plugin) if not self.supported and not self.new_supported: - self.logError(_("No Hoster loaded")) + self.logError(_("No %s loaded") % self.type) return module = self.core.pluginManager.getPlugin(self.__name__) klass = getattr(module, self.__name__) # inject plugin plugin - self.logDebug("Overwritten Hosters: %s" % ", ".join(sorted(self.supported))) - for hoster in self.supported: - hdict = self.core.pluginManager.hosterPlugins[hoster] + self.logDebug("Overwritten %ss: %s" % (self.type, ", ".join(sorted(self.supported)))) + + for plugin in self.supported: + hdict = self.core.pluginManager.plugins[self.type][plugin] hdict['new_module'] = module hdict['new_name'] = self.__name__ if excludedList: - self.logInfo(_("Hosters not overwritten: %s" % ", ".join(sorted(excludedList)))) + self.logInfo(_("%ss not overwritten: %s") % (self.type.capitalize(), ", ".join(sorted(excludedList)))) if self.new_supported: - hosters = sorted(self.new_supported) + plugins = sorted(self.new_supported) - self.logDebug("New Hosters: %s" % ", ".join(hosters)) + self.logDebug("New %ss: %s" % (self.type, ", ".join(plugins))) # create new regexp - regexp = r'.*(%s).*' % "|".join([x.replace(".", "\.") for x in hosters]) + regexp = r'.*(%s).*' % "|".join([x.replace(".", "\.") for x in plugins]) if hasattr(klass, "__pattern__") and isinstance(klass.__pattern__, basestring) and '://' in klass.__pattern__: regexp = r'%s|%s' % (klass.__pattern__, regexp) self.logDebug("Regexp: %s" % regexp) - hdict = self.core.pluginManager.hosterPlugins[self.__name__] + hdict = self.core.pluginManager.plugins[self.type][self.__name__] hdict['pattern'] = regexp hdict['re'] = re.compile(regexp) - def unloadHoster(self, hoster): - hdict = self.core.pluginManager.hosterPlugins[hoster] + def unloadPlugin(self, plugin): + hdict = self.core.pluginManager.plugins[self.type][plugin] if "module" in hdict: del hdict['module'] @@ -198,21 +213,22 @@ class MultiHook(Hook): def unload(self): """Remove override for all hosters. Scheduler job is removed by hookmanager""" - for hoster in self.supported: - self.unloadHoster(hoster) + for plugin in self.supported: + self.unloadPlugin(plugin) # reset pattern klass = getattr(self.core.pluginManager.getPlugin(self.__name__), self.__name__) - hdict = self.core.pluginManager.hosterPlugins[self.__name__] + hdict = self.core.pluginManager.plugins[self.type][self.__name__] + hdict['pattern'] = getattr(klass, "__pattern__", r'^unmatchable$') hdict['re'] = re.compile(hdict['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): - hdict = self.core.pluginManager.hosterPlugins[pyfile.pluginname] + if self.type is "hoster" and pyfile.hasStatus("failed") and self.getConfig("revertfailed", True): + hdict = self.core.pluginManager.plugins[self.type][pyfile.pluginname] if "new_name" in hdict and hdict['new_name'] == self.__name__: self.logDebug("Unload MultiHook", pyfile.pluginname, hdict) - self.unloadHoster(pyfile.pluginname) + self.unloadPlugin(pyfile.pluginname) pyfile.setStatus("queued") -- cgit v1.2.3 From e4cf98e1f368eb846469d1acaf0efd015bf2a921 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 30 Dec 2014 15:43:11 +0100 Subject: [MultiHook] Fixup --- module/plugins/internal/MultiHook.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index cf251bacf..8164a02fc 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.25" + __version__ = "0.26" __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -72,7 +72,7 @@ class MultiHook(Hook): def pluginCached(self): if not self.plugins: try: - pluginset = self.pluginSet(self.getHosters() if self.type is "hoster" else self.getCrypters()) + pluginset = self.pluginSet(self.getHosters() if self.type == "hoster" else self.getCrypters()) except Exception, e: self.logError(e) return [] @@ -80,8 +80,8 @@ class MultiHook(Hook): try: configmode = self.getConfig("mode", 'all') if configmode in ("listed", "unlisted"): - list = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') - configset = self.pluginSet(list) + pluginlist = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') + configset = self.pluginSet(pluginlist) if configmode == "listed": pluginset &= configset @@ -96,16 +96,17 @@ class MultiHook(Hook): return self.plugins - def pluginSet(self, hosters): - hosters = set((str(x).strip().lower() for x in hosters)) + def pluginSet(self, plugins): + plugins = set((str(x).strip().lower() for x in plugins)) for rep in self.PLUGIN_REPLACEMENTS: - if rep[0] in hosters: - hosters.remove(rep[0]) - hosters.add(rep[1]) + if rep[0] in plugins: + plugins.remove(rep[0]) + plugins.add(rep[1]) - hosters.discard('') - return hosters + plugins.discard('') + + return plugins def getHosters(self): @@ -148,7 +149,7 @@ class MultiHook(Hook): def overridePlugins(self): excludedList = [] - if self.type is "hoster": + if self.type == "hoster": pluginMap = dict((name.lower(), name) for name in self.core.pluginManager.hosterPlugins.iterkeys()) accountList = [account.type.lower() for account in self.core.api.getAccounts(False) if account.valid and account.premium] else: @@ -212,7 +213,7 @@ class MultiHook(Hook): def unload(self): - """Remove override for all hosters. Scheduler job is removed by hookmanager""" + """Remove override for all plugins. Scheduler job is removed by hookmanager""" for plugin in self.supported: self.unloadPlugin(plugin) @@ -226,7 +227,7 @@ class MultiHook(Hook): def downloadFailed(self, pyfile): """remove plugin override if download fails but not if file is offline/temp.offline""" - if self.type is "hoster" and pyfile.hasStatus("failed") and self.getConfig("revertfailed", True): + if pyfile.hasStatus("failed") and self.getConfig("revertfailed", True): hdict = self.core.pluginManager.plugins[self.type][pyfile.pluginname] if "new_name" in hdict and hdict['new_name'] == self.__name__: self.logDebug("Unload MultiHook", pyfile.pluginname, hdict) -- cgit v1.2.3 From bbf4c9d993d09ea09e6fae04d2fa5ebb8a237385 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 2 Jan 2015 02:45:22 +0100 Subject: [MultiHook] Store account type --- module/plugins/internal/MultiHook.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 8164a02fc..5cb72677f 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.26" + __version__ = "0.27" __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -49,6 +49,10 @@ class MultiHook(Hook): self.new_supported = [] + def coreReady(self): + self.account = self.core.accountManager.getAccountPlugin(self.__name__) + + def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 """ see HTTPRequest for argument list """ h = pyreq.getHTTPRequest(timeout=120) @@ -131,7 +135,8 @@ class MultiHook(Hook): self.logInfo(_("Reloading supported %s list") % self.type) - old_supported = self.supported + old_supported = self.supported + self.supported = [] self.new_supported = [] self.plugins = [] -- cgit v1.2.3 From 8a79ad6e25210b2ec6ce74bc5b2d55dbe303dbaa Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 3 Jan 2015 02:13:10 +0100 Subject: [MultiHook] Unload if related multihoster account is not available --- module/plugins/internal/MultiHook.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 5cb72677f..b5ac132b7 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.27" + __version__ = "0.28" __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -51,6 +51,8 @@ class MultiHook(Hook): def coreReady(self): self.account = self.core.accountManager.getAccountPlugin(self.__name__) + if not self.account: + self.setConfig('activated', False) def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 -- cgit v1.2.3 From 003c1ce55e7ac0765236d3210b8081bfc5fddb2d Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 4 Jan 2015 20:23:01 +0100 Subject: [MultiHook] Better account check --- module/plugins/internal/MultiHook.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index b5ac132b7..ea9f32673 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.28" + __version__ = "0.29" __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -43,6 +43,7 @@ class MultiHook(Hook): def setup(self): + self.account = None self.type = self.core.pluginManager.findPlugin(self.__name__)[1] or "hoster" self.plugins = [] self.supported = [] @@ -51,7 +52,12 @@ class MultiHook(Hook): def coreReady(self): self.account = self.core.accountManager.getAccountPlugin(self.__name__) + + if self.account and not self.account.canUse(): + self.account = None + if not self.account: + self.logWarning("MultiHook will be deactivated due missing account reference") self.setConfig('activated', False) -- cgit v1.2.3 From df143e902d00903f16cf32174948f636bda56e4c Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 8 Jan 2015 22:58:32 +0100 Subject: "New Year" Update: internal plugins --- module/plugins/internal/MultiHook.py | 158 +++++++++++++++++++++-------------- 1 file changed, 96 insertions(+), 62 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index ea9f32673..202868175 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,12 +9,15 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.29" + __version__ = "0.30" - __config__ = [("mode" , "all;listed;unlisted", "Use for plugins (if supported)" , "all"), - ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), - ("revertfailed", "bool" , "Revert to standard download if download fails", False), - ("interval" , "int" , "Reload interval in hours (0 to disable)" , 12 )] + __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), + ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), + ("revertfailed" , "bool" , "Revert to standard download if fails", True ), + ("retry" , "int" , "Number of retries before revert" , 10 ), + ("retryinterval" , "int" , "Retry interval in minutes" , 1 ), + ("reload" , "bool" , "Reload plugin list" , True ), + ("reloadinterval", "int" , "Reload interval in hours" , 12 )] __description__ = """Hook plugin for multi hoster/crypter""" __license__ = "GPLv3" @@ -22,45 +25,68 @@ class MultiHook(Hook): ("Walter Purcaro", "vuolter@gmail.com")] - MIN_INTERVAL = 12 * 60 * 60 #: reload plugins every 12h + MIN_INTERVAL = 1 * 60 * 60 - PLUGIN_REPLACEMENTS = [("1fichier.com" , "onefichier.com"), - ("2shared.com" , "twoshared.com" ), - ("4shared.com" , "fourshared.com"), - ("cloudnator.com" , "shragle.com" ), - ("easy-share.com" , "crocko.com" ), - ("fileparadox.com", "fileparadox.in"), - ("freakshare.net" , "freakshare.com"), - ("hellshare.com" , "hellshare.cz" ), - ("ifile.it" , "filecloud.io" ), - ("nowdownload.ch" , "nowdownload.sx"), - ("nowvideo.co" , "nowvideo.sx" ), - ("putlocker.com" , "firedrive.com" ), - ("share-rapid.cz" , "multishare.cz" ), - ("sharerapid.cz" , "multishare.cz" ), - ("ul.to" , "uploaded.to" ), - ("uploaded.net" , "uploaded.to" )] + DOMAIN_REPLACEMENTS = [(r'\d+.+' , "_\0" ), + (r'bayfiles\.net' , "bayfiles.com" ), + (r'cloudnator\.com' , "shragle.com" ), + (r'dfiles\.eu' , "depositfiles.com"), + (r'easy-share\.com' , "crocko.com" ), + (r'freakshare\.net' , "freakshare.com" ), + (r'hellshare\.com' , "hellshare.cz" ), + (r'ifile\.it' , "filecloud.io" ), + (r'nowdownload\.\w+', "nowdownload.sx" ), + (r'nowvideo\.\w+' , "nowvideo.sx" ), + (r'putlocker\.com' , "firedrive.com" ), + (r'share-?rapid\.cz', "multishare.cz" ), + (r'ul\.to' , "uploaded.to" ), + (r'uploaded\.net' , "uploaded.to" ), + (r'uploadhero\.co' , "uploadhero.com" ), + (r'zshares\.net' , "zshare.net" )] def setup(self): - self.account = None - self.type = self.core.pluginManager.findPlugin(self.__name__)[1] or "hoster" self.plugins = [] self.supported = [] self.new_supported = [] + self.account = None + self.pluginclass = None + self.pluginmodule = None + self.pluginname = None + self.plugintype = None - def coreReady(self): - self.account = self.core.accountManager.getAccountPlugin(self.__name__) + self._initPlugin() + + + def _initPlugin(self): + plugin, type = self.core.pluginManager.findPlugin(self.__name__) + + if not plugin: + self.logWarning("Hook plugin will be deactivated due missing plugin reference") + self.setConfig('activated', False) + else: + self.pluginname = self.__name__ + self.plugintype = type + self.pluginmodule = self.core.pluginManager.loadModule(type, self.__name__) + self.pluginclass = getattr(self.pluginmodule, self.__name__) + + + def _loadAccount(self): + self.account = self.core.accountManager.getAccountPlugin(self.pluginname) if self.account and not self.account.canUse(): self.account = None - if not self.account: - self.logWarning("MultiHook will be deactivated due missing account reference") + if not self.account and hasattr(self.pluginclass, "LOGIN_ACCOUNT") and not self.pluginclass.LOGIN_ACCOUNT: + self.logWarning("Hook plugin will be deactivated due missing account reference") self.setConfig('activated', False) + def coreReady(self): + self._loadAccount() + + def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 """ see HTTPRequest for argument list """ h = pyreq.getHTTPRequest(timeout=120) @@ -81,19 +107,19 @@ class MultiHook(Hook): return default - def pluginCached(self): + def pluginsCached(self): if not self.plugins: try: - pluginset = self.pluginSet(self.getHosters() if self.type == "hoster" else self.getCrypters()) + pluginset = self._pluginSet(self.getHosters() if self.plugintype == "hoster" else self.getCrypters()) except Exception, e: self.logError(e) return [] try: - configmode = self.getConfig("mode", 'all') + configmode = self.getConfig("pluginmode", 'all') if configmode in ("listed", "unlisted"): pluginlist = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') - configset = self.pluginSet(pluginlist) + configset = self._pluginSet(pluginlist) if configmode == "listed": pluginset &= configset @@ -108,13 +134,14 @@ class MultiHook(Hook): return self.plugins - def pluginSet(self, plugins): + def _pluginSet(self, plugins): plugins = set((str(x).strip().lower() for x in plugins)) - for rep in self.PLUGIN_REPLACEMENTS: - if rep[0] in plugins: - plugins.remove(rep[0]) - plugins.add(rep[1]) + for rf, rt in self.DOMAIN_REPLACEMENTS: + regex = re.compile(rf) + for p in filter(lambda x: regex.match(x), plugins): + plugins.remove(p) + plugins.add(re.sub(rf, rt, p)) plugins.discard('') @@ -139,9 +166,7 @@ class MultiHook(Hook): def periodical(self): """reload plugin list periodically""" - self.interval = max(self.getConfig("interval", 0), self.MIN_INTERVAL) - - self.logInfo(_("Reloading supported %s list") % self.type) + self.logInfo(_("Reloading supported %s list") % self.plugintype) old_supported = self.supported @@ -158,18 +183,24 @@ class MultiHook(Hook): for plugin in old_supported: self.unloadPlugin(plugin) + if self.getConfig("reload", True): + self.interval = max(self.getConfig("reloadinterval", 12), self.MIN_INTERVAL) + else: + self.core.scheduler.removeJob(self.cb) + self.cb = None + def overridePlugins(self): excludedList = [] - if self.type == "hoster": + if self.plugintype == "hoster": pluginMap = dict((name.lower(), name) for name in self.core.pluginManager.hosterPlugins.iterkeys()) accountList = [account.type.lower() for account in self.core.api.getAccounts(False) if account.valid and account.premium] else: pluginMap = {} accountList = [name[::-1].replace("Folder"[::-1], "", 1).lower()[::-1] for name in self.core.pluginManager.crypterPlugins.iterkeys()] - for plugin in self.pluginCached(): + for plugin in self.pluginsCached(): name = remove_chars(plugin, "-.") if name in accountList: @@ -181,42 +212,39 @@ class MultiHook(Hook): self.new_supported.append(plugin) if not self.supported and not self.new_supported: - self.logError(_("No %s loaded") % self.type) + self.logError(_("No %s loaded") % self.plugintype) return - module = self.core.pluginManager.getPlugin(self.__name__) - klass = getattr(module, self.__name__) - # inject plugin plugin - self.logDebug("Overwritten %ss: %s" % (self.type, ", ".join(sorted(self.supported)))) + self.logDebug("Overwritten %ss: %s" % (self.plugintype, ", ".join(sorted(self.supported)))) for plugin in self.supported: - hdict = self.core.pluginManager.plugins[self.type][plugin] - hdict['new_module'] = module - hdict['new_name'] = self.__name__ + hdict = self.core.pluginManager.plugins[self.plugintype][plugin] + hdict['new_module'] = self.pluginmodule + hdict['new_name'] = self.pluginname if excludedList: - self.logInfo(_("%ss not overwritten: %s") % (self.type.capitalize(), ", ".join(sorted(excludedList)))) + self.logInfo(_("%ss not overwritten: %s") % (self.plugintype.capitalize(), ", ".join(sorted(excludedList)))) if self.new_supported: plugins = sorted(self.new_supported) - self.logDebug("New %ss: %s" % (self.type, ", ".join(plugins))) + self.logDebug("New %ss: %s" % (self.plugintype, ", ".join(plugins))) # create new regexp regexp = r'.*(%s).*' % "|".join([x.replace(".", "\.") for x in plugins]) - if hasattr(klass, "__pattern__") and isinstance(klass.__pattern__, basestring) and '://' in klass.__pattern__: - regexp = r'%s|%s' % (klass.__pattern__, regexp) + if hasattr(self.pluginclass, "__pattern__") and isinstance(self.pluginclass.__pattern__, basestring) and '://' in self.pluginclass.__pattern__: + regexp = r'%s|%s' % (self.pluginclass.__pattern__, regexp) self.logDebug("Regexp: %s" % regexp) - hdict = self.core.pluginManager.plugins[self.type][self.__name__] + hdict = self.core.pluginManager.plugins[self.plugintype][self.pluginname] hdict['pattern'] = regexp hdict['re'] = re.compile(regexp) def unloadPlugin(self, plugin): - hdict = self.core.pluginManager.plugins[self.type][plugin] + hdict = self.core.pluginManager.plugins[self.plugintype][plugin] if "module" in hdict: del hdict['module'] @@ -231,18 +259,24 @@ class MultiHook(Hook): self.unloadPlugin(plugin) # reset pattern - klass = getattr(self.core.pluginManager.getPlugin(self.__name__), self.__name__) - hdict = self.core.pluginManager.plugins[self.type][self.__name__] + hdict = self.core.pluginManager.plugins[self.plugintype][self.pluginname] - hdict['pattern'] = getattr(klass, "__pattern__", r'^unmatchable$') + hdict['pattern'] = getattr(self.pluginclass, "__pattern__", r'^unmatchable$') hdict['re'] = re.compile(hdict['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("revertfailed", True): - hdict = self.core.pluginManager.plugins[self.type][pyfile.pluginname] - if "new_name" in hdict and hdict['new_name'] == self.__name__: + if pyfile.status != 8 or not self.getConfig("revertfailed", True): + return + + hdict = self.core.pluginManager.plugins[self.plugintype][pyfile.pluginname] + if "new_name" in hdict and hdict['new_name'] == self.pluginname: + if pyfile.error == "MultiHook": self.logDebug("Unload MultiHook", pyfile.pluginname, hdict) self.unloadPlugin(pyfile.pluginname) pyfile.setStatus("queued") + else: + retries = max(self.getConfig("retry", 10), 0) + wait_time = max(self.getConfig("retryinterval", 1), 0) + pyfile.plugin.retry(retries, wait_time, "MultiHook") -- cgit v1.2.3 From ea2d07843d369d8b8fd2aa02930bf549ce94a661 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 9 Jan 2015 03:25:42 +0100 Subject: Spare fixes --- module/plugins/internal/MultiHook.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 202868175..82a0a68ea 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -27,22 +27,26 @@ class MultiHook(Hook): MIN_INTERVAL = 1 * 60 * 60 - DOMAIN_REPLACEMENTS = [(r'\d+.+' , "_\0" ), - (r'bayfiles\.net' , "bayfiles.com" ), - (r'cloudnator\.com' , "shragle.com" ), - (r'dfiles\.eu' , "depositfiles.com"), - (r'easy-share\.com' , "crocko.com" ), - (r'freakshare\.net' , "freakshare.com" ), - (r'hellshare\.com' , "hellshare.cz" ), - (r'ifile\.it' , "filecloud.io" ), - (r'nowdownload\.\w+', "nowdownload.sx" ), - (r'nowvideo\.\w+' , "nowvideo.sx" ), - (r'putlocker\.com' , "firedrive.com" ), - (r'share-?rapid\.cz', "multishare.cz" ), - (r'ul\.to' , "uploaded.to" ), - (r'uploaded\.net' , "uploaded.to" ), - (r'uploadhero\.co' , "uploadhero.com" ), - (r'zshares\.net' , "zshare.net" )] + 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" ), + (r'easy-share\.com' , "crocko.com" ), + (r'freakshare\.net' , "freakshare.com" ), + (r'hellshare\.com' , "hellshare.cz" ), + (r'ifile\.it' , "filecloud.io" ), + (r'nowdownload\.\w+', "nowdownload.sx" ), + (r'nowvideo\.\w+' , "nowvideo.sx" ), + (r'putlocker\.com' , "firedrive.com" ), + (r'share-?rapid\.cz', "multishare.cz" ), + (r'ul\.to' , "uploaded.to" ), + (r'uploaded\.net' , "uploaded.to" ), + (r'uploadhero\.co' , "uploadhero.com" ), + (r'zshares\.net' , "zshare.net" ), + (r'\d+.+' , "X\0" )] def setup(self): -- cgit v1.2.3 From 7950463dbd5cc062f89a1b69bbc1464a8e0ad1b7 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 9 Jan 2015 17:31:46 +0100 Subject: [MultiHook] Fix auto-deactivation --- module/plugins/internal/MultiHook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 82a0a68ea..9acf3744f 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -9,7 +9,7 @@ from module.utils import remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.30" + __version__ = "0.31" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -82,7 +82,7 @@ class MultiHook(Hook): if self.account and not self.account.canUse(): self.account = None - if not self.account and hasattr(self.pluginclass, "LOGIN_ACCOUNT") and not self.pluginclass.LOGIN_ACCOUNT: + if not self.account and hasattr(self.pluginclass, "LOGIN_ACCOUNT") and self.pluginclass.LOGIN_ACCOUNT: self.logWarning("Hook plugin will be deactivated due missing account reference") self.setConfig('activated', False) -- cgit v1.2.3 From 8f46ca7012fd9f17a99ae9baa3394be747f26a7e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 9 Jan 2015 21:07:41 +0100 Subject: [MultiHook] Fix encoding in _pluginSet --- module/plugins/internal/MultiHook.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 9acf3744f..bb132252f 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -3,13 +3,13 @@ import re from module.plugins.Hook import Hook -from module.utils import remove_chars +from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.31" + __version__ = "0.32" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -95,6 +95,8 @@ class MultiHook(Hook): """ see HTTPRequest for argument list """ h = pyreq.getHTTPRequest(timeout=120) try: + if not 'decode' in kwargs: + kwargs['decode'] = True rep = h.load(*args, **kwargs) finally: h.close() @@ -139,7 +141,7 @@ class MultiHook(Hook): def _pluginSet(self, plugins): - plugins = set((str(x).strip().lower() for x in plugins)) + plugins = set((decode(x).strip().lower() for x in plugins)) for rf, rt in self.DOMAIN_REPLACEMENTS: regex = re.compile(rf) -- cgit v1.2.3 From 502c1437e838282aa56a286bb3751382c3aaf65e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 10 Jan 2015 16:01:38 +0100 Subject: Improve getInfo --- module/plugins/internal/MultiHook.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') 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" ), -- cgit v1.2.3 From 398a0dd02df28b6bbdb8c7f950db3131e77d8183 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 10 Jan 2015 19:50:54 +0100 Subject: [MultiHook] Fix downloadFailed routine --- module/plugins/internal/MultiHook.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 4408ebf0e..ac53c0c9c 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.33" + __version__ = "0.34" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -285,4 +285,9 @@ class MultiHook(Hook): else: retries = max(self.getConfig("retry", 10), 0) wait_time = max(self.getConfig("retryinterval", 1), 0) - pyfile.plugin.retry(retries, wait_time, "MultiHook") + + if 0 < retries > pyfile.plugin.retries: + pyfile.plugin.retries += 1 + pyfile.plugin.setCustomStatus("MultiHook", "queued") + pyfile.plugin.setWait(wait_time) + pyfile.plugin.wait() -- cgit v1.2.3 From aac6063859b9036612e86fb4029dc010d5c5d1e0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 10 Jan 2015 19:53:09 +0100 Subject: Code cosmetics --- module/plugins/internal/MultiHook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index ac53c0c9c..8bf72f21b 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -285,7 +285,7 @@ class MultiHook(Hook): else: retries = max(self.getConfig("retry", 10), 0) wait_time = max(self.getConfig("retryinterval", 1), 0) - + if 0 < retries > pyfile.plugin.retries: pyfile.plugin.retries += 1 pyfile.plugin.setCustomStatus("MultiHook", "queued") -- cgit v1.2.3 From 4747e1d7958c9fb1180da6f3a21f3093220a6655 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 10 Jan 2015 21:17:27 +0100 Subject: Code improvements --- module/plugins/internal/MultiHook.py | 49 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 8bf72f21b..a3b266679 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -2,6 +2,8 @@ import re +from time import sleep + from module.plugins.Hook import Hook from module.utils import decode, remove_chars @@ -9,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.34" + __version__ = "0.35" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -114,34 +116,43 @@ class MultiHook(Hook): def pluginsCached(self): - if not self.plugins: + if self.plugins: + return self.plugins + + for _i in xrange(3): try: pluginset = self._pluginSet(self.getHosters() if self.plugintype == "hoster" else self.getCrypters()) + except Exception, e: - self.logError(e) - return [] + self.logError(e, "Waiting 1 minute and retry") + sleep(60) + + else: + break + else: + return list() - try: - configmode = self.getConfig("pluginmode", 'all') - if configmode in ("listed", "unlisted"): - pluginlist = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') - configset = self._pluginSet(pluginlist) + try: + configmode = self.getConfig("pluginmode", 'all') + if configmode in ("listed", "unlisted"): + pluginlist = self.getConfig("pluginlist", '').replace('|', ',').replace(';', ',').split(',') + configset = self._pluginSet(pluginlist) - if configmode == "listed": - pluginset &= configset - else: - pluginset -= configset + if configmode == "listed": + pluginset &= configset + else: + pluginset -= configset - except Exception, e: - self.logError(e) + except Exception, e: + self.logError(e) - self.plugins = list(pluginset) + self.plugins = list(pluginset) return self.plugins def _pluginSet(self, plugins): - plugins = set((decode(x).strip().lower() for x in plugins)) + plugins = set((decode(x).strip().lower() for x in plugins if '.' in x)) for rf, rt in self.DOMAIN_REPLACEMENTS: regex = re.compile(rf) @@ -238,7 +249,7 @@ class MultiHook(Hook): self.logDebug("New %ss: %s" % (self.plugintype, ", ".join(plugins))) # create new regexp - regexp = r'.*(%s).*' % "|".join([x.replace(".", "\.") for x in plugins]) + regexp = r'.*(?P%s).*' % "|".join([x.replace(".", "\.") for x in plugins]) if hasattr(self.pluginclass, "__pattern__") and isinstance(self.pluginclass.__pattern__, basestring) and '://' in self.pluginclass.__pattern__: regexp = r'%s|%s' % (self.pluginclass.__pattern__, regexp) @@ -287,7 +298,7 @@ class MultiHook(Hook): wait_time = max(self.getConfig("retryinterval", 1), 0) if 0 < retries > pyfile.plugin.retries: + pyfile.setCustomStatus("MultiHook", "queued") pyfile.plugin.retries += 1 - pyfile.plugin.setCustomStatus("MultiHook", "queued") pyfile.plugin.setWait(wait_time) pyfile.plugin.wait() -- cgit v1.2.3 From a6754015159f1b447d870711c901cb3fc4e1515d Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 13 Jan 2015 01:46:32 +0100 Subject: [MultiHook] Fix DOMAIN_REPLACEMENTS + retry feature --- module/plugins/internal/MultiHook.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index a3b266679..795565d73 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.35" + __version__ = "0.36" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -48,7 +48,7 @@ class MultiHook(Hook): (r'uploaded\.net' , "uploaded.to" ), (r'uploadhero\.co' , "uploadhero.com" ), (r'zshares\.net' , "zshare.net" ), - (r'\d+.+' , "X\0" )] + (r'(\d+.+)' , "X\1" )] def setup(self): @@ -118,15 +118,15 @@ class MultiHook(Hook): def pluginsCached(self): if self.plugins: return self.plugins - + for _i in xrange(3): try: pluginset = self._pluginSet(self.getHosters() if self.plugintype == "hoster" else self.getCrypters()) - + except Exception, e: self.logError(e, "Waiting 1 minute and retry") sleep(60) - + else: break else: @@ -293,12 +293,16 @@ class MultiHook(Hook): self.logDebug("Unload MultiHook", pyfile.pluginname, hdict) self.unloadPlugin(pyfile.pluginname) pyfile.setStatus("queued") + pyfile.sync() else: retries = max(self.getConfig("retry", 10), 0) wait_time = max(self.getConfig("retryinterval", 1), 0) if 0 < retries > pyfile.plugin.retries: + self.logInfo(_("Retrying: %s") % pyfile.name) pyfile.setCustomStatus("MultiHook", "queued") + pyfile.sync() + pyfile.plugin.retries += 1 pyfile.plugin.setWait(wait_time) pyfile.plugin.wait() -- cgit v1.2.3 From f015b68c186c5d73a24ba2b99804757d7ca8b09e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 18 Jan 2015 13:34:51 +0100 Subject: [MultiHook] Fix reloadinterval --- module/plugins/internal/MultiHook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 795565d73..652443098 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.36" + __version__ = "0.37" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -201,7 +201,7 @@ class MultiHook(Hook): self.unloadPlugin(plugin) if self.getConfig("reload", True): - self.interval = max(self.getConfig("reloadinterval", 12), self.MIN_INTERVAL) + self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_INTERVAL) else: self.core.scheduler.removeJob(self.cb) self.cb = None -- cgit v1.2.3 From 29dec4b608c8d2df3a4b963d17e652d20381b1b0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 9 Mar 2015 22:45:21 +0100 Subject: [MultiHook] No freezes + better list error handling --- module/plugins/internal/MultiHook.py | 40 ++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 652443098..7e6462d9d 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.37" + __version__ = "0.38" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -27,7 +27,7 @@ class MultiHook(Hook): ("Walter Purcaro", "vuolter@gmail.com")] - MIN_INTERVAL = 1 * 60 * 60 + MIN_INTERVAL = 1 * 60 * 60 #: 1 hour DOMAIN_REPLACEMENTS = [(r'180upload\.com' , "hundredeightyupload.com"), (r'1fichier\.com' , "onefichier.com" ), @@ -119,17 +119,17 @@ class MultiHook(Hook): if self.plugins: return self.plugins - for _i in xrange(3): + for _i in xrange(2): try: pluginset = self._pluginSet(self.getHosters() if self.plugintype == "hoster" else self.getCrypters()) + break except Exception, e: - self.logError(e, "Waiting 1 minute and retry") + self.logDebug(e, "Waiting 1 minute and retry") sleep(60) - - else: - break else: + self.logWarning(_("Fallback to default reload interval due plugin")) + self.interval = self.MIN_INTERVAL return list() try: @@ -181,8 +181,28 @@ class MultiHook(Hook): raise NotImplementedError + #: Threaded _periodical, remove in 0.4.10 and use built-in flag for that + def _periodical(self): + try: + if self.isActivated(): + self.periodical() + + except Exception, e: + self.core.log.error(_("Error executing hooks: %s") % str(e)) + if self.core.debug: + print_exc() + + self.cb = self.core.scheduler.addJob(self.interval, self._periodical) + + def periodical(self): """reload plugin list periodically""" + if self.getConfig("reload", True): + self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_INTERVAL) + else: + self.core.scheduler.removeJob(self.cb) + self.cb = None + self.logInfo(_("Reloading supported %s list") % self.plugintype) old_supported = self.supported @@ -200,12 +220,6 @@ class MultiHook(Hook): for plugin in old_supported: self.unloadPlugin(plugin) - if self.getConfig("reload", True): - self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_INTERVAL) - else: - self.core.scheduler.removeJob(self.cb) - self.cb = None - def overridePlugins(self): excludedList = [] -- cgit v1.2.3 From f85e28e565a1e0a76e6271d0b0853d6d48b4a043 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 10 Mar 2015 01:16:29 +0100 Subject: [MultiHook] Fix _pluginSet (fix LinkdecrypterCom issue) --- module/plugins/internal/MultiHook.py | 48 +++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 7e6462d9d..e69f56c32 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.38" + __version__ = "0.39" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), @@ -23,16 +23,13 @@ class MultiHook(Hook): __description__ = """Hook plugin for multi hoster/crypter""" __license__ = "GPLv3" - __authors__ = [("pyLoad Team", "admin@pyload.org"), + __authors__ = [("pyLoad Team" , "admin@pyload.org" ), ("Walter Purcaro", "vuolter@gmail.com")] - MIN_INTERVAL = 1 * 60 * 60 #: 1 hour + MIN_RELOAD_INTERVAL = 1 * 60 * 60 #: 1 hour 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" ), @@ -48,7 +45,16 @@ class MultiHook(Hook): (r'uploaded\.net' , "uploaded.to" ), (r'uploadhero\.co' , "uploadhero.com" ), (r'zshares\.net' , "zshare.net" ), - (r'(\d+.+)' , "X\1" )] + (r'^1' , "one" ), + (r'^2' , "two" ), + (r'^3' , "three" ), + (r'^4' , "four" ), + (r'^5' , "five" ), + (r'^6' , "six" ), + (r'^7' , "seven" ), + (r'^8' , "eight" ), + (r'^9' , "nine" ), + (r'^0' , "zero" )] def setup(self): @@ -129,7 +135,7 @@ class MultiHook(Hook): sleep(60) else: self.logWarning(_("Fallback to default reload interval due plugin")) - self.interval = self.MIN_INTERVAL + self.interval = self.MIN_RELOAD_INTERVAL return list() try: @@ -152,17 +158,15 @@ class MultiHook(Hook): def _pluginSet(self, plugins): - plugins = set((decode(x).strip().lower() for x in plugins if '.' in x)) + regexp = re.compile(r'^[\w\-.^_]{3,63}\.[a-zA-Z]{2,}$', re.U) + plugins = [decode(p.strip()).lower() for p in plugins if regexp.match(p.strip())] - for rf, rt in self.DOMAIN_REPLACEMENTS: - regex = re.compile(rf) - for p in filter(lambda x: regex.match(x), plugins): - plugins.remove(p) - plugins.add(re.sub(rf, rt, p)) + for r in self.DOMAIN_REPLACEMENTS: + rf, rt = r + repr = re.compile(rf, re.I|re.U) + plugins = [re.sub(rf, rt, p) if repr.match(p) else p for p in plugins] - plugins.discard('') - - return plugins + return set(plugins) def getHosters(self): @@ -198,7 +202,7 @@ class MultiHook(Hook): def periodical(self): """reload plugin list periodically""" if self.getConfig("reload", True): - self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_INTERVAL) + self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_RELOAD_INTERVAL) else: self.core.scheduler.removeJob(self.cb) self.cb = None @@ -263,7 +267,7 @@ class MultiHook(Hook): self.logDebug("New %ss: %s" % (self.plugintype, ", ".join(plugins))) # create new regexp - regexp = r'.*(?P%s).*' % "|".join([x.replace(".", "\.") for x in plugins]) + regexp = r'.*(?P%s).*' % "|".join(x.replace('.', '\.') for x in plugins) if hasattr(self.pluginclass, "__pattern__") and isinstance(self.pluginclass.__pattern__, basestring) and '://' in self.pluginclass.__pattern__: regexp = r'%s|%s' % (self.pluginclass.__pattern__, regexp) @@ -277,11 +281,11 @@ class MultiHook(Hook): def unloadPlugin(self, plugin): hdict = self.core.pluginManager.plugins[self.plugintype][plugin] if "module" in hdict: - del hdict['module'] + hdict.pop('module', None) if "new_module" in hdict: - del hdict['new_module'] - del hdict['new_name'] + hdict.pop('new_module', None) + hdict.pop('new_name', None) def unload(self): -- cgit v1.2.3 From e65d19ee3a1e435bf2896ed829e5581eeef92dd2 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 14 Mar 2015 11:07:54 +0100 Subject: Import cleanup for datetime and time modules --- module/plugins/internal/MultiHook.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index e69f56c32..d4369da9b 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- import re - -from time import sleep +import time from module.plugins.Hook import Hook from module.utils import decode, remove_chars @@ -132,7 +131,7 @@ class MultiHook(Hook): except Exception, e: self.logDebug(e, "Waiting 1 minute and retry") - sleep(60) + time.sleep(60) else: self.logWarning(_("Fallback to default reload interval due plugin")) self.interval = self.MIN_RELOAD_INTERVAL -- cgit v1.2.3 From 2bc144adb6bc2759b635e09687b27bf96074827f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 18 Mar 2015 13:39:07 +0100 Subject: Spare code cosmetics --- module/plugins/internal/MultiHook.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index d4369da9b..35bb9c65d 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -57,6 +57,8 @@ class MultiHook(Hook): def setup(self): + self.info = {} #@TODO: Remove in 0.4.10 + self.plugins = [] self.supported = [] self.new_supported = [] -- cgit v1.2.3 From e19feb3a3b961d3e1f1a86f2366c3b71c85bc8db Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 18 Mar 2015 22:16:38 +0100 Subject: [MultiHoster] Fix revertfailed feature --- module/plugins/internal/MultiHook.py | 41 ++++++------------------------------ 1 file changed, 6 insertions(+), 35 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 35bb9c65d..9ba1fc2c8 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -10,15 +10,12 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.39" + __version__ = "0.40" - __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), - ("pluginlist" , "str" , "Plugin list (comma separated)" , "" ), - ("revertfailed" , "bool" , "Revert to standard download if fails", True ), - ("retry" , "int" , "Number of retries before revert" , 10 ), - ("retryinterval" , "int" , "Retry interval in minutes" , 1 ), - ("reload" , "bool" , "Reload plugin list" , True ), - ("reloadinterval", "int" , "Reload interval in hours" , 12 )] + __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), + ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), + ("reload" , "bool" , "Reload plugin list" , True ), + ("reloadinterval", "int" , "Reload interval in hours" , 12 )] __description__ = """Hook plugin for multi hoster/crypter""" __license__ = "GPLv3" @@ -135,7 +132,7 @@ class MultiHook(Hook): self.logDebug(e, "Waiting 1 minute and retry") time.sleep(60) else: - self.logWarning(_("Fallback to default reload interval due plugin")) + self.logWarning(_("Fallback to default reload interval due plugin parse error")) self.interval = self.MIN_RELOAD_INTERVAL return list() @@ -299,29 +296,3 @@ class MultiHook(Hook): hdict['pattern'] = getattr(self.pluginclass, "__pattern__", r'^unmatchable$') hdict['re'] = re.compile(hdict['pattern']) - - - def downloadFailed(self, pyfile): - """remove plugin override if download fails but not if file is offline/temp.offline""" - if pyfile.status != 8 or not self.getConfig("revertfailed", True): - return - - hdict = self.core.pluginManager.plugins[self.plugintype][pyfile.pluginname] - if "new_name" in hdict and hdict['new_name'] == self.pluginname: - if pyfile.error == "MultiHook": - self.logDebug("Unload MultiHook", pyfile.pluginname, hdict) - self.unloadPlugin(pyfile.pluginname) - pyfile.setStatus("queued") - pyfile.sync() - else: - retries = max(self.getConfig("retry", 10), 0) - wait_time = max(self.getConfig("retryinterval", 1), 0) - - if 0 < retries > pyfile.plugin.retries: - self.logInfo(_("Retrying: %s") % pyfile.name) - pyfile.setCustomStatus("MultiHook", "queued") - pyfile.sync() - - pyfile.plugin.retries += 1 - pyfile.plugin.setWait(wait_time) - pyfile.plugin.wait() -- cgit v1.2.3 From b4a43ec54dbd327d46692c7425695adc91fff3d7 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 18 Mar 2015 23:14:24 +0100 Subject: [SimpleHoster] Fix https://github.com/pyload/pyload/issues/1263 --- module/plugins/internal/MultiHook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 9ba1fc2c8..ef7f47ed1 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -110,7 +110,7 @@ class MultiHook(Hook): return rep - def getConfig(self, option, default=''): + def getConfig(self, option, default=''): #@TODO: Remove in 0.4.10 """getConfig with default value - sublass may not implements all config options""" try: return self.getConf(option) -- cgit v1.2.3 From 7d90803262ccbb4fc5296a4dc3ce30fe98f55631 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 25 Mar 2015 23:10:07 +0100 Subject: __config__ cosmetics --- module/plugins/internal/MultiHook.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index ef7f47ed1..5855f7ece 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -12,10 +12,10 @@ class MultiHook(Hook): __type__ = "hook" __version__ = "0.40" - __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), - ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), - ("reload" , "bool" , "Reload plugin list" , True ), - ("reloadinterval", "int" , "Reload interval in hours" , 12 )] + __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), + ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), + ("reload" , "bool" , "Reload plugin list" , True ), + ("reloadinterval", "int" , "Reload interval in hours" , 12 )] __description__ = """Hook plugin for multi hoster/crypter""" __license__ = "GPLv3" -- cgit v1.2.3 From e60aecc0973c21a22807b3eb16023e64efcbb503 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 28 Mar 2015 00:45:36 +0100 Subject: [MultiHook] Periodically loadAccount --- module/plugins/internal/MultiHook.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 5855f7ece..291063268 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -10,7 +10,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.40" + __version__ = "0.41" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -66,10 +66,10 @@ class MultiHook(Hook): self.pluginname = None self.plugintype = None - self._initPlugin() + self.initPlugin() - def _initPlugin(self): + def initPlugin(self): plugin, type = self.core.pluginManager.findPlugin(self.__name__) if not plugin: @@ -82,7 +82,7 @@ class MultiHook(Hook): self.pluginclass = getattr(self.pluginmodule, self.__name__) - def _loadAccount(self): + def loadAccount(self): self.account = self.core.accountManager.getAccountPlugin(self.pluginname) if self.account and not self.account.canUse(): @@ -93,10 +93,6 @@ class MultiHook(Hook): self.setConfig('activated', False) - def coreReady(self): - self._loadAccount() - - def getURL(self, *args, **kwargs): #@TODO: Remove in 0.4.10 """ see HTTPRequest for argument list """ h = pyreq.getHTTPRequest(timeout=120) @@ -199,6 +195,8 @@ class MultiHook(Hook): def periodical(self): """reload plugin list periodically""" + self.loadAccount() + if self.getConfig("reload", True): self.interval = max(self.getConfig("reloadinterval", 12) * 60 * 60, self.MIN_RELOAD_INTERVAL) else: -- cgit v1.2.3 From c99421d6385e0f6b8bd9095c705becbc35f873a0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 22:08:58 +0200 Subject: Traceback code cosmetics --- module/plugins/internal/MultiHook.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 291063268..942c044c2 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -2,6 +2,7 @@ import re import time +import traceback from module.plugins.Hook import Hook from module.utils import decode, remove_chars @@ -10,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.41" + __version__ = "0.42" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -188,7 +189,7 @@ class MultiHook(Hook): except Exception, e: self.core.log.error(_("Error executing hooks: %s") % str(e)) if self.core.debug: - print_exc() + traceback.print_exc() self.cb = self.core.scheduler.addJob(self.interval, self._periodical) -- cgit v1.2.3 From 348a386486d081d86363774e64525484ef159cd6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 19:23:06 +0200 Subject: Fix https://github.com/pyload/pyload/issues/1157 --- module/plugins/internal/MultiHook.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 942c044c2..6ef803f7a 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.42" + __version__ = "0.43" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -71,16 +71,15 @@ class MultiHook(Hook): def initPlugin(self): - plugin, type = self.core.pluginManager.findPlugin(self.__name__) + self.pluginname = self.__name__.rsplit("Hook", 1)[0] + plugin, self.plugintype = self.core.pluginManager.findPlugin(self.pluginname) - if not plugin: + if plugin: + self.pluginmodule = self.core.pluginManager.loadModule(type, self.pluginname) + self.pluginclass = getattr(self.pluginmodule, self.pluginname) + else: self.logWarning("Hook plugin will be deactivated due missing plugin reference") self.setConfig('activated', False) - else: - self.pluginname = self.__name__ - self.plugintype = type - self.pluginmodule = self.core.pluginManager.loadModule(type, self.__name__) - self.pluginclass = getattr(self.pluginmodule, self.__name__) def loadAccount(self): -- cgit v1.2.3 From 944f0d42fcc335e5727e6e2e0b42f1177d9c6a18 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Apr 2015 19:43:51 +0200 Subject: Fix https://github.com/pyload/pyload/issues/1157 (2) --- module/plugins/internal/MultiHook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 6ef803f7a..51c8ea89f 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.43" + __version__ = "0.44" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -75,7 +75,7 @@ class MultiHook(Hook): plugin, self.plugintype = self.core.pluginManager.findPlugin(self.pluginname) if plugin: - self.pluginmodule = self.core.pluginManager.loadModule(type, self.pluginname) + self.pluginmodule = self.core.pluginManager.loadModule(self.plugintype, self.pluginname) self.pluginclass = getattr(self.pluginmodule, self.pluginname) else: self.logWarning("Hook plugin will be deactivated due missing plugin reference") -- cgit v1.2.3 From d52ddee1d43b4be610b265fbe87911494d1364ad Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 9 May 2015 03:29:27 +0200 Subject: [MultiHook] Remove unbound method 'getCrypters' --- module/plugins/internal/MultiHook.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'module/plugins/internal/MultiHook.py') diff --git a/module/plugins/internal/MultiHook.py b/module/plugins/internal/MultiHook.py index 51c8ea89f..01ff4b07d 100644 --- a/module/plugins/internal/MultiHook.py +++ b/module/plugins/internal/MultiHook.py @@ -11,7 +11,7 @@ from module.utils import decode, remove_chars class MultiHook(Hook): __name__ = "MultiHook" __type__ = "hook" - __version__ = "0.44" + __version__ = "0.45" __config__ = [("pluginmode" , "all;listed;unlisted", "Use for plugins" , "all"), ("pluginlist" , "str" , "Plugin list (comma separated)", "" ), @@ -121,7 +121,7 @@ class MultiHook(Hook): for _i in xrange(2): try: - pluginset = self._pluginSet(self.getHosters() if self.plugintype == "hoster" else self.getCrypters()) + pluginset = self._pluginSet(self.getHosters()) break except Exception, e: @@ -171,14 +171,6 @@ class MultiHook(Hook): raise NotImplementedError - def getCrypters(self): - """Load list of supported crypters - - :return: List of domain names - """ - raise NotImplementedError - - #: Threaded _periodical, remove in 0.4.10 and use built-in flag for that def _periodical(self): try: -- cgit v1.2.3