/// <summary> /// Loads the TV DB db /// </summary> private static void LoadTvDB() { string path = Get.FileSystemPaths.PathDatabases + OutputName.TvDb + Path.DirectorySeparatorChar; Directory.CreateDirectory(path); var files = FileHelper.GetFilesRecursive(path, "*.Series.gz"); TvDBFactory.TvDatabase.Clear(); foreach (var file in files) { string json = Gzip.Decompress(file); var series = JsonConvert.DeserializeObject(json, typeof(Series)) as Series; string title = FileNaming.RemoveIllegalChars(series.SeriesName); string poster = path + title + ".poster.jpg"; string fanart = path + title + ".fanart.jpg"; string banner = path + title + ".banner.jpg"; if (File.Exists(poster)) { series.SmallPoster = ImageHandler.LoadImage(poster); } if (File.Exists(fanart)) { series.SmallFanart = ImageHandler.LoadImage(fanart); } if (File.Exists(banner)) { series.SmallBanner = ImageHandler.LoadImage(banner); } TvDBFactory.TvDatabase.Add(series.SeriesName, series); } TvDBFactory.GeneratePictureGallery(); TvDBFactory.GenerateMasterSeriesList(); }
/// <summary> /// Loads the TV DB db /// </summary> private static void LoadTvDB() { string path = Get.FileSystemPaths.PathDatabases + OutputName.TvDb + Path.DirectorySeparatorChar; Directory.CreateDirectory(path); List <string> files = FileHelper.GetFilesRecursive(path, "*.Series.gz"); TvDBFactory.TvDatabase.Clear(); var hidden = path + "hidden.hiddenSeries.gz"; if (File.Exists(hidden)) { var json = Gzip.Decompress(hidden); TvDBFactory.HiddenTvDatabase = JsonConvert.DeserializeObject(json, typeof(BindingList <Series>)) as BindingList <Series>; } var parallelOptions = new ParallelOptions { MaxDegreeOfParallelism = 6 }; Parallel.ForEach( files, parallelOptions, file => { var json = Gzip.Decompress(file); var series = JsonConvert.DeserializeObject(json, typeof(Series)) as Series; string title = FileNaming.RemoveIllegalChars(series.SeriesName); string poster = path + title + ".poster.jpg"; string fanart = path + title + ".fanart.jpg"; string banner = path + title + ".banner.jpg"; if (File.Exists(poster)) { series.SmallPoster = ImageHandler.LoadImage(poster); } if (File.Exists(fanart)) { series.SmallFanart = ImageHandler.LoadImage(fanart); } if (File.Exists(banner)) { series.SmallBanner = ImageHandler.LoadImage(banner); } foreach (var season in series.Seasons) { for (int index = 0; index < season.Value.Episodes.Count; index++) { var episode = season.Value.Episodes[index]; if (episode.FilePath.PathAndFilename != string.Empty && !File.Exists(episode.FilePath.PathAndFilename)) { Log.WriteToLog( LogSeverity.Info, LoggerName.GeneralLog, "Internal > DatabaseIOFactory > LoadTvDB", string.Format( "Deleting {0}. Episode not found on the filesystem", episode.FilePath.PathAndFilename)); // We should check for network path and make sure the file has actually been deleted or removed File.Delete(file); series.Seasons[season.Key].Episodes.Remove(episode); } } } lock (TvDBFactory.TvDatabase) { TvDBFactory.TvDatabase.Add(series.SeriesName, series); } }); TvDBFactory.GeneratePictureGallery(); TvDBFactory.GenerateMasterSeriesList(); }