private void Initialize() { this.Bridge = KodiBridge.CreateBridgeInstance(); // If we're being started as a service, don't run addon specific tasks if (this.IsService) { PyConsole.WriteLine(string.Format("Starting as Service: {0}", this.BaseUrl)); return; } this.Handle = Convert.ToInt32((PythonInterop.EvalToResult("sys.argv[1]")).Value); this.Parameters = (PythonInterop.EvalToResult("sys.argv[2]")).Value; PyConsole.WriteLine(string.Format("BaseUrl: {0}, Handle: {1}, Parameters: {2}", this.BaseUrl, this.Handle, this.Parameters)); PyVariableManager.Reset(); // Instance of XbmcAddon this.Addon = new Addon(PluginId); // Settings accessor this.Settings = new KodiAddonSettings(this.Addon); //this.Monitor = new XbmcMonitor(); //string addonName = BaseUrl.Replace("plugin://", "").Replace("/", ""); }
public KodiAddon(bool persist = false, bool debug = false) { DebugEnabled = debug; IsPersistent = persist; try { PyVariableManager = new PyVariableManager(); // Parse parameters this.BaseUrl = PythonInterop.EvalToResult("sys.argv[0]").Value; this.IsService = PythonInterop.EvalToResult("len(sys.argv) < 2").Value; this.Router = new RouteManager(this); } catch (Exception ex) { KodiBridge.SaveException(ex); } }
/// <summary> /// Creates a new addon instance. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="enableDebug">Enables or disabled the debugging console (works on windows only)</param> /// <param name="persist">Whether or not to reuse a previous addon instance</param> /// <returns></returns> public static T GetInstance <T>(bool enableDebug = false, bool persist = false) where T : KodiAddon { if (enableDebug) { ConsoleHelper.CreateConsole(); } string BaseUrl = PythonInterop.EvalToResult("sys.argv[0]").Value; T instance = null; if (persist) { T previousInstance = (T)KodiBridge.GetPersistentAddon(BaseUrl); if (previousInstance != null) { Console.WriteLine("REUSING PREVIOUS INSTANCE"); instance = previousInstance; } } if (instance == null) { instance = (T)Activator.CreateInstance(typeof(T)); if (persist) { KodiBridge.RegisterPersistentAddon(BaseUrl, instance); } } instance.DebugEnabled = enableDebug; instance.IsPersistent = persist; // Set running addon KodiBridge.SetRunningAddon(instance); // Initialize addon fields. // If the addon is persistent, it updates fields that might have changed instance.Initialize(); return(instance); }
public KodiAddon() { try { #if DEBUG ConsoleHelper.CreateConsole(); #endif // Clean the variables list from the previous run (we're in a new python instance so they don't exist anymore) Python.PyVariableManager.Initialize(); // Parse parameters this.BaseUrl = PythonInterop.EvalToResult("sys.argv[0]").Value; this.IsService = PythonInterop.EvalToResult("len(sys.argv) < 2").Value; // Initialize the Event Monitor //Modules.Xbmc.Events.Initialize(); // Set running addon KodiBridge.RunningAddon = this; // If we're being started as a service, don't run addon specific tasks if (this.IsService) { PyConsole.WriteLine(string.Format("Starting as Service: {0}", this.BaseUrl)); return; } this.Handle = int.Parse(PythonInterop.EvalToResult("sys.argv[1]").Value); this.Parameters = PythonInterop.EvalToResult("sys.argv[2]").Value; PyConsole.WriteLine(string.Format("BaseUrl: {0}, Handle: {1}, Parameters: {2}", this.BaseUrl, this.Handle, this.Parameters)); // Register routes for derived type RouteManager.RegisterRoutes(this.GetType()); } catch (Exception ex) { KodiBridge.SaveException(ex); } }