Exemple #1
0
        public async Task <TvShowRequestBuilder> GetShowInfo(int id)
        {
            ShowInfo = await TvApi.ShowLookupByTheTvDbId(id);

            Results = await MovieDbApi.SearchTv(ShowInfo.name);

            foreach (TvSearchResult result in Results)
            {
                if (result.Name.Equals(ShowInfo.name, StringComparison.InvariantCultureIgnoreCase))
                {
                    TheMovieDbRecord = result;
                    var showIds = await MovieDbApi.GetTvExternals(result.Id);

                    ShowInfo.externals.imdb = showIds.imdb_id;
                    BackdropPath            = result.BackdropPath;
                    break;
                }
            }

            DateTime.TryParse(ShowInfo.premiered, out var dt);

            FirstAir = dt;

            // For some reason the poster path is always http
            PosterPath = ShowInfo.image?.medium.ToHttpsUrl();

            return(this);
        }
Exemple #2
0
        public async Task <TvShowRequestBuilder> GetShowInfo(int id)
        {
            ShowInfo = await TvApi.ShowLookupByTheTvDbId(id);

            Results = await MovieDbApi.SearchTv(ShowInfo.name);

            foreach (TvSearchResult result in Results)
            {
                if (result.Name == ShowInfo.name)
                {
                    var showIds = await MovieDbApi.GetTvExternals(result.Id);

                    ShowInfo.externals.imdb = showIds.imdb_id;
                    BackdropPath            = result.BackdropPath;
                    break;
                }
            }

            DateTime.TryParse(ShowInfo.premiered, out var dt);

            FirstAir = dt;

            // For some reason the poster path is always http
            PosterPath = ShowInfo.image?.medium.Replace("http:", "https:");

            return(this);
        }
        public MovieDbApiTest()
        {
            IConfigurationBuilder builder = new ConfigurationBuilder()
                                            .AddJsonFile("testAppSettings.json", true, true)
                                            .AddUserSecrets <MovieDbApiTest>();

            IConfiguration configuration = builder.Build();
            ILoggerFactory loggerFactory = new LoggerFactory();

            var logger = new Logger <IMovieDbApi>(loggerFactory);

            _api = new MovieDbApi(logger, configuration);
        }
Exemple #4
0
        public async Task <TvShowRequestBuilderV2> GetShowInfo(int id)
        {
            TheMovieDbRecord = await MovieDbApi.GetTVInfo(id.ToString());

            BackdropPath = TheMovieDbRecord.Images?.Backdrops?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;;

            DateTime.TryParse(TheMovieDbRecord.first_air_date, out var dt);

            FirstAir = dt;

            // For some reason the poster path is always http
            PosterPath = TheMovieDbRecord.Images?.Posters?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;

            return(this);
        }
        public async Task <TvShowRequestBuilderV2> GetShowInfo(int id, string langCode = "en")
        {
            TheMovieDbRecord = await MovieDbApi.GetTVInfo(id.ToString(), langCode);

            // Remove 'Specials Season'
            var firstSeason = TheMovieDbRecord.seasons.OrderBy(x => x.season_number).FirstOrDefault();

            if (firstSeason?.season_number == 0)
            {
                TheMovieDbRecord.seasons.Remove(firstSeason);
            }

            BackdropPath = TheMovieDbRecord.Images?.Backdrops?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;;

            DateTime.TryParse(TheMovieDbRecord.first_air_date, out var dt);

            FirstAir = dt;

            // For some reason the poster path is always http
            PosterPath = TheMovieDbRecord.Images?.Posters?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;

            return(this);
        }
