⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pluginsupport.py

📁 bittorrent source by python. please enjoy
💻 PY
字号:
# The contents of this file are subject to the BitTorrent Open Source License# Version 1.1 (the License).  You may not copy or use this file, in either# source code or executable form, except in compliance with the License.  You# may obtain a copy of the License at http://www.bittorrent.com/license/.## Software distributed under the License is distributed on an AS IS basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the License# for the specific language governing rights and limitations under the# License.## Written by Matt Chisholmimport osimport impimport tracebackimport threadingfrom BitTorrent.platform import plugin_pathfrom BitTorrent import versionclass BasePlugin(object):    def __init__(self, main):        self.main = main            def _supports(version):        return False    supports = staticmethod(_supports)class DownloadPlugin(BasePlugin):    passPLUGIN_EXTENSION = '.py'class PluginManager(object):    kind = ''    def __init__(self, config, ui_wrap_func):        self.config = config        self.ui_wrap_func = ui_wrap_func        self.plugin_path = [os.path.join(x, self.kind) for x in plugin_path]        self.plugins = []        self._load_plugins()            def _load_plugins(self):        for p in self.plugin_path:            files = os.listdir(p)            for f in files:                if f[0] != '_' and f.endswith(PLUGIN_EXTENSION):                    filename = f[:-len(PLUGIN_EXTENSION)]                    try:                        plugin_module = imp.load_module(filename, *imp.find_module(filename, [p]))                    except ImportError:                        self.show_status('Could not load %s plugin' % filename)                        traceback.print_exc()                        continue                    for c in dir(plugin_module):                        if c[0] != '_':                                                    plugin = getattr(plugin_module, c)                            if self._check_plugin(plugin):                                self.plugins.append(plugin)        self.show_status("Loaded:", self.plugins)    def _check_plugin(self, plugin):        if not hasattr(plugin, 'supports'):            return False        if not plugin.supports(version):            return False        return True            def _find_plugin(self, *args):        for p in self.plugins:            if p.matches_type(*args):                self.show_status('Found', p, 'for', args)                return p        return None    def run_ui_task(self, funcname, *args):        self.show_status('Would run', funcname, 'with', args, 'using', self.ui_wrap_func)    def show_status(self, *msg):        if False:            print ' '.join(map(str, msg))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -