def module_start(): # Import modules plugin_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) log.debug('plugin_dir: %r', plugin_dir) import_modules(os.path.join(plugin_dir, 'api'), exclude=[ '__init__.py', 'core' ]) import_modules(os.path.join(plugin_dir, 'api', 'account'), exclude=[ '__init__.py' ]) import_modules(os.path.join(plugin_dir, 'api', 'session'), exclude=[ '__init__.py' ]) import_modules(os.path.join(plugin_dir, 'managers'), exclude=[ '__init__.py', 'core' ]) import_modules(os.path.join(plugin_dir, 'modules'), exclude=[ '__init__.py', 'backup', 'core' ]) import_modules(os.path.join(plugin_dir, 'scrobbler'), exclude=[ '__init__.py', 'core', 'handlers', 'methods' ]) import_modules(os.path.join(plugin_dir, 'scrobbler', 'handlers'), exclude=[ '__init__.py' ]) # Start modules modules = sorted(MODULES.items(), key=lambda item: item[1]['priority']) log.debug('Starting %d module(s)...', len(modules)) for kls, options in modules: if not options['start']: continue log.debug(' -> %s (priority: %d, blocking: %s)', kls.__name__, options['priority'], options['blocking']) f_start = getattr(kls, 'start') try: # Start module if options['blocking']: f_start() else: options['thread'] = spawn(f_start, _name=kls.__name__) except Exception as ex: log.error('Unable to start %r module: %s', kls, ex, exc_info=True) log.debug('Finished starting %d module(s)', len(modules))
# Setup native libraries from plugin.core.libraries import LibrariesManager LibrariesManager.setup(cache=False) LibrariesManager.test() # Setup database proxy from plugin.core.database import Database from tests.helpers.database import DATABASE_PROXY db_path = os.path.abspath(Environment.path.plugin_database) Database._cache['peewee'][db_path] = DATABASE_PROXY # Configure plex.database.py os.environ['LIBRARY_DB'] = os.path.join( Environment.path.plugin_support, 'Databases', 'com.plexapp.plugins.library.db' ) # # Modules # from plugin.core.importer import import_modules import_modules(os.path.join(PLUGIN_DIR, 'scrobbler', 'handlers'), exclude=[ '__init__.py' ])
# # Preferences # from plugin.preferences.main import Preferences @classmethod def preferences_get(cls, key, account=None): return None # Patch `Preferences.get` method Preferences.get = preferences_get # # Modules # from plugin.core.importer import import_modules from plugin.modules.core.manager import ModuleManager # ModuleManager ModuleManager.initialize() ModuleManager.start([ 'matcher' ]) # Scrobbler import_modules(os.path.join(PLUGIN_DIR, 'scrobbler', 'handlers'), exclude=[ '__init__.py' ])