public void ReLoadRoot() { //and re-load the repo MB3ApiRepository = new MB3ApiRepository(); // our root folder needs metadata kernel.RootFolder = kernel.MB3ApiRepository.RetrieveRoot(); //clear image factory cache to free memory LibraryImageFactory.Instance.ClearCache(); if (kernel.RootFolder != null) { if (ConfigData.ShowFavoritesCollection) { //Create Favorites FavoritesFolder = new FavoritesCollectionFolder { Id = FavoriteFolderGuid, DisplayMediaType = "FavoritesFolder" }; FavoritesFolder.AddChildren(new List <BaseItem> { new FavoritesTypeFolder(new string[] { "Movie", "Video", "BoxSet", "AdultVideo" }, "Movies"), new FavoritesTypeFolder(new[] { "Series", "Season", "Episode" }, "TV"), new FavoritesTypeFolder(new[] { "Audio", "MusicAlbum", "MusicArtist", "MusicVideo" }, "Music"), new FavoritesTypeFolder(new[] { "Game", "GameConsole" }, "Games"), new FavoritesTypeFolder(new[] { "Book" }, "Books") }); kernel.RootFolder.AddVirtualChild(FavoritesFolder); } if (ConfigData.ShowMovieGenreCollection) { //Create Genre collection MovieGenreFolder = new ApiGenreCollectionFolder { Id = MovieGenreFolderGuid, Name = ConfigData.MovieGenreFolderName, DisplayMediaType = "MovieGenres", IncludeItemTypes = new[] { "Movie", "BoxSet" }, GenreType = GenreType.Movie }; kernel.RootFolder.AddVirtualChild(MovieGenreFolder); } if (ConfigData.ShowMusicGenreCollection) { //Create Music Genre collection MusicGenreFolder = new ApiGenreCollectionFolder { Id = MusicGenreFolderGuid, Name = ConfigData.MusicGenreFolderName, DisplayMediaType = "MusicGenres", IncludeItemTypes = ConfigData.GroupAlbumsByArtist ? new[] { "MusicArtist" } : new[] { "MusicAlbum" }, RalIncludeTypes = new[] { "Audio" }, GenreType = GenreType.Music }; kernel.RootFolder.AddVirtualChild(MusicGenreFolder); } if (ConfigData.ShowMusicAlbumCollection) { //Create Music Album collection MusicAlbumFolder = new ApiAlbumCollectionFolder { Id = MusicAlbumFolderGuid, Name = ConfigData.MusicAlbumFolderName, DisplayMediaType = "MusicAlbums", IncludeItemTypes = new[] { "MusicAlbum" }, RalIncludeTypes = new[] { "Audio" } }; kernel.RootFolder.AddVirtualChild(MusicAlbumFolder); } } }
static Kernel GetDefaultKernel(CommonConfigData config, KernelLoadDirective loadDirective) { var repository = new MB3ApiRepository(); var localRepo = GetLocalRepository(); var kernel = new Kernel() { PlaybackControllers = new List <BasePlaybackController>(), //MetadataProviderFactories = MetadataProviderHelper.DefaultProviders(), CommonConfigData = config, //ServiceConfigData = ServiceConfigData.FromFile(ApplicationPaths.ServiceConfigFile), StringData = LocalizedStrings.Instance, ImageResolvers = DefaultImageResolvers(false), MB3ApiRepository = repository, LocalRepo = localRepo, MediaLocationFactory = new MediaLocationFactory(), }; //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()); } //kernel.EntityResolver = DefaultResolver(kernel.ConfigData); //need a blank root in case plug-ins will add virtual items kernel.RootFolder = new AggregateFolder { Name = "My Media", Id = new Guid("{F6109BAE-CA26-4746-9EBC-1CD233A7B56F}") }; //create our default config panels with localized names kernel.AddConfigPanel(kernel.StringData.GetString("GeneralConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("ViewOptionsConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("ThemesConfig"), ""); kernel.AddConfigPanel(kernel.StringData.GetString("PlaybackConfig"), ""); //kick off log clean up task if needed if (config.LastFileCleanup < DateTime.UtcNow.AddDays(-7)) { Async.Queue(Async.ThreadPoolName.LogfileCleanup, () => { Logger.ReportInfo("Running Logfile clean-up..."); var minDateModified = DateTime.UtcNow.AddDays(-(config.LogFileRetentionDays)); foreach (var source in new DirectoryInfo(ApplicationPaths.AppLogPath).GetFileSystemInfos("*.log") .Where(f => f.LastWriteTimeUtc < minDateModified)) { try { source.Delete(); } catch (Exception e) { Logger.ReportException("Error deleting log file {0}", e, source.Name); } } config.LastFileCleanup = DateTime.UtcNow; config.Save(); }); Async.Queue(Async.ThreadPoolName.ImageCacheCleanup, () => ImageCache.Instance.Clean(DateTime.UtcNow.AddDays(-(Instance.CommonConfigData.CacheFileRetentionDays)))); } return(kernel); }
public void RegisterType(string serverTypeName, Type type) { MB3ApiRepository.AddRegisteredType(serverTypeName, type); }