private bool SearchTheTvDBMenu(AnimeSeriesVM ser, string previousMenu) { //string searchCriteria = ""; int aniDBID = ser.AniDB_Anime.AnimeID; GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return true; //keep showing the dialog until the user closes it int selectedLabel = 0; string currentMenu = "Search The TvDB"; while (true) { dlg.Reset(); dlg.SetHeading(currentMenu); if (previousMenu != string.Empty) dlg.Add("<<< " + previousMenu); dlg.Add("Search using: " + ser.AniDB_Anime.FormattedTitle); dlg.Add("Manual Search"); List<CrossRef_AniDB_TvDBVMV2> CrossRef_AniDB_TvDBResult = new List<CrossRef_AniDB_TvDBVMV2>(); List<JMMServerBinary.Contract_Azure_CrossRef_AniDB_TvDB> xrefs = JMMServerVM.Instance.clientBinaryHTTP.GetTVDBCrossRefWebCache(aniDBID); if (xrefs != null && xrefs.Count > 0) { string xrefSummary = string.Empty; foreach (JMMServerBinary.Contract_Azure_CrossRef_AniDB_TvDB xref in xrefs) { CrossRef_AniDB_TvDBVMV2 xrefAzure = new CrossRef_AniDB_TvDBVMV2(xref); CrossRef_AniDB_TvDBResult.Add(xrefAzure); xrefSummary += Environment.NewLine; xrefSummary += string.Format("AniDB {0}:{1} -- TvDB {2}: {3}:{4}", xref.AniDBStartEpisodeType, xref.AniDBStartEpisodeNumber, xref.TvDBTitle, xref.TvDBSeasonNumber, xref.TvDBStartEpisodeNumber); } dlg.Add("Community Says: " + xrefSummary); } dlg.SelectedLabel = selectedLabel; dlg.DoModal(GUIWindowManager.ActiveWindow); selectedLabel = dlg.SelectedLabel; int selection = selectedLabel + ((previousMenu == string.Empty) ? 1 : 0); switch (selection) { case 0: //show previous return true; case 1: if (!SearchTheTvDB(ser, ser.AniDB_Anime.FormattedTitle, currentMenu)) return false; break; case 2: { if (Utils.DialogText(ref searchText, GetID)) { if (!SearchTheTvDB(ser, searchText, currentMenu)) return false; } } break; case 3: string res = JMMServerVM.Instance.clientBinaryHTTP.RemoveLinkAniDBTvDBForAnime(aniDBID); if (res.Length > 0) { Utils.DialogMsg("Error", res); return false; } foreach (CrossRef_AniDB_TvDBVMV2 xref in CrossRef_AniDB_TvDBResult) { LinkAniDBToTVDB(ser, xref.AnimeID, (enEpisodeType)xref.AniDBStartEpisodeType, xref.AniDBStartEpisodeNumber, xref.TvDBID, xref.TvDBSeasonNumber, xref.TvDBStartEpisodeNumber); } return false; default: //close menu return false; } } }
public void Populate(JMMServerBinary.Contract_AniDB_AnimeCrossRefs details) { AnimeID = details.AnimeID; AniDB_AnimeVM anime = JMMServerHelper.GetAnime(AnimeID); if (anime == null) { return; } // Trakt if (details.CrossRef_AniDB_Trakt != null) { CrossRef_AniDB_Trakt = new CrossRef_AniDB_TraktVM(details.CrossRef_AniDB_Trakt); } if (details.TraktShow != null) { TraktShow = new Trakt_ShowVM(details.TraktShow); } if (details.TraktImageFanart != null) { TraktImageFanart = new Trakt_ImageFanartVM(details.TraktImageFanart); bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.Trakt_Fanart && anime.DefaultFanart.ImageParentID == TraktImageFanart.Trakt_ImageFanartID) { isDefault = true; } TraktImageFanart.IsImageDefault = isDefault; AllFanarts.Add(new FanartContainer(ImageEntityType.Trakt_Fanart, TraktImageFanart)); } if (details.TraktImagePoster != null) { TraktImagePoster = new Trakt_ImagePosterVM(details.TraktImagePoster); bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.Trakt_Poster && anime.DefaultPoster.ImageParentID == TraktImagePoster.Trakt_ImagePosterID) { isDefault = true; } TraktImagePoster.IsImageDefault = isDefault; AllPosters.Add(new PosterContainer(ImageEntityType.Trakt_Poster, TraktImagePoster)); } if (CrossRef_AniDB_Trakt == null || TraktShow == null) { TraktCrossRefExists = false; } else { TraktCrossRefExists = true; } // TvDB if (details.CrossRef_AniDB_TvDB != null) { CrossRef_AniDB_TvDB = new List <CrossRef_AniDB_TvDBVMV2>(); foreach (JMMServerBinary.Contract_CrossRef_AniDB_TvDBV2 contract in details.CrossRef_AniDB_TvDB) { CrossRef_AniDB_TvDBVMV2 xref = new CrossRef_AniDB_TvDBVMV2(contract); CrossRef_AniDB_TvDB.Add(xref); } } if (details.TvDBSeries != null) { TvDBSeries = new List <TvDB_SeriesVM>(); foreach (JMMServerBinary.Contract_TvDB_Series contract in details.TvDBSeries) { TvDB_SeriesVM tv = new TvDB_SeriesVM(contract); TvDBSeries.Add(tv); } } foreach (JMMServerBinary.Contract_TvDB_Episode contract in details.TvDBEpisodes) { TvDBEpisodes.Add(new TvDB_EpisodeVM(contract)); } foreach (JMMServerBinary.Contract_TvDB_ImageFanart contract in details.TvDBImageFanarts) { bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.TvDB_FanArt && anime.DefaultFanart.ImageParentID == contract.TvDB_ImageFanartID) { isDefault = true; } TvDB_ImageFanartVM tvFanart = new TvDB_ImageFanartVM(contract); tvFanart.IsImageDefault = isDefault; TvDBImageFanarts.Add(tvFanart); AllFanarts.Add(new FanartContainer(ImageEntityType.TvDB_FanArt, tvFanart)); } foreach (JMMServerBinary.Contract_TvDB_ImagePoster contract in details.TvDBImagePosters) { bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.TvDB_Cover && anime.DefaultPoster.ImageParentID == contract.TvDB_ImagePosterID) { isDefault = true; } TvDB_ImagePosterVM tvPoster = new TvDB_ImagePosterVM(contract); tvPoster.IsImageDefault = isDefault; TvDBImagePosters.Add(tvPoster); AllPosters.Add(new PosterContainer(ImageEntityType.TvDB_Cover, tvPoster)); } foreach (JMMServerBinary.Contract_TvDB_ImageWideBanner contract in details.TvDBImageWideBanners) { bool isDefault = false; if (anime != null && anime.DefaultWideBanner != null && anime.DefaultWideBanner.ImageParentType == (int)ImageEntityType.TvDB_Banner && anime.DefaultWideBanner.ImageParentID == contract.TvDB_ImageWideBannerID) { isDefault = true; } TvDB_ImageWideBannerVM tvBanner = new TvDB_ImageWideBannerVM(contract); tvBanner.IsImageDefault = isDefault; TvDBImageWideBanners.Add(tvBanner); } if ((CrossRef_AniDB_TvDB == null || CrossRef_AniDB_TvDB.Count == 0) || (TvDBSeries == null || TvDBSeries.Count == 0)) { TvDBCrossRefExists = false; } else { TvDBCrossRefExists = true; } // MovieDB if (details.CrossRef_AniDB_MovieDB != null) { CrossRef_AniDB_MovieDB = new CrossRef_AniDB_OtherVM(details.CrossRef_AniDB_MovieDB); } if (details.MovieDBMovie != null) { MovieDB_Movie = new MovieDB_MovieVM(details.MovieDBMovie); } foreach (JMMServerBinary.Contract_MovieDB_Fanart contract in details.MovieDBFanarts) { bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.MovieDB_FanArt && anime.DefaultFanart.ImageParentID == contract.MovieDB_FanartID) { isDefault = true; } MovieDB_FanartVM movieFanart = new MovieDB_FanartVM(contract); movieFanart.IsImageDefault = isDefault; MovieDBFanarts.Add(movieFanart); AllFanarts.Add(new FanartContainer(ImageEntityType.MovieDB_FanArt, movieFanart)); } foreach (JMMServerBinary.Contract_MovieDB_Poster contract in details.MovieDBPosters) { bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.MovieDB_Poster && anime.DefaultPoster.ImageParentID == contract.MovieDB_PosterID) { isDefault = true; } MovieDB_PosterVM moviePoster = new MovieDB_PosterVM(contract); moviePoster.IsImageDefault = isDefault; MovieDBPosters.Add(moviePoster); AllPosters.Add(new PosterContainer(ImageEntityType.MovieDB_Poster, moviePoster)); } if (CrossRef_AniDB_MovieDB == null || MovieDB_Movie == null) { MovieDBCrossRefExists = false; } else { MovieDBCrossRefExists = true; } }
private ContextMenuAction SearchTheTvDBMenu(AnimeSeriesVM ser, string previousMenu) { //string searchCriteria = ""; int aniDBID = ser.AniDB_Anime.AnimeID; ContextMenu cmenu = new ContextMenu(Translation.SearchTheTvDB, previousMenu); cmenu.Add(Translation.SearchUsing + ": " + ser.AniDB_Anime.FormattedTitle, () => SearchTheTvDB(ser, ser.AniDB_Anime.FormattedTitle, Translation.SearchTheTvDB)); cmenu.Add(Translation.ManualSearch, () => { if (Utils.DialogText(ref searchText, GetID)) return SearchTheTvDB(ser, searchText, Translation.SearchTheTvDB); return ContextMenuAction.Continue; }); List<CrossRef_AniDB_TvDBVMV2> CrossRef_AniDB_TvDBResult = new List<CrossRef_AniDB_TvDBVMV2>(); List<JMMServerBinary.Contract_Azure_CrossRef_AniDB_TvDB> xrefs = new List<Contract_Azure_CrossRef_AniDB_TvDB>(JMMServerVM.Instance.clientBinaryHTTP.GetTVDBCrossRefWebCache(aniDBID, false)); if (xrefs != null && xrefs.Count > 0) { string xrefSummary = string.Empty; foreach (JMMServerBinary.Contract_Azure_CrossRef_AniDB_TvDB xref in xrefs) { CrossRef_AniDB_TvDBVMV2 xrefAzure = new CrossRef_AniDB_TvDBVMV2(xref); CrossRef_AniDB_TvDBResult.Add(xrefAzure); xrefSummary += Environment.NewLine; xrefSummary += string.Format("AniDB {0}:{1} -- TvDB {2}: {3}:{4}", xref.AniDBStartEpisodeType, xref.AniDBStartEpisodeNumber, xref.TvDBTitle, xref.TvDBSeasonNumber, xref.TvDBStartEpisodeNumber); } cmenu.AddAction(Translation.CommunitySays + ": " + xrefSummary, () => { string res = JMMServerVM.Instance.clientBinaryHTTP.RemoveLinkAniDBTvDBForAnime(aniDBID); if (res.Length > 0) Utils.DialogMsg(Translation.Error, res); else { foreach (CrossRef_AniDB_TvDBVMV2 xref in CrossRef_AniDB_TvDBResult) { LinkAniDBToTVDB(ser, xref.AnimeID, (enEpisodeType)xref.AniDBStartEpisodeType, xref.AniDBStartEpisodeNumber, xref.TvDBID, xref.TvDBSeasonNumber, xref.TvDBStartEpisodeNumber); } } }); } return cmenu.Show(); }
public void Populate(JMMServerBinary.Contract_AniDB_AnimeCrossRefs details) { AnimeID = details.AnimeID; AniDB_AnimeVM anime = JMMServerHelper.GetAnime(AnimeID); if (anime == null) return; // Trakt if (details.CrossRef_AniDB_Trakt != null) CrossRef_AniDB_Trakt = new CrossRef_AniDB_TraktVM(details.CrossRef_AniDB_Trakt); if (details.TraktShow != null) TraktShow = new Trakt_ShowVM(details.TraktShow); if (details.TraktImageFanart != null) { TraktImageFanart = new Trakt_ImageFanartVM(details.TraktImageFanart); bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.Trakt_Fanart && anime.DefaultFanart.ImageParentID == TraktImageFanart.Trakt_ImageFanartID) { isDefault = true; } TraktImageFanart.IsImageDefault = isDefault; AllFanarts.Add(new FanartContainer(ImageEntityType.Trakt_Fanart, TraktImageFanart)); } if (details.TraktImagePoster != null) { TraktImagePoster = new Trakt_ImagePosterVM(details.TraktImagePoster); bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.Trakt_Poster && anime.DefaultPoster.ImageParentID == TraktImagePoster.Trakt_ImagePosterID) { isDefault = true; } TraktImagePoster.IsImageDefault = isDefault; AllPosters.Add(new PosterContainer(ImageEntityType.Trakt_Poster, TraktImagePoster)); } if (CrossRef_AniDB_Trakt == null || TraktShow == null) TraktCrossRefExists = false; else TraktCrossRefExists = true; // TvDB if (details.CrossRef_AniDB_TvDB != null) { CrossRef_AniDB_TvDB = new List<CrossRef_AniDB_TvDBVMV2>(); foreach (JMMServerBinary.Contract_CrossRef_AniDB_TvDBV2 contract in details.CrossRef_AniDB_TvDB) { CrossRef_AniDB_TvDBVMV2 xref = new CrossRef_AniDB_TvDBVMV2(contract); CrossRef_AniDB_TvDB.Add(xref); } } if (details.TvDBSeries != null) { TvDBSeries = new List<TvDB_SeriesVM>(); foreach (JMMServerBinary.Contract_TvDB_Series contract in details.TvDBSeries) { TvDB_SeriesVM tv = new TvDB_SeriesVM(contract); TvDBSeries.Add(tv); } } foreach (JMMServerBinary.Contract_TvDB_Episode contract in details.TvDBEpisodes) TvDBEpisodes.Add(new TvDB_EpisodeVM(contract)); foreach (JMMServerBinary.Contract_TvDB_ImageFanart contract in details.TvDBImageFanarts) { bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.TvDB_FanArt && anime.DefaultFanart.ImageParentID == contract.TvDB_ImageFanartID) { isDefault = true; } TvDB_ImageFanartVM tvFanart = new TvDB_ImageFanartVM(contract); tvFanart.IsImageDefault = isDefault; TvDBImageFanarts.Add(tvFanart); AllFanarts.Add(new FanartContainer(ImageEntityType.TvDB_FanArt, tvFanart)); } foreach (JMMServerBinary.Contract_TvDB_ImagePoster contract in details.TvDBImagePosters) { bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.TvDB_Cover && anime.DefaultPoster.ImageParentID == contract.TvDB_ImagePosterID) { isDefault = true; } TvDB_ImagePosterVM tvPoster = new TvDB_ImagePosterVM(contract); tvPoster.IsImageDefault = isDefault; TvDBImagePosters.Add(tvPoster); AllPosters.Add(new PosterContainer(ImageEntityType.TvDB_Cover, tvPoster)); } foreach (JMMServerBinary.Contract_TvDB_ImageWideBanner contract in details.TvDBImageWideBanners) { bool isDefault = false; if (anime != null && anime.DefaultWideBanner != null && anime.DefaultWideBanner.ImageParentType == (int)ImageEntityType.TvDB_Banner && anime.DefaultWideBanner.ImageParentID == contract.TvDB_ImageWideBannerID) { isDefault = true; } TvDB_ImageWideBannerVM tvBanner = new TvDB_ImageWideBannerVM(contract); tvBanner.IsImageDefault = isDefault; TvDBImageWideBanners.Add(tvBanner); } if ((CrossRef_AniDB_TvDB == null || CrossRef_AniDB_TvDB.Count ==0) || (TvDBSeries == null || TvDBSeries.Count == 0)) TvDBCrossRefExists = false; else TvDBCrossRefExists = true; // MovieDB if (details.CrossRef_AniDB_MovieDB != null) CrossRef_AniDB_MovieDB = new CrossRef_AniDB_OtherVM(details.CrossRef_AniDB_MovieDB); if (details.MovieDBMovie != null) MovieDB_Movie = new MovieDB_MovieVM(details.MovieDBMovie); foreach (JMMServerBinary.Contract_MovieDB_Fanart contract in details.MovieDBFanarts) { bool isDefault = false; if (anime != null && anime.DefaultFanart != null && anime.DefaultFanart.ImageParentType == (int)ImageEntityType.MovieDB_FanArt && anime.DefaultFanart.ImageParentID == contract.MovieDB_FanartID) { isDefault = true; } MovieDB_FanartVM movieFanart = new MovieDB_FanartVM(contract); movieFanart.IsImageDefault = isDefault; MovieDBFanarts.Add(movieFanart); AllFanarts.Add(new FanartContainer(ImageEntityType.MovieDB_FanArt, movieFanart)); } foreach (JMMServerBinary.Contract_MovieDB_Poster contract in details.MovieDBPosters) { bool isDefault = false; if (anime != null && anime.DefaultPoster != null && anime.DefaultPoster.ImageParentType == (int)ImageEntityType.MovieDB_Poster && anime.DefaultPoster.ImageParentID == contract.MovieDB_PosterID) { isDefault = true; } MovieDB_PosterVM moviePoster = new MovieDB_PosterVM(contract); moviePoster.IsImageDefault = isDefault; MovieDBPosters.Add(moviePoster); AllPosters.Add(new PosterContainer(ImageEntityType.MovieDB_Poster, moviePoster)); } if (CrossRef_AniDB_MovieDB == null || MovieDB_Movie == null) MovieDBCrossRefExists = false; else MovieDBCrossRefExists = true; }
public void SetTvDBInfo(TvDBSummary tvSummary) { this.EpisodeOverview = "Episode Overview Not Available"; this.EpisodeImageLocation = ""; #region episode override // check if this episode has a direct tvdb over-ride if (tvSummary.DictTvDBCrossRefEpisodes.ContainsKey(AniDB_EpisodeID)) { foreach (TvDB_EpisodeVM tvep in tvSummary.DictTvDBEpisodes.Values) { if (tvSummary.DictTvDBCrossRefEpisodes[AniDB_EpisodeID] == tvep.Id) { if (string.IsNullOrEmpty(tvep.Overview)) { this.EpisodeOverview = "Episode Overview Not Available"; } else { this.EpisodeOverview = tvep.Overview; } if (string.IsNullOrEmpty(tvep.FullImagePath) || !File.Exists(tvep.FullImagePath)) { if (string.IsNullOrEmpty(tvep.OnlineImagePath)) { this.EpisodeImageLocation = @"/Images/EpisodeThumb_NotFound.png"; } else { this.EpisodeImageLocation = tvep.OnlineImagePath; } } else { this.EpisodeImageLocation = tvep.FullImagePath; } if (JMMServerVM.Instance.EpisodeTitleSource == DataSourceType.TheTvDB && !string.IsNullOrEmpty(tvep.EpisodeName)) { EpisodeName = tvep.EpisodeName; } return; } } } #endregion #region normal episodes // now do stuff to improve performance if (this.EpisodeTypeEnum == enEpisodeType.Episode) { if (tvSummary != null && tvSummary.CrossRefTvDBV2 != null && tvSummary.CrossRefTvDBV2.Count > 0) { // find the xref that is right // relies on the xref's being sorted by season number and then episode number (desc) List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>(); sortCriteria.Add(new SortPropOrFieldAndDirection("AniDBStartEpisodeNumber", true, SortType.eInteger)); List <CrossRef_AniDB_TvDBVMV2> tvDBCrossRef = Sorting.MultiSort <CrossRef_AniDB_TvDBVMV2>(tvSummary.CrossRefTvDBV2, sortCriteria); bool foundStartingPoint = false; CrossRef_AniDB_TvDBVMV2 xrefBase = null; foreach (CrossRef_AniDB_TvDBVMV2 xrefTV in tvDBCrossRef) { if (xrefTV.AniDBStartEpisodeType != (int)enEpisodeType.Episode) { continue; } if (this.EpisodeNumber >= xrefTV.AniDBStartEpisodeNumber) { foundStartingPoint = true; xrefBase = xrefTV; break; } } // we have found the starting epiosde numbder from AniDB // now let's check that the TvDB Season and Episode Number exist if (foundStartingPoint) { Dictionary <int, int> dictTvDBSeasons = null; Dictionary <int, TvDB_EpisodeVM> dictTvDBEpisodes = null; foreach (TvDBDetails det in tvSummary.TvDetails.Values) { if (det.TvDBID == xrefBase.TvDBID) { dictTvDBSeasons = det.DictTvDBSeasons; dictTvDBEpisodes = det.DictTvDBEpisodes; break; } } if (dictTvDBSeasons.ContainsKey(xrefBase.TvDBSeasonNumber)) { int episodeNumber = dictTvDBSeasons[xrefBase.TvDBSeasonNumber] + (this.EpisodeNumber + xrefBase.TvDBStartEpisodeNumber - 2) - (xrefBase.AniDBStartEpisodeNumber - 1); if (dictTvDBEpisodes.ContainsKey(episodeNumber)) { TvDB_EpisodeVM tvep = dictTvDBEpisodes[episodeNumber]; if (string.IsNullOrEmpty(tvep.Overview)) { this.EpisodeOverview = "Episode Overview Not Available"; } else { this.EpisodeOverview = tvep.Overview; } if (string.IsNullOrEmpty(tvep.FullImagePath) || !File.Exists(tvep.FullImagePath)) { if (string.IsNullOrEmpty(tvep.OnlineImagePath)) { this.EpisodeImageLocation = @"/Images/EpisodeThumb_NotFound.png"; } else { this.EpisodeImageLocation = tvep.OnlineImagePath; } } else { this.EpisodeImageLocation = tvep.FullImagePath; } if (JMMServerVM.Instance.EpisodeTitleSource == DataSourceType.TheTvDB && !string.IsNullOrEmpty(tvep.EpisodeName)) { EpisodeName = tvep.EpisodeName; } } } } } } #endregion #region special episodes if (this.EpisodeTypeEnum == enEpisodeType.Special) { // find the xref that is right // relies on the xref's being sorted by season number and then episode number (desc) List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>(); sortCriteria.Add(new SortPropOrFieldAndDirection("AniDBStartEpisodeNumber", true, SortType.eInteger)); List <CrossRef_AniDB_TvDBVMV2> tvDBCrossRef = Sorting.MultiSort <CrossRef_AniDB_TvDBVMV2>(tvSummary.CrossRefTvDBV2, sortCriteria); bool foundStartingPoint = false; CrossRef_AniDB_TvDBVMV2 xrefBase = null; foreach (CrossRef_AniDB_TvDBVMV2 xrefTV in tvDBCrossRef) { if (xrefTV.AniDBStartEpisodeType != (int)enEpisodeType.Special) { continue; } if (this.EpisodeNumber >= xrefTV.AniDBStartEpisodeNumber) { foundStartingPoint = true; xrefBase = xrefTV; break; } } if (tvSummary != null && tvSummary.CrossRefTvDBV2 != null && tvSummary.CrossRefTvDBV2.Count > 0) { // we have found the starting epiosde numbder from AniDB // now let's check that the TvDB Season and Episode Number exist if (foundStartingPoint) { Dictionary <int, int> dictTvDBSeasons = null; Dictionary <int, TvDB_EpisodeVM> dictTvDBEpisodes = null; foreach (TvDBDetails det in tvSummary.TvDetails.Values) { if (det.TvDBID == xrefBase.TvDBID) { dictTvDBSeasons = det.DictTvDBSeasons; dictTvDBEpisodes = det.DictTvDBEpisodes; break; } } if (dictTvDBSeasons.ContainsKey(xrefBase.TvDBSeasonNumber)) { int episodeNumber = dictTvDBSeasons[xrefBase.TvDBSeasonNumber] + (this.EpisodeNumber + xrefBase.TvDBStartEpisodeNumber - 2) - (xrefBase.AniDBStartEpisodeNumber - 1); if (dictTvDBEpisodes.ContainsKey(episodeNumber)) { TvDB_EpisodeVM tvep = dictTvDBEpisodes[episodeNumber]; this.EpisodeOverview = tvep.Overview; if (string.IsNullOrEmpty(tvep.FullImagePath) || !File.Exists(tvep.FullImagePath)) { if (string.IsNullOrEmpty(tvep.OnlineImagePath)) { this.EpisodeImageLocation = @"/Images/EpisodeThumb_NotFound.png"; } else { this.EpisodeImageLocation = tvep.OnlineImagePath; } } else { this.EpisodeImageLocation = tvep.FullImagePath; } if (JMMServerVM.Instance.EpisodeTitleSource == DataSourceType.TheTvDB && !string.IsNullOrEmpty(tvep.EpisodeName)) { EpisodeName = tvep.EpisodeName; } } } } } } #endregion }