/// <summary> /// Refresh metadata on this item, will return true if the metadata changed /// </summary> /// <param name="fastOnly">Only use fast providers (excluse internet based and slow providers)</param> /// <param name="force">Force a metadata refresh</param> /// <returns>True if the metadata changed</returns> public virtual bool RefreshMetadata(MetadataRefreshOptions options) { if ((options & MetadataRefreshOptions.Force) == MetadataRefreshOptions.Force) { var images = new List <LibraryImage>(); images.Add(PrimaryImage); images.Add(SecondaryImage); images.Add(BannerImage); images.AddRange(BackdropImages); foreach (var image in images) { try { if (image != null) { image.ClearLocalImages(); LibraryImageFactory.Instance.ClearCache(image.Path); } } catch (Exception ex) { Logger.ReportException("Failed to clear local image (its probably in use)", ex); } } } bool changed = MetadataProviderHelper.UpdateMetadata(this, options); if (changed) { OnMetadataChanged(null); } return(changed); }
/// <summary> /// Refresh metadata on this item, will return true if the metadata changed /// </summary> /// <param name="fastOnly">Only use fast providers (excluse internet based and slow providers)</param> /// <param name="force">Force a metadata refresh</param> /// <returns>True if the metadata changed</returns> public virtual bool RefreshMetadata(MetadataRefreshOptions options) { if (!Kernel.isVista) { Kernel.Instance.MajorActivity = true; //this borks the UI on vista } if ((options & MetadataRefreshOptions.Force) == MetadataRefreshOptions.Force) { var images = new List <LibraryImage>(); images.Add(PrimaryImage); images.Add(SecondaryImage); images.Add(BannerImage); images.Add(LogoImage); images.Add(ArtImage); images.Add(ThumbnailImage); images.Add(DiscImage); images.AddRange(BackdropImages); foreach (var image in images) { try { if (image != null) { image.ClearLocalImages(); LibraryImageFactory.Instance.ClearCache(image.Path); } } catch (Exception ex) { Logger.ReportException("Failed to clear local image (its probably in use)", ex); } } //if we're forcing via UI - clear out our meta file too and force a download if (this.Path != null) { string metaFile = System.IO.Path.Combine(this.Path, MovieDbProvider.LOCAL_META_FILE_NAME); if (System.IO.File.Exists(metaFile)) { try { System.IO.File.Delete(metaFile); } catch { } } } } bool changed = MetadataProviderHelper.UpdateMetadata(this, options); if (changed) { OnMetadataChanged(null); } if (!Kernel.isVista) { Kernel.Instance.MajorActivity = false; } return(changed); }
static Kernel GetDefaultKernel(ConfigData config, KernelLoadDirective loadDirective) { var kernel = new Kernel() { PlaybackControllers = new List <IPlaybackController>(), MetadataProviderFactories = MetadataProviderHelper.DefaultProviders(), ImageResolvers = DefaultImageResolvers, ConfigData = config, ItemRepository = new SafeItemRepository(new ItemRepository()), MediaLocationFactory = new MediaBrowser.Library.Factories.MediaLocationFactory() }; kernel.EntityResolver = DefaultResolver(kernel.ConfigData); // we need to enforce that the root folder is an aggregate folder var root = kernel.GetLocation(ResolveInitialFolder(kernel.ConfigData.InitialFolder)); kernel.RootFolder = (AggregateFolder)BaseItemFactory <AggregateFolder> .Instance.CreateInstance(root, null); kernel.Plugins = DefaultPlugins((loadDirective & KernelLoadDirective.ShadowPlugins) == KernelLoadDirective.ShadowPlugins); // initialize our plugins (maybe we should add a kernel.init ? ) // The ToList enables us to remove stuff from the list if there is a failure foreach (var plugin in kernel.Plugins.ToList()) { try { plugin.Init(kernel); } catch (Exception e) { Logger.ReportException("Failed to initialize Plugin : " + plugin.Name, e); kernel.Plugins.Remove(plugin); } } return(kernel); }
static Kernel GetDefaultKernel(ConfigData config, KernelLoadDirective loadDirective) { IItemRepository repository = GetRepository(config); var kernel = new Kernel() { PlaybackControllers = new List <IPlaybackController>(), MetadataProviderFactories = MetadataProviderHelper.DefaultProviders(), ConfigData = config, ServiceConfigData = ServiceConfigData.FromFile(ApplicationPaths.ServiceConfigFile), StringData = LocalizedStrings.Instance, ImageResolvers = DefaultImageResolvers(config.EnableProxyLikeCaching), ItemRepository = repository, MediaLocationFactory = new MediaBrowser.Library.Factories.MediaLocationFactory(), TrailerProviders = new List <ITrailerProvider>() { new LocalTrailerProvider() } }; //Kernel.UseNewSQLRepo = config.UseNewSQLRepo; // kernel.StringData.Save(); //save this in case we made mods (no other routine saves this data) if (LoadContext == MBLoadContext.Core) { kernel.PlaybackControllers.Add(new PlaybackController()); } // set up assembly resolution hooks, so earlier versions of the plugins resolve properly AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(OnAssemblyResolve); kernel.EntityResolver = DefaultResolver(kernel.ConfigData); // we need to enforce that the root folder is an aggregate folder var root = kernel.GetLocation(ResolveInitialFolder(kernel.ConfigData.InitialFolder)); kernel.RootFolder = (AggregateFolder)BaseItemFactory <AggregateFolder> .Instance.CreateInstance(root, null); // our root folder needs metadata kernel.RootFolder = kernel.ItemRepository.RetrieveItem(kernel.RootFolder.Id) as AggregateFolder ?? kernel.RootFolder; //create our default config panels with localized names kernel.AddConfigPanel(kernel.StringData.GetString("GeneralConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("MediaOptionsConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("ThemesConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("ParentalControlConfig"), ""); using (new Profiler("Plugin Loading and Init")) { kernel.Plugins = DefaultPlugins((loadDirective & KernelLoadDirective.ShadowPlugins) == KernelLoadDirective.ShadowPlugins); // initialize our plugins (maybe we should add a kernel.init ? ) // The ToList enables us to remove stuff from the list if there is a failure foreach (var plugin in kernel.Plugins.ToList()) { try { //Logger.ReportInfo("LoadContext is: " + LoadContext + " " + plugin.Name + " Initdirective is: " + plugin.InitDirective); if ((LoadContext & plugin.InitDirective) > 0) { plugin.Init(kernel); } } catch (Exception e) { Logger.ReportException("Failed to initialize Plugin : " + plugin.Name, e); kernel.Plugins.Remove(plugin); } } } return(kernel); }