def RunPlugin(): """ Runs Retrospect as a Video Add-On """ logFile = None try: from config import Config from helpers.sessionhelper import SessionHelper # get a logger up and running from logger import Logger # only append if there are no active sessions if not SessionHelper.IsSessionActive(): # first call in the session, so do not append the log appendLogFile = False else: appendLogFile = True logFile = Logger.CreateLogger(os.path.join(Config.profileDir, Config.logFileNameAddon), Config.appName, append=appendLogFile, dualLogger=lambda x, y=4: xbmc.log(x, y)) from urihandler import UriHandler from addonsettings import AddonSettings from textures import TextureHandler # update the loglevel Logger.Instance().minLogLevel = AddonSettings.GetLogLevel() useCaching = AddonSettings.CacheHttpResponses() cacheDir = None if useCaching: cacheDir = Config.cacheDir # determine the platform from envcontroller import EnvController from environments import Environments maxFileNameLength = None if EnvController.IsPlatform(Environments.Xbox): maxFileNameLength = 42 ignoreSslErrors = AddonSettings.IgnoreSslErrors() UriHandler.CreateUriHandler(cacheDir=cacheDir, maxFileNameLength=maxFileNameLength, cookieJar=os.path.join( Config.profileDir, "cookiejar.dat"), ignoreSslErrors=ignoreSslErrors) # start texture handler TextureHandler.SetTextureHandler(Config, Logger.Instance(), UriHandler.Instance()) # run the plugin import plugin plugin.Plugin(sys.argv[0], sys.argv[2], sys.argv[1]) # close the log to prevent locking on next call Logger.Instance().CloseLog() logFile = None # make sure we leave no references behind AddonSettings.ClearCachedAddonSettingsObject() except: if logFile: logFile.Critical("Error running plugin", exc_info=True) raise