Exemple #6
0
        public async Task <TvShowRequestBuilderV2> BuildEpisodes(TvRequestViewModelV2 tv)
        {
            var allEpisodes = new List <Episode>();

            foreach (var season in TheMovieDbRecord.seasons)
            {
                var seasonEpisodes = await MovieDbApi.GetSeasonEpisodes(TheMovieDbRecord.id, season.season_number, CancellationToken.None);

                allEpisodes.AddRange(seasonEpisodes.episodes);
            }

            if (tv.RequestAll)
            {
                foreach (var ep in allEpisodes)
                {
                    var season = ChildRequest.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == ep.season_number);
                    if (season == null)
                    {
                        ChildRequest.SeasonRequests.Add(new SeasonRequests
                        {
                            Episodes = new List <EpisodeRequests> {
                                new EpisodeRequests
                                {
                                    EpisodeNumber = ep.episode_number,
                                    AirDate       = FormatDate(ep.air_date),
                                    Title         = ep.name,
                                }
                            },
                            SeasonNumber = ep.season_number,
                        });
                    }
                    else
                    {
                        season.Episodes.Add(new EpisodeRequests
                        {
                            EpisodeNumber = ep.episode_number,
                            AirDate       = FormatDate(ep.air_date),
                            Title         = ep.name,
                        });
                    }
                }
            }
            else if (tv.LatestSeason)
            {
                var latest           = allEpisodes.OrderByDescending(x => x.season_number).FirstOrDefault();
                var episodesRequests = new List <EpisodeRequests>();
                foreach (var ep in allEpisodes)
                {
                    if (ep.season_number == latest.season_number)
                    {
                        episodesRequests.Add(new EpisodeRequests
                        {
                            EpisodeNumber = ep.episode_number,
                            AirDate       = FormatDate(ep.air_date),
                            Title         = ep.name,
                        });
                    }
                }
                ChildRequest.SeasonRequests.Add(new SeasonRequests
                {
                    Episodes     = episodesRequests,
                    SeasonNumber = latest.season_number,
                });
            }
            else if (tv.FirstSeason)
            {
                var first            = allEpisodes.OrderBy(x => x.season_number).FirstOrDefault();
                var episodesRequests = new List <EpisodeRequests>();
                foreach (var ep in allEpisodes)
                {
                    if (ep.season_number == first.season_number)
                    {
                        episodesRequests.Add(new EpisodeRequests
                        {
                            EpisodeNumber = ep.episode_number,
                            AirDate       = FormatDate(ep.air_date),
                            Title         = ep.name,
                        });
                    }
                }
                ChildRequest.SeasonRequests.Add(new SeasonRequests
                {
                    Episodes     = episodesRequests,
                    SeasonNumber = first.season_number,
                });
            }
            else
            {
                // It's a custom request
                var seasonRequests = new List <SeasonRequests>();
                foreach (var ep in allEpisodes)
                {
                    var existingSeasonRequest = seasonRequests.FirstOrDefault(x => x.SeasonNumber == ep.season_number);
                    if (existingSeasonRequest != null)
                    {
                        var requestedSeason  = tv.Seasons.FirstOrDefault(x => x.SeasonNumber == ep.season_number);
                        var requestedEpisode = requestedSeason?.Episodes?.Any(x => x.EpisodeNumber == ep.episode_number) ?? false;
                        if (requestedSeason != null && requestedEpisode)
                        {
                            // We already have this, let's just add the episodes to it
                            existingSeasonRequest.Episodes.Add(new EpisodeRequests
                            {
                                EpisodeNumber = ep.episode_number,
                                AirDate       = FormatDate(ep.air_date),
                                Title         = ep.name,
                            });
                        }
                    }
                    else
                    {
                        var newRequest = new SeasonRequests {
                            SeasonNumber = ep.season_number
                        };
                        var requestedSeason  = tv.Seasons.FirstOrDefault(x => x.SeasonNumber == ep.season_number);
                        var requestedEpisode = requestedSeason?.Episodes?.Any(x => x.EpisodeNumber == ep.episode_number) ?? false;
                        if (requestedSeason != null && requestedEpisode)
                        {
                            newRequest.Episodes.Add(new EpisodeRequests
                            {
                                EpisodeNumber = ep.episode_number,
                                AirDate       = FormatDate(ep.air_date),
                                Title         = ep.name,
                            });
                            seasonRequests.Add(newRequest);
                        }
                    }
                }

                foreach (var s in seasonRequests)
                {
                    ChildRequest.SeasonRequests.Add(s);
                }
            }
            return(this);
        }