Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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;
                }
            }
        }