private Series Adapt(SeriesExtendedRecord theTvDbSeries)
        {
            Adapt(theTvDbSeries, out Series series);

            Adapt(theTvDbSeries, out SeriesImageUrls seriesMetadata);
            series.ImageUrls = seriesMetadata;

            return(series);
        }
        private Series Adapt(SearchResult searchResult, SeriesExtendedRecord theTvDbSeries)
        {
            Adapt(searchResult, out Series series);

            if (theTvDbSeries == null)
            {
                return(series);
            }

            Adapt(theTvDbSeries, out SeriesImageUrls seriesMetadata);
            series.ImageUrls = seriesMetadata;

            return(series);
        }
 private void Adapt(SeriesExtendedRecord input, out Series output)
 {
     output = new Series
     {
         Id          = input.Id?.ToString(),
         Name        = input.Name,
         ImdbId      = input.RemoteIds?.FirstOrDefault(x => x.Type == RemoteIdType.IMDB)?.Id,
         Description = input.Translations?.OverviewTranslations?.FirstOrDefault(x => x.Language == "eng")?.Overview,
         Year        = input.FirstAired.ToTvDbDate()?.Year,
         ReleaseDate = input.FirstAired.ToTvDbDate(),
         Genres      = input.Genres?.Select(x => x.Name)?.ToArray(),
         Networks    = input.Networks?.Select(x => x.Name)?.Concat(
             input.Companies?.Where(x => x.CompanyType.Id == CompanyType.Network).Select(x => x.Name)).Distinct(StringComparer.OrdinalIgnoreCase).ToArray(),
         Status = input.Status?.Name
     };
 }
        private Series Adapt(
            SeriesExtendedRecord theTvDbSeries,
            List <SeasonBaseRecord> theTvDbSeasons,
            Dictionary <long, List <EpisodeBaseRecord> > theTvDbEpisodes,
            Dictionary <long, Translation> overviews
            )
        {
            var series = Adapt(theTvDbSeries);

            foreach (var theTvDbSeason in theTvDbSeasons)
            {
                Season season = new Season
                {
                    Series       = series,
                    SeasonNumber = (int)theTvDbSeason.Number
                };

                if (theTvDbEpisodes.ContainsKey(theTvDbSeason.Number))
                {
                    var theTvDbEpisodesInSeason =
                        theTvDbEpisodes[theTvDbSeason.Number].OrderBy(x => x.Number).ToArray();
                    foreach (var theTvDbEpisode in theTvDbEpisodesInSeason)
                    {
                        Episode episode = new Episode
                        {
                            Series         = series,
                            Season         = season,
                            EpisodeNumber  = (int)theTvDbEpisode.Number,
                            Title          = theTvDbEpisode.Name,
                            AirDate        = theTvDbEpisode.Aired.ToTvDbDate(),
                            AdditionalData = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase)
                        };
                        JsonConvert.PopulateObject(JsonConvert.SerializeObject(theTvDbEpisode), episode.AdditionalData);
                        if (overviews.ContainsKey(theTvDbEpisode.Id))
                        {
                            episode.Description = overviews[theTvDbEpisode.Id].Overview;
                        }
                        season.Episodes.Add(episode);
                    }
                }

                series.Seasons.Add(season);
            }

            return(series);
        }
        private void Adapt(SeriesExtendedRecord theTvDbSeries, out SeriesImageUrls output)
        {
            output = new SeriesImageUrls();

            output.PosterImageUrls = theTvDbSeries.Artwork?
                                     .Where(x => x.Type == ArtworkType.Poster)
                                     .OrderByDescending(x => x.Score)
                                     .Take(MaxImageResults)
                                     .Select(x => x.Image)
                                     .ToArray();
            output.BackgroundImageUrls = theTvDbSeries.Artwork?
                                         .Where(x => x.Type == ArtworkType.Background)
                                         .OrderByDescending(x => x.Score)
                                         .Take(MaxImageResults)
                                         .Select(x => x.Image)
                                         .ToArray();
            output.BannerImageUrls = theTvDbSeries.Artwork?
                                     .Where(x => x.Type == ArtworkType.Banner)
                                     .OrderByDescending(x => x.Score)
                                     .Take(MaxImageResults)
                                     .Select(x => x.Image)
                                     .ToArray();
        }