/// <inheritdoc/> public override void ReadImages(XmlNode xMLNode) { ImageFile image; // Image image = new ImageFile(this.Configuration); image.Media = this; image.Season = ((Episode)image.Media).actualSeason; image.Filename = image.Media.Filename; image.URL = xMLNode.XMLReadSubnode("largeimage").XMLReadInnerText(string.Empty); image.ConvertFilename(); image.ImageType = Configuration.ImageType.EpisodeCover; if (image.URL != string.Empty) { image.Media.Images.Add(image); } }
/// <summary> /// Reads images from XML-File /// </summary> /// <param name="xMLNode">Part of Collectors export, representing images of media</param> public virtual void ReadImages(XmlNode xMLNode) { ImageFile image; ImageFile imageFileClone = null; // Covers / Backdrops per Season List<List<int>> imagesPerSeason = new List<List<int>>(); List<List<ImageFile>> imageFilesPerSeason = new List<List<ImageFile>>(); // initialize ImagePerSeason-List with imageTypes for (int i = 0; i < this.Configuration.NumberOfImageTypes; i++) { imagesPerSeason.Add(new List<int>()); imagesPerSeason[i].Add(0); // allSeasons imagesPerSeason[i].Add(0); // Specials imagesPerSeason[i].Add(0); // Season 1 imageFilesPerSeason.Add(new List<ImageFile>()); imageFilesPerSeason[i].Add(null); // allSeasons imageFilesPerSeason[i].Add(null); // Specials imageFilesPerSeason[i].Add(null); // Season 1 } // Cover-Front-Image image = new ImageFile(this.Configuration); image.Media = this; image.Filename = "cover"; image.URL = xMLNode.XMLReadSubnode("coverfront").XMLReadInnerText(string.Empty); image.ConvertFilename(); image.ImageType = Configuration.ImageType.CoverFront; if (image.URL != string.Empty) { image.Media.Images.Add(image); imagesPerSeason[(int)Configuration.ImageType.CoverFront][0]++; imageFilesPerSeason[(int)Configuration.ImageType.CoverFront][0] /* Cover */ = image; } // Cover-Back-Image image = new ImageFile(this.Configuration); image.Media = this; image.Filename = "coverback"; image.URL = xMLNode.XMLReadSubnode("coverback").XMLReadInnerText(string.Empty); image.ConvertFilename(); image.ImageType = Configuration.ImageType.CoverBack; if (image.URL != string.Empty) { image.Media.Images.Add(image); imagesPerSeason[(int)Configuration.ImageType.CoverBack][0]++; imageFilesPerSeason[(int)Configuration.ImageType.CoverBack][0] /* Cover-Back */ = image; } // Poster-Image image = new ImageFile(this.Configuration); image.Media = this; image.Filename = "poster"; image.URL = xMLNode.XMLReadSubnode("poster").XMLReadInnerText(string.Empty); /* Estuary just displays poster instead of cover; so setting this as poster when empty */ if (image.URL == string.Empty) { image.URL = xMLNode.XMLReadSubnode("coverfront").XMLReadInnerText(string.Empty); } image.ConvertFilename(); image.ImageType = Configuration.ImageType.Poster; if (image.URL != string.Empty) { image.Media.Images.Add(image); imagesPerSeason[(int)Configuration.ImageType.Poster][0]++; imageFilesPerSeason[(int)Configuration.ImageType.Poster][0] /* Poster */ = image; } // Backdrop-Image image = new ImageFile(this.Configuration); image.Media = this; image.Filename = "fanart"; image.URL = xMLNode.XMLReadSubnode("backdropurl").XMLReadInnerText(string.Empty); image.ConvertFilename(); image.ImageType = Configuration.ImageType.Backdrop; if (image.URL != string.Empty) { image.Media.Images.Add(image); imagesPerSeason[(int)Configuration.ImageType.Backdrop][0]++; imageFilesPerSeason[(int)Configuration.ImageType.Backdrop][0] /* Backdrop */ = image; } // add images from Links section int numberOfExtraBackdrop = 0; int numberOfExtraCover = 0; foreach (XmlNode xMLImageFile in xMLNode.XMLReadSubnode("links").XMLReadSubnodes("link")) { if (xMLImageFile.XMLReadSubnode("urltype").XMLReadInnerText(string.Empty) == "Image") { ImageFile imageFile = new ImageFile(this.Configuration); imageFile.Media = this; imageFile.Description = imageFile.OverrideSeason(xMLImageFile.XMLReadSubnode("description").XMLReadInnerText(string.Empty)); // Fanart or Thumb ? if (imageFile.Description.Contains("ExtraBackdrop" /* Backdrops */) || (imageFile.Description.Contains("ExtraCover") && imageFile.Media.GetType().ToString().Contains("Series")) /* or Covers for TV-Shows as no Extrathumbs are supported */) { numberOfExtraBackdrop++; imageFile.ImageType = Configuration.ImageType.ExtraBackdrop; imageFile.Filename = "fanart" + ("0000" + numberOfExtraBackdrop.ToString()).Substring(numberOfExtraBackdrop.ToString().Length); } // Extra-Cover only for movies else if (imageFile.Description.Contains("ExtraCover") && !imageFile.Media.GetType().ToString().Contains("Series")) { numberOfExtraCover++; imageFile.ImageType = Configuration.ImageType.ExtraCover; imageFile.Filename = "thumb" + ("0000" + numberOfExtraCover.ToString()).Substring(numberOfExtraCover.ToString().Length); } else if (imageFile.Description.Contains("Backdrop")) { imageFile.ImageType = Configuration.ImageType.SeasonBackdrop; imageFile.Filename = "fanart"; } else if (imageFile.Description.Contains("Cover")) { imageFile.ImageType = Configuration.ImageType.SeasonCover; imageFile.Filename = "cover"; } else if (imageFile.Description.Contains("Poster")) { imageFile.ImageType = Configuration.ImageType.SeasonPoster; imageFile.Filename = "poster"; } if (imageFile.Season == "all") { imageFile.Season = "-1"; imageFile.Filename = imageFile.Filename + "_all"; } else if (imageFile.Season == "spe") { imageFile.Season = "0"; } imageFile.URL = xMLImageFile.XMLReadSubnode("url").XMLReadInnerText(string.Empty); imageFile.ConvertFilename(); if (imageFile.URL != string.Empty) { imageFile.Media.Images.Add(imageFile); } // adding image data to posterPerSeason-list string season = imageFile.Season; if (season == string.Empty) { season = "0"; } while (imagesPerSeason[(int)imageFile.ImageType].Count < int.Parse(season) + 2) { for (int i = 0; i < this.Configuration.NumberOfImageTypes; i++) { imagesPerSeason[i].Add(0); imageFilesPerSeason[i].Add(null); } } imagesPerSeason[(int)imageFile.ImageType][int.Parse(imageFile.Season) + 1]++; imageFilesPerSeason[(int)imageFile.ImageType][int.Parse(imageFile.Season) + 1] = imageFile; } } // for all Seasons (i) for (int i = 0; i < imagesPerSeason[(int)Configuration.ImageType.SeasonCover].Count; i++) { // add SeasonCover if missing if (imagesPerSeason[(int)Configuration.ImageType.SeasonCover][i] == 0 && imageFilesPerSeason[(int)Configuration.ImageType.CoverFront][0] /* Cover */ != null) { imageFileClone = (ImageFile)imageFilesPerSeason[(int)Configuration.ImageType.CoverFront][0].Clone() /* Cover */; imageFileClone.ImageType = Configuration.ImageType.SeasonCover; imageFileClone.Season = (i - 1).ToString(); this.Images.Add(imageFileClone); imagesPerSeason[(int)Configuration.ImageType.SeasonCover][i]++; imageFilesPerSeason[(int)Configuration.ImageType.SeasonCover][i] /* Season-Cover */ = imageFileClone; } // add SeasonPoster if missing if (imagesPerSeason[(int)Configuration.ImageType.SeasonPoster][i] == 0 && (imageFilesPerSeason[(int)Configuration.ImageType.Poster][0] /* Poster */ != null || imageFilesPerSeason[(int)Configuration.ImageType.SeasonCover][i] /* Season-Cover */ != null)) { // add Season-Cover first if (imageFilesPerSeason[(int)Configuration.ImageType.SeasonCover][i] != null) { imageFileClone = (ImageFile)imageFilesPerSeason[(int)Configuration.ImageType.SeasonCover][i].Clone(); } // or add series poster instead else if (imageFilesPerSeason[(int)Configuration.ImageType.Poster][0] /* Poster */ != null) { imageFileClone = (ImageFile)imageFilesPerSeason[(int)Configuration.ImageType.Poster][0].Clone() /* Poster */; } imageFileClone.ImageType = Configuration.ImageType.SeasonPoster; imageFileClone.Season = (i - 1).ToString(); this.Images.Add(imageFileClone); imagesPerSeason[(int)Configuration.ImageType.SeasonPoster][i]++; imageFilesPerSeason[(int)Configuration.ImageType.SeasonPoster][i] /* SeasonPoster */ = imageFileClone; } // add SeasonBackdrop if missing if (imagesPerSeason[(int)Configuration.ImageType.SeasonBackdrop][i] == 0 && imageFilesPerSeason[(int)Configuration.ImageType.Backdrop][0] /* Backdrop */ != null) { imageFileClone = (ImageFile)imageFilesPerSeason[(int)Configuration.ImageType.Backdrop][0].Clone() /* Backdrop */; imageFileClone.ImageType = Configuration.ImageType.SeasonBackdrop; imageFileClone.Season = (i - 1).ToString(); this.Images.Add(imageFileClone); imagesPerSeason[(int)Configuration.ImageType.SeasonBackdrop][i]++; imageFilesPerSeason[(int)Configuration.ImageType.SeasonBackdrop][i] /* SeasonBackdrop */ = imageFileClone; } } }