Exemplo n.º 1
0
        private TvShow Convert(JSONTvShow jsonTvShow)
        {
            if (jsonTvShow == null)
            {
                return(null);
            }

            return(new TvShow
            {
                TheTvDbId = jsonTvShow.id,
                Title = jsonTvShow.title,
                Quality = jsonTvShow.quality,
                PlexUrl = jsonTvShow.plexUrl,
                EmbyUrl = jsonTvShow.embyUrl,
                Overview = jsonTvShow.overview,
                Banner = jsonTvShow.banner,
                FirstAired = jsonTvShow.firstAired,
                Network = jsonTvShow.network,
                Status = jsonTvShow.status,
                HasEnded = !string.IsNullOrWhiteSpace(jsonTvShow.status) && jsonTvShow.status.Equals("ended", StringComparison.InvariantCultureIgnoreCase),
                Seasons = jsonTvShow.seasonRequests.Select(x => new NormalTvSeason
                {
                    SeasonNumber = x.seasonNumber,
                    IsAvailable = x.episodes.FirstOrDefault()?.available == true,
                    IsRequested = x.episodes.All(x => x.CanBeRequested()) ? RequestedState.None : x.episodes.All(x => !x.CanBeRequested()) ? RequestedState.Full : RequestedState.Partial,
                }).ToArray(),
                IsRequested = jsonTvShow.requested || jsonTvShow.available,
            });
        }
Exemplo n.º 2
0
        private TvShow Convert(JSONTvShow jsonTvShow, IReadOnlyList <JSONSeason> seasons, IDictionary <int, JSONEpisode[]> episodesToSeason)
        {
            var downloadClientId  = jsonTvShow.id?.ToString();
            var isTvShowMonitored = (string.IsNullOrWhiteSpace(downloadClientId) || SonarrSettings.MonitorNewRequests) ? jsonTvShow.monitored : true;

            var tvSeasons = seasons.Where(x => x.seasonNumber > 0).Select(x =>
            {
                var episodes   = episodesToSeason.ContainsKey(x.seasonNumber) ? episodesToSeason[x.seasonNumber] : Array.Empty <JSONEpisode>();
                var tvEpisodes = ConvertToTvEpisodes(x, episodes).OrderBy(x => x.EpisodeNumber).ToArray();

                if (tvEpisodes.Any())
                {
                    var allEpisodesDownloaded = isTvShowMonitored ? tvEpisodes.All(x => x.IsRequested || x.IsAvailable) : tvEpisodes.All(x => x.IsAvailable);
                    var partiallyDownloaded   = isTvShowMonitored ? tvEpisodes.Any(x => x.IsRequested || x.IsAvailable) : tvEpisodes.Any(x => x.IsAvailable);

                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = tvEpisodes.First().IsAvailable,
                        IsRequested = allEpisodesDownloaded ? RequestedState.Full : partiallyDownloaded ? RequestedState.Partial : RequestedState.None,
                    });
                }
                else if (jsonTvShow.ExistsInSonarr())
                {
                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = false,
                        IsRequested = isTvShowMonitored ? RequestedState.Full : RequestedState.None,
                    });
                }
                else
                {
                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = false,
                        IsRequested = RequestedState.None
                    });
                }
            }).ToArray();

            return(new TvShow
            {
                TheTvDbId = jsonTvShow.tvdbId.Value,
                DownloadClientId = downloadClientId,
                Title = jsonTvShow.title,
                Overview = jsonTvShow.overview,
                Quality = "",
                IsRequested = isTvShowMonitored,
                PlexUrl = "",
                EmbyUrl = "",
                Banner = GetPosterImageUrl(jsonTvShow.images),
                Seasons = tvSeasons.OrderBy(x => x.SeasonNumber).ToArray(),
                FirstAired = ((int)jsonTvShow.year).ToString(),
                HasEnded = ((string)jsonTvShow.status).Equals("ended", StringComparison.InvariantCultureIgnoreCase)
            });
        }
Exemplo n.º 3
0
        private TvShow Convert(JSONTvShow jsonTvShow, IReadOnlyList <JSONSeason> seasons, IDictionary <int, JSONEpisode[]> episodesToSeason)
        {
            var tvSeasons = seasons.Where(x => x.seasonNumber > 0).Select(x =>
            {
                var episodes   = episodesToSeason.ContainsKey(x.seasonNumber) ? episodesToSeason[x.seasonNumber] : Array.Empty <JSONEpisode>();
                var tvEpisodes = ConvertToTvEpisodes(x, episodes).OrderBy(x => x.EpisodeNumber).ToArray();

                if (tvEpisodes.Any())
                {
                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = tvEpisodes.First().IsAvailable,
                        IsRequested = jsonTvShow.monitored ? tvEpisodes.All(x => x.IsRequested || x.IsAvailable) : tvEpisodes.All(x => x.IsAvailable),
                    });
                }
                else if (jsonTvShow.ExistsInSonarr())
                {
                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = false,
                        IsRequested = jsonTvShow.monitored ? x.monitored : false,
                    });
                }
                else
                {
                    return(new NormalTvSeason
                    {
                        SeasonNumber = x.seasonNumber,
                        IsAvailable = false,
                        IsRequested = false
                    });
                }
            }).ToArray();

            return(new TvShow
            {
                TheTvDbId = jsonTvShow.tvdbId.Value,
                DownloadClientId = jsonTvShow.id?.ToString(),
                Title = jsonTvShow.title,
                Overview = jsonTvShow.overview,
                Quality = "",
                IsRequested = jsonTvShow.monitored,
                PlexUrl = "",
                EmbyUrl = "",
                Seasons = tvSeasons.OrderBy(x => x.SeasonNumber).ToArray(),
                Banner = jsonTvShow.images.Where(x => ((string)x.coverType).Equals("poster", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault()?.url ?? string.Empty,
                FirstAired = ((int)jsonTvShow.year).ToString(),
                HasEnded = ((string)jsonTvShow.status).Equals("ended", StringComparison.InvariantCultureIgnoreCase)
            });
        }