예제 #1
0
        public void UpdateShow(TvShow show)
        {
            var newSeries = series.GetSeriesAsync(show.TvdbId).GetAwaiter().GetResult();

            if (show.Banner != newSeries.Data.Banner)
            {
                show.Banner = newSeries.Data.Banner;
                var banner     = series.GetBannerAsnyc(newSeries.Data).Result;
                var targetPath = $"Images{Path.DirectorySeparatorChar}{show.TvdbId}.jpg";
                streamWriter.WriteStream(banner, targetPath);
            }

            var newEpisodes = series.GetAllEpisodesAsync(show.TvdbId)
                              .GetAwaiter()
                              .GetResult()
                              .Select(
                x => new Episode
            {
                TvdbId        = x.Id.ToString(),
                EpisodeNumber =
                    show.UseDvdOrder && x.DvdEpisodeNumber.HasValue
                                ? x.DvdEpisodeNumber.Value
                                : x.AiredEpisodeNumber.Value,
                SeasonNumber =
                    show.UseDvdOrder && x.DvdSeason.HasValue ? x.DvdSeason.Value : x.AiredSeason.Value,
                FirstAir = x.FirstAired.ValidateTime() ? DateTime.Parse(x.FirstAired) : DateTime.Parse("1970-01-01"),
                Name     = x.EpisodeName ?? string.Empty,
                Show     = show,
            })
                              .ToList();

            if (show.Episodes != null)
            {
                foreach (var episode in newEpisodes)
                {
                    var currentEpisode = show.Episodes.FirstOrDefault(x => x.Equals(episode));
                    if (currentEpisode != null)
                    {
                        episode.FileCount = currentEpisode.FileCount;
                    }
                }
            }

            show.Episodes    = newEpisodes;
            show.LastUpdated = DateTime.UtcNow;
        }