diff options
Diffstat (limited to 'pyload')
-rw-r--r-- | pyload/AddonManager.py | 34 | ||||
-rw-r--r-- | pyload/PluginManager.py | 8 | ||||
-rw-r--r-- | pyload/interaction/EventManager.py | 15 | ||||
-rw-r--r-- | pyload/plugins/Addon.py | 38 | ||||
-rw-r--r-- | pyload/plugins/accounts/Premium4Me.py | 32 | ||||
-rw-r--r-- | pyload/plugins/addons/MultiHoster.py | 14 | ||||
-rw-r--r-- | pyload/remote/wsbackend/AsyncHandler.py | 2 | ||||
-rw-r--r-- | pyload/threads/ThreadManager.py | 4 |
8 files changed, 37 insertions, 110 deletions
diff --git a/pyload/AddonManager.py b/pyload/AddonManager.py index 5637b1a8e..f1691fbed 100644 --- a/pyload/AddonManager.py +++ b/pyload/AddonManager.py @@ -45,7 +45,7 @@ class AddonManager: self.createIndex() # manage addons on config change - self.addEvent("config:changed", self.manageAddons) + self.listenTo("config:changed", self.manageAddon) @lock def callInHooks(self, event, eventName, *args): @@ -62,23 +62,6 @@ class AddonManager: addon.logError(_("Error when executing %s" % f), e) self.core.print_exc() - def addRPC(self, plugin, func, doc): - doc = doc.strip() if doc else "" - - if plugin in self.methods: - self.methods[plugin][func] = doc - else: - self.methods[plugin] = {func: doc} - - def callRPC(self, plugin, func, args): - if not args: args = [] - else: - args = literal_eval(args) - - plugin = self.plugins[plugin] - f = getattr(plugin, func) - return f(*args) - @lock def createIndex(self): active = [] @@ -106,7 +89,6 @@ class AddonManager: else: deactive.append(pluginname) - except: self.log.warning(_("Failed activating %(name)s") % {"name": pluginname}) self.core.print_exc() @@ -114,7 +96,7 @@ class AddonManager: self.log.info(_("Activated addons: %s") % ", ".join(sorted(active))) self.log.info(_("Deactivate addons: %s") % ", ".join(sorted(deactive))) - def manageAddons(self, plugin, name, value): + def manageAddon(self, plugin, name, value): # TODO: user # check if section was a plugin @@ -193,12 +175,6 @@ class AddonManager: def packageFinished(self, package): self.callInHooks("packageFinished", "package:finished", package) - def beforeReconnecting(self, ip): - self.callInHooks("beforeReconnecting", "reconnecting:before", ip) - - def afterReconnecting(self, ip): - self.callInHooks("afterReconnecting", "reconnecting:after", ip) - @lock def startThread(self, function, *args, **kwargs): AddonThread(self.core.threadManager, function, args, kwargs) @@ -236,12 +212,12 @@ class AddonManager: for name, plugin in self.plugins.iteritems(): if name in self.events: for func, event in self.events[name]: - self.addEvent(event, getattr(plugin, func)) + self.listenTo(event, getattr(plugin, func)) # clean up del self.events[name] - def addEvent(self, *args): - self.core.eventManager.addEvent(*args) + def listenTo(self, *args): + self.core.eventManager.listenTo(*args) def dispatchEvent(self, *args): self.core.eventManager.dispatchEvent(*args) diff --git a/pyload/PluginManager.py b/pyload/PluginManager.py index 159e7d9de..dab5be063 100644 --- a/pyload/PluginManager.py +++ b/pyload/PluginManager.py @@ -194,15 +194,13 @@ class PluginManager: if folder == "addons" and "config" not in attrs and not attrs.get("internal", False): attrs["config"] = (["activated", "bool", "Activated", False],) - if "config" in attrs and attrs["config"]: + if "config" in attrs and attrs["config"] is not None: config = attrs["config"] desc = attrs.get("description", "") long_desc = attrs.get("long_description", "") - if type(config[0]) == tuple: - config = [list(x) for x in config] - else: - config = [list(config)] + # Convert tuples to list + config = [list(x) for x in config] if folder == "addons" and not attrs.get("internal", False): for item in config: diff --git a/pyload/interaction/EventManager.py b/pyload/interaction/EventManager.py index 7d37ca6b9..329961d93 100644 --- a/pyload/interaction/EventManager.py +++ b/pyload/interaction/EventManager.py @@ -3,6 +3,7 @@ from threading import Lock from traceback import print_exc + class EventManager: """ Handles all event-related tasks, also stores an event queue for clients, so they can retrieve them later. @@ -29,19 +30,11 @@ class EventManager: self.core = core self.log = core.log - # uuid : list of events - self.clients = {} self.events = {"event": []} self.lock = Lock() - def getEvents(self, uuid): - """ Get accumulated events for uuid since last call, this also registers a new client """ - if uuid not in self.clients: - self.clients[uuid] = Client() - return self.clients[uuid].get() - - def addEvent(self, event, func): + def listenTo(self, event, func): """Adds an event listener for event name""" if event in self.events: if func in self.events[event]: @@ -69,7 +62,7 @@ class EventManager: f(event, *args) except Exception, e: self.log.warning("Error calling event handler %s: %s, %s, %s" - % ("event", f, args, str(e))) + % ("event", f, args, str(e))) if self.core.debug: print_exc() @@ -79,6 +72,6 @@ class EventManager: f(*args) except Exception, e: self.log.warning("Error calling event handler %s: %s, %s, %s" - % (event, f, args, str(e))) + % (event, f, args, str(e))) if self.core.debug: print_exc()
\ No newline at end of file diff --git a/pyload/plugins/Addon.py b/pyload/plugins/Addon.py index ff9c57bef..940339bfb 100644 --- a/pyload/plugins/Addon.py +++ b/pyload/plugins/Addon.py @@ -40,19 +40,6 @@ def AddEventListener(event): return f return _klass -class ConfigHandler(object): - """ Register method as config handler. - - Your method signature has to be: - def foo(value=None): - - value will be passed to use your method to set the config. - When value is None your method needs to return an interaction task for configuration. - """ - - def __new__(cls, f, *args, **kwargs): - addonManager.addConfigHandler(class_name(f.__module__), f.func_name) - return f def AddonHandler(desc, media=None): """ Register Handler for files, packages, or arbitrary callable methods. @@ -90,10 +77,6 @@ class Addon(Base): #: automatically register event listeners for functions, attribute will be deleted don't use it yourself event_map = None - # Alternative to event_map - #: List of events the plugin can handle, name the functions exactly like eventname. - event_list = None # dont make duplicate entries in event_map - #: periodic call interval in seconds interval = 60 @@ -114,22 +97,15 @@ class Addon(Base): for event, funcs in self.event_map.iteritems(): if type(funcs) in (list, tuple): for f in funcs: - self.evm.addEvent(event, getattr(self,f)) + self.evm.listenTo(event, getattr(self,f)) else: - self.evm.addEvent(event, getattr(self,funcs)) + self.evm.listenTo(event, getattr(self,funcs)) #delete for various reasons self.event_map = None - if self.event_list: - for f in self.event_list: - self.evm.addEvent(f, getattr(self,f)) - - self.event_list = None - self.initPeriodical() self.init() - self.setup() def initPeriodical(self): if self.interval >=1: @@ -158,10 +134,6 @@ class Addon(Base): def init(self): pass - def setup(self): - """ more init stuff if needed """ - pass - def activate(self): """ Used to activate the addon """ if has_method(self.__class__, "coreReady"): @@ -196,10 +168,4 @@ class Addon(Base): pass def packageFinished(self, pypack): - pass - - def beforeReconnecting(self, ip): - pass - - def afterReconnecting(self, ip): pass
\ No newline at end of file diff --git a/pyload/plugins/accounts/Premium4Me.py b/pyload/plugins/accounts/Premium4Me.py index de1538e4a..fbca3ce84 100644 --- a/pyload/plugins/accounts/Premium4Me.py +++ b/pyload/plugins/accounts/Premium4Me.py @@ -1,27 +1,23 @@ -# -*- coding: utf-8 -*- -from module.plugins.MultiHoster import MultiHoster +from module.plugins.Account import Account -class Premium4Me(MultiHoster): +class Premium4Me(Account): __name__ = "Premium4Me" - __version__ = "0.10" + __version__ = "0.03" __type__ = "account" - __description__ = """Premium4.me account plugin""" - __author_name__ = ("RaNaN", "zoidberg") - __author_mail__ = ("RaNaN@pyload.org", "zoidberg@mujmail.cz") + __description__ = """Premium.to account plugin""" + __author_name__ = ("RaNaN", "zoidberg", "stickell") + __author_mail__ = ("RaNaN@pyload.org", "zoidberg@mujmail.cz", "l.stickell@yahoo.it") - def loadAccountInfo(self, req): - traffic = req.load("http://premium4.me/api/traffic.php?authcode=%s" % self.authcode) + def loadAccountInfo(self, user, req): + traffic = req.load("http://premium.to/api/traffic.php?authcode=%s" % self.authcode) - account_info = {"trafficleft": int(traffic) / 1024, "validuntil": -1} + account_info = {"trafficleft": int(traffic) / 1024, + "validuntil": -1} return account_info - def login(self, req): - self.authcode = req.load("http://premium4.me/api/getauthcode.php?username=%s&password=%s" % (self.loginname, self.password)).strip() - - if "wrong username" in self.authcode: - self.wrongPassword() + def login(self, user, data, req): + self.authcode = req.load("http://premium.to/api/getauthcode.php?username=%s&password=%s" % (user, data["password"])).strip() - def loadHosterList(self, req): - page = req.load("http://premium4.me/api/hosters.php?authcode=%s" % self.authcode) - return [x.strip() for x in page.replace("\"", "").split(";")]
\ No newline at end of file + if "wrong username" in self.authcode: + self.wrongPassword()
\ No newline at end of file diff --git a/pyload/plugins/addons/MultiHoster.py b/pyload/plugins/addons/MultiHoster.py index 825085df8..b7873a3a2 100644 --- a/pyload/plugins/addons/MultiHoster.py +++ b/pyload/plugins/addons/MultiHoster.py @@ -4,14 +4,15 @@ import re from types import MethodType -from module.plugins.MultiHoster import MultiHoster as MultiHosterAccount, normalize -from module.plugins.Addon import Addon, AddEventListener -from module.plugins.PluginManager import PluginTuple +from pyload.plugins.MultiHoster import MultiHoster as MultiHosterAccount, normalize +from pyload.plugins.Addon import Addon, AddEventListener +from pyload.PluginManager import PluginTuple + class MultiHoster(Addon): __version__ = "0.1" __internal__ = True - __description__ = "Gives ability to use MultiHoster services. You need to add your account first." + __description__ = "Gives ability to use MultiHoster services." __config__ = [] __author_mail__ = ("pyLoad Team",) __author_mail__ = ("support@pyload.org",) @@ -25,7 +26,7 @@ class MultiHoster(Addon): def addHoster(self, account): - self.logDebug("New MultiHoster %s" % account.__name__) + self.logInfo(_("Added MultiHoster %s") % account.__name__) pluginMap = {} for name in self.core.pluginManager.getPlugins("hoster").keys(): @@ -65,12 +66,10 @@ class MultiHoster(Addon): hoster[account.__name__] = new - @AddEventListener("account:deleted") def refreshAccounts(self, plugin=None, user=None): self.plugins = {} - for name, account in self.core.accountManager.iterAccounts(): if isinstance(account, MultiHosterAccount) and account.isUsable(): self.addHoster(account) @@ -94,7 +93,6 @@ class MultiHoster(Addon): pm = self.core.pluginManager pm.getPlugin = MethodType(getPlugin, pm, object) - def deactivate(self): #restore state pm = self.core.pluginManager diff --git a/pyload/remote/wsbackend/AsyncHandler.py b/pyload/remote/wsbackend/AsyncHandler.py index 88bd371b0..f1c584b7d 100644 --- a/pyload/remote/wsbackend/AsyncHandler.py +++ b/pyload/remote/wsbackend/AsyncHandler.py @@ -52,7 +52,7 @@ class AsyncHandler(AbstractHandler): self.clients = [] self.lock = Lock() - self.core.evm.addEvent("event", self.add_event) + self.core.evm.listenTo("event", self.add_event) @lock def on_open(self, req): diff --git a/pyload/threads/ThreadManager.py b/pyload/threads/ThreadManager.py index 0044ebcb2..086e8ba51 100644 --- a/pyload/threads/ThreadManager.py +++ b/pyload/threads/ThreadManager.py @@ -202,7 +202,7 @@ class ThreadManager: ip = self.getIP() - self.core.addonManager.beforeReconnecting(ip) + self.core.evm.dispatchEvent("reconnect:before", ip) self.log.debug("Old IP: %s" % ip) @@ -219,7 +219,7 @@ class ThreadManager: reconn.wait() sleep(1) ip = self.getIP() - self.core.addonManager.afterReconnecting(ip) + self.core.evm.dispatchEvent("reconnect:after", ip) self.log.info(_("Reconnected, new IP: %s") % ip) |