/// <summary> /// Checks and initialises all the components for the application. /// </summary> static bool Init() { bool ok; // Set the error level Logger.Level = Logger.LogLevel.Info; // Loads all settings Config = LoadConfig(); if (Config == null) return false; // Get port for the http server int httpPort = Config.Get("httpPort") ?? 80; // Get port for the websocket server int websocketPort = Config.Get("websocketPort") ?? 81; // Get the media detector polling interval int mediaPollingInterval = Config.Get("mediaPollingInterval") ?? 3000; // Load devices from config var devices = Config.Get("devices"); if (devices is IEnumerable<JToken>) Devices.Device.Parse(devices as IEnumerable); // Init the server var server = new Server.ToucheeServer(httpPort, websocketPort); // Build plugin context IPluginContext pluginContext = new ToucheePluginContext(server); // Loads all plugins if (!LoadPlugins(pluginContext)) return false; // Kickstart WinLirc client var wlc = Devices.WinLirc.Client; // Init the library var library = Library.Instance; library.Init(server, mediaPollingInterval); // Start server if (!server.Start()) { Shutdown("Could not start server"); return false; } // Show the form Logger.Log("Loading complete!", Logger.LogLevel.Info); var mainForm = new Forms.Main(); Application.Run(mainForm); // Done return true; }
/// <summary> /// Starts the plugin. /// </summary> /// <param name="config">The configuration object for this plugin</param> /// <param name="context">The context for this plugin</param> /// <returns>True if the plugin was successfully started</returns> public bool StartPlugin(Config config, IPluginContext context) { // Get folders dynamic foldersConfig = config.Get("folders"); IEnumerable<string> folders = foldersConfig is IList ? foldersConfig.Values<string>() : new string[0]; // Get extensions dynamic trackExtensionsConfig = config.Get("extensions.tracks"); TrackExtensions = trackExtensionsConfig is IList ? trackExtensionsConfig.Values<string>() : new string[0]; dynamic playlistExtensionsConfig = config.Get("extensions.tracks"); PlaylistExtensions = playlistExtensionsConfig is IList ? playlistExtensionsConfig.Values<string>() : new string[0]; Extensions = TrackExtensions.Concat(PlaylistExtensions).ToArray(); // Create the watcher and add folders to it Watcher = new MusicFileMediumWatcher(); foreach(var f in folders) Watcher.AddLocalFolder(f); PluginManager.Register(Watcher); // Add content provider ContentProvider = new MusicContentProvider(); PluginManager.Register(ContentProvider); // Add artwork provider ArtworkProvider = new MusicArtworkProvider(); PluginManager.Register(ArtworkProvider); return true; }