Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
 public void RegisterType(string serverTypeName, Type type)
 {
     MB3ApiRepository.AddRegisteredType(serverTypeName, type);
 }