public bool ExtractDetails(IShowDetailsBasic showDetailsBasic, bool strictSeason) { // Check if cache directory exists. if(!CacheDirectory.Exists) { CacheDirectory.Create(); } // Initalise cache if needed. if(!TVDB.IsCacheInitialised) { TVDB.InitCache(); } // Get details from the TVDB. List<TvdbSearchResult> searchResults; try { searchResults = TVDB.SearchSeries(showDetailsBasic.ShowName); } catch(Exception E) { Logger.Log("TVDB").StdOut.WriteLine("Unable to resolve {0} at the TVDB. {1}", showDetailsBasic.ShowName, E.Message); return false; } // If no details found then return false. if(searchResults.Count == 0) { Logger.Log("TVDB").StdOut.WriteLine("Unable to resolve {0} at the TVDB.", showDetailsBasic.ShowName); return false; } // Get details. var series = TVDB.GetSeries( searchResults[0].Id, TvdbLanguage.DefaultLanguage, true, false, true ); // Get episode details and banners. TvdbEpisode episode = null; TvdbBanner banner = null; if(showDetailsBasic.SeasonNumber == null) { // Get episode details. episode = series.GetEpisodesAbsoluteOrder().FindAll(E=>E.IsSpecial==false)[(int)showDetailsBasic.EpisodeNumber - 1]; // Poster banner. var posterBanner = series.PosterBanners.FirstOrDefault(); if(banner == null && posterBanner!=null) { posterBanner.LoadBanner(); banner = posterBanner; } } else { // Get episode details. episode = series.GetEpisodes(showDetailsBasic.SeasonNumber ?? 0).Find(anEpisode => anEpisode.EpisodeNumber == showDetailsBasic.EpisodeNumber); // Season banner; var seasonBanner = series.SeasonBanners.Where(B=>B.Season==showDetailsBasic.SeasonNumber).FirstOrDefault(); if(seasonBanner!=null) { seasonBanner.LoadBanner(); banner = seasonBanner; } } // Set details. ShowName = series.SeriesName; if(strictSeason) { SeasonNumber = episode.SeasonNumber; EpisodeNumber = episode.EpisodeNumber; } else { SeasonNumber = showDetailsBasic.SeasonNumber; EpisodeNumber = showDetailsBasic.EpisodeNumber; } EpisodeName = episode.EpisodeName; AiredDate = episode.FirstAired; Overview = episode.Overview; TVNetwork = series.Network; Artworks = (banner==null)?null:new List<FileInfoBase> {GetBannerCacheFile(banner)}; HasDetails = true; return true; }
public bool ExtractDetails(bool doExhaustiveExtraction, bool strictSeason) { // 1) Try getting from file name. if(showDetailsRegex.HasDetails || showDetailsRegex.ExtractDetails(MediaFile.Name)) { showDetailsBasic = showDetailsRegex; } // 2) If DoExhaustiveExtraction set then try getting directly from file meta data. if(doExhaustiveExtraction && (showDetailsAtomic.HasDetails || showDetailsAtomic.ExtractDetails(MediaFile))) { showDetailsBasic = showDetailsAtomic; showDetailsAdditional = showDetailsAtomic; } // 3) If HasDetails and DoExhaustiveExtraction then try getting additional details from online. try { if(HasDetails && doExhaustiveExtraction && (showDetailsTVDB.HasDetails || showDetailsTVDB.ExtractDetails(showDetailsBasic, strictSeason))) { showDetailsBasic = showDetailsTVDB; showDetailsAdditional = showDetailsTVDB; } } catch { } return HasDetails; }