using MediaBrowser.Common.Plugins; using MediaBrowser.Controller.ScheduledTasks; using MediaBrowser.Model.Plugins; using MediaBrowser.Plugins.Trailers.Configuration; using MediaBrowser.Plugins.Trailers.ScheduledTasks; using System; using System.ComponentModel.Composition; using System.IO; namespace MediaBrowser.Plugins.Trailers { /// /// Class Plugin /// [Export(typeof(IPlugin))] public class Plugin : BasePlugin { /// /// Gets the name of the plugin /// /// The name. public override string Name { get { return "Trailers"; } } /// /// Gets the description. /// /// The description. public override string Description { get { return "Movie trailers for your collection."; } } /// /// Gets the instance. /// /// The instance. public static Plugin Instance { get; private set; } /// /// Initializes a new instance of the class. /// public Plugin() : base() { Instance = this; } /// /// The _download path /// private string _downloadPath; /// /// Gets the path to the trailer download directory /// /// The download path. public string DownloadPath { get { if (_downloadPath == null) { // Use _downloadPath = Configuration.DownloadPath; if (string.IsNullOrWhiteSpace(_downloadPath)) { _downloadPath = Path.Combine(Controller.Kernel.Instance.ApplicationPaths.DataPath, Name); } if (!Directory.Exists(_downloadPath)) { Directory.CreateDirectory(_downloadPath); } } return _downloadPath; } } /// /// Starts the plugin on the server /// /// if set to true [is first run]. protected override void InitializeOnServer(bool isFirstRun) { base.InitializeOnServer(isFirstRun); if (isFirstRun) { Kernel.TaskManager.QueueScheduledTask(); } } /// /// Completely overwrites the current configuration with a new copy /// Returns true or false indicating success or failure /// /// The configuration. public override void UpdateConfiguration(BasePluginConfiguration configuration) { var config = (PluginConfiguration) configuration; var pathChanged = !string.Equals(Configuration.DownloadPath, config.DownloadPath, StringComparison.OrdinalIgnoreCase); base.UpdateConfiguration(configuration); if (pathChanged) { _downloadPath = null; Kernel.TaskManager.QueueScheduledTask(); } } } }