From 84a935a1d475dee021402e5fb74c645ea43709d0 Mon Sep 17 00:00:00 2001 From: Christopher Rosell Date: Thu, 23 Aug 2012 22:46:06 +0200 Subject: Make the library more thread safe. --- src/livestreamer/plugins/__init__.py | 38 +++++++++++++----------------------- 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'src/livestreamer/plugins/__init__.py') diff --git a/src/livestreamer/plugins/__init__.py b/src/livestreamer/plugins/__init__.py index 7e91f16..4c70fdc 100644 --- a/src/livestreamer/plugins/__init__.py +++ b/src/livestreamer/plugins/__init__.py @@ -1,20 +1,24 @@ -import pkgutil -import imp - -from livestreamer.logger import Logger - -plugins_loaded = {} +from livestreamer.options import Options class Plugin(object): + options = Options() + def __init__(self, url): self.url = url - self.args = None - self.logger = Logger("plugin." + self.module) + self.logger = self.session.logger.new_module("plugin." + self.module) @classmethod - def can_handle_url(self, url): + def can_handle_url(cls, url): raise NotImplementedError + @classmethod + def set_option(cls, key, value): + cls.options.set(key, value) + + @classmethod + def get_option(cls, key): + return cls.options.get(key) + def get_streams(self): ranking = ["iphonelow", "iphonehigh", "240p", "320k", "360p", "850k", "480p", "1400k", "720p", "2400k", "hd", "1080p", "live"] @@ -39,18 +43,4 @@ class NoStreamsError(PluginError): class NoPluginError(PluginError): pass -def load_plugins(plugins): - for loader, name, ispkg in pkgutil.iter_modules(plugins.__path__): - file, pathname, desc = imp.find_module(name, plugins.__path__) - imp.load_module(name, file, pathname, desc) - return plugins_loaded - -def get_plugins(): - return plugins_loaded - -def register_plugin(name, klass): - plugins_loaded[name] = klass - klass.module = name - -__all__ = ["Plugin", "PluginError", "NoStreamsError", "NoPluginError", - "load_plugins", "get_plugins", "register_plugin"] +__all__ = ["Plugin", "PluginError", "NoStreamsError", "NoPluginError"] -- cgit v1.2.